2013-06-02 2 views
5

MongoDB 2.4 имеет новую функцию, я вижу все вокруг говорят о, так вот мой вопрос (извините, если они просты):Что такое хешированный индекс?

  • ли MongoDB управлять ими без указания ключа осколка? или администратор выбирает ключ?
  • Есть ли риск оказаться в проблеме Hostspot или диск IO отстает, так как есть слово Hash и hash - это что-то случайное?
+1

Вам все еще нужно указать ключ, он hashs, внутренне (то, что видит MongoDB) ключ. Хэш-индекс предназначен для того, чтобы специально остановить проблему с горячими точками, будучи тем, как она создана. Я не могу не видеть никаких проблем с ней еще – Sammaye

+0

, так почему бы не использовать с самого начала дополнительный ключ MD5 (ключ) или просто добавить трата пространства? и это, поскольку я читаю, это больно для чтения диска, поскольку он рандомизирован и не хранится в памяти? –

+1

Потому что это тяжелее, чем поиск отличного ключа осколка, вам нужно только хеш, когда у вас нет лучшего ключа осколка, чем монотонно возрастающий, например ObjectId – Sammaye

ответ

4

Идея заключается в том, что вы можете создать индекс хэша на поле, которое вы хотите использовать в качестве ключа шарда, что происходит, чтобы дать плохое распределение записи (например, она монотонно возрастает и будет создать точку доступа на последних записи) ,

Хэш, хранящийся в хэшированном индексе, составляет 64 бита 128-битного хеша md5. Цель состоит в том, чтобы позволить очертить хэш-значение ключа без приложения, которое необходимо знать о механизме хэширования.

Вы можете найти более подробную информацию об этом здесь: http://docs.mongodb.org/manual/core/sharded-cluster-internals/#sharding-hashed-shard-key-internals

+0

спасибо, что об этом «Для рабочих нагрузок, где получение диапазонов документов более важно (т. Е. Найти последние документы от всех пользователей), другие варианты ключа осколка могут быть лучше подходят». http://blog.mongodb.org/post/47633823714/new-hash-based-sharding-feature-in-mongodb-2-4 –

+2

зависит от типа запросов, которые вы будете делать. Если большая часть из них равна единичному значению shardkey (по id), тогда вы в порядке, или если некоторые или достаточно из них являются другим (индексированным) атрибутом. Проблемным случаем было бы, если вы всегда запрашиваете «записи в диапазоне этого идентификатора к этому id» - это не сможет использовать хешированный индекс. –

+0

и как насчет '_id', так как mongodb автоматически добавляет индексы, добавит ли он индекс штрихов для них слишком автоматически? –

Смежные вопросы