Методы выборки данных для Netezza/больших баз данных

Мы используем IBM Netezza. У нас есть таблица, которая ежедневно получает почти 10 миллиардов записей, которые нам нужно обработать. Одно из полей таблицы идентифицирует пользователя через 38-символьную цифровую строку, назовем ее UserID. У нас эта таблица распределена по UserID. Я ищу оптимальную технику выборки. В настоящее время мы сэмплируем, используя mod(UserID,SamplingRate) = 0, но поскольку эта таблица распределяется по UserID, я думаю, что наверняка должен быть лучший способ.

В Hive у нас есть понятие сегментов, где мы можем разделить наши таблицы на несколько сегментов, а затем получить один из сегментов, что дает хорошую производительность.

Обновление: под выборкой данных я подразумеваю получение случайным образом 500 миллионов записей с равномерным распределением. Количество записей, которые я хочу получить, можно определить на основе моей частоты дискретизации. Тип данных для UserID — числовой (38). (Java: BigDecimal)


person Mukul Gupta    schedule 07.02.2014    source источник
comment
Что вы подразумеваете под выборкой? Вам просто нужно случайное подмножество из 10 миллиардов записей?   -  person Niederee    schedule 08.02.2014
comment
И что datatype является полем userID?   -  person Niederee    schedule 08.02.2014
comment
Обновлено описание с дополнительной информацией.   -  person Mukul Gupta    schedule 08.02.2014


Ответы (1)


Как насчет простой случайной выборки в каком состоянии? это решено при планировании, поэтому все должно работать гладко, пока rand() имеет равномерное распределение:

SELECT * FROM BIGTABLE WHERE RAND()< SAMPLE_SIZE/BIGTABLE_TOTAL;
person karim_op    schedule 26.05.2015