2012-06-07 1 views
2

Я недавно изучаю новый сервис NoSQL, который предоставляет Amazon, а точнее DynamoDB.DynamoDB: Как используется хэш-ключ?

Amazon говорит, что вам следует избегать использования неравномерно распределенных ключей в качестве первичного ключа, а именно первичные ключи должны быть более уникальными, тем лучше. Могу ли я увидеть это как уникальный первичный ключ для каждого элемента, это лучший случай? Как насчет наличия некоторых элементов с дублирующимися ключами?

Я хочу знать, как работает основной механизм, поэтому я знаю, насколько это плохо.

ответ

4

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

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

+0

Спасибо за ответ, но что, если я использую монотонно увеличивающееся целое число в качестве ключа вместо полностью рандомизированных значений? –

+1

Это работает отлично. Обычно я использую произвольно сгенерированные UUID, а не инкрементный счет исключительно для того, что его проще реализовать. – greg

+0

hash также можно использовать для логического объединения вещей для ускорения запросов. –