2014-11-24 2 views
0

Нам нужно очертить нашу производственную БД в очень короткие сроки, теперь мы решили очертить хеширование (_id) - однако мы видели, что невозможно создать уникальное ограничение для такого индекса.Можно ли обеспечить уникальность на очерченном хэшированном ключе в MongoDB?

Возможно ли каким-либо другим способом обеспечить 100% времени, когда мы никогда не вставим дублирующий документ с тем же _id?

Мы подумали о добавлении 2 индекса, 1 для ключа осколка (hashed (_id)), а второй как уникальный уникальный индекс _id - но мы не были уверены, что это было возможно/решило бы нашу проблему.

Заранее благодарен!

+0

Пожалуйста, ознакомьтесь с http://docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/ _thoroughly_. –

+0

tl; dr: ObjectIds являются _guaranteed_ уникальными, а хеш-столкновение менее вероятным, чем выигрыш в лотерее a _lot_ подряд подряд подряд. Если вы хэшируете около 6 миллиардов документов в секунду, у вас будет 50% шанс создать столкновение через 100 лет. Для почти всех практических целей этого должно быть достаточно. –

+0

@MarkusWMahlberg - Я знаю об этом, и я спросил, есть ли способ вокруг него. – Ron

ответ

1

ОК, поэтому наше решение было оштукатурено на _id (которое имеет принудительный уникальный индекс на экземпляр Mongod/shard) и добавляет хешированный (_id) индекс, который мы навели. Это гарантирует, что все элементы уникальны.

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