2014-02-07 3 views
1

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

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

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

+0

Что вы подразумеваете под выборку? Вам просто нужен случайный подмножество из 10 миллиардов записей? – Niederee

+0

Также, что 'datatype' является полем' userID'? – Niederee

+0

Обновлено описание с дополнительной информацией. –

ответ

0

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

SELECT * FROM BIGTABLE WHERE RAND()< SAMPLE_SIZE/BIGTABLE_TOTAL;