Идентификация поколения nosql для хранения - PullRequest
1 голос
/ 05 августа 2011

Я создаю API, нам нужен уникальный идентификатор для каждого артефакта.

Мы думали об использовании GUID, но, глядя на другие API, такие как foursquare / facebook, мы видим другую структуру, такую ​​как:4d7adc94c7fca1431d6125a2, который меньше.

Итак, есть ли лучшие практики для генерации идентификаторов в хранилищах ключей nosql?

1 Ответ

0 голосов
/ 29 октября 2011

Направляющие 128-битные, а их алгоритмы генерации гарантируют, что ключ, сгенерированный на любой машине во всем мире в любое время, уникален.

Например, MongoDB использует ключ размером 12 байт = 96 бит. Это имеет некоторый смысл, поскольку ключ генерируется в одном кластере машин, поэтому вероятность наличия нескольких ключей, безусловно, ниже.

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

см http://www.mongodb.org/display/DOCS/Object+IDs

Я думаю, что среди лучших практик есть Guids и BSON ObjectId. Централизованные идентификаторы в настоящее время сильно не в моде, поскольку распределенные системы являются мейнстримом. Ваше решение будет зависеть также от наличия генератора Guid.

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