2015-07-02 3 views
2

TL; DR: Являются ли идентификаторы, которые автоматически генерируются DocumentDB, предположительно GUID или UUID, и есть ли на самом деле разница? Если это UUID, то какой вариант/версия UUID?ID: GUID или UUID? Какой вариант?

Фон: Некоторые из клиентских библиотек DocumentDB будут автоматически генерировать идентификатор для вас, если вы его не предоставите. Я видел, как это упоминалось в Azure blog и в severalrelatedquestions, что сгенерированные идентификаторы являются идентификаторами GUID. Я знаю, что есть some discussion над тем, являются ли GUIDsUUIDs, и многие люди говорят, что они есть.

Проблемы: Однако, я заметил, что некоторые из идентификаторов DocumentDB автоматически генерирует не следует UUID RFC, что позволяет только цифрам 1-5 в «версии» полубайтовой (V в xxxxxxxx-xxxx-Vxxx-xxxx-xxxxxxxxxxxx). DocumentDB генерирует идентификаторы с любой шестнадцатеричной цифрой в этом полубайте, например d981befd-d19b-ee48-35bd-c1b507d3ec4f, версия которого nibble является первой e из ee48.

Возможно, это зависит от того, какой клиент используется для создания документов. В нашей базе данных DocumentDB у нас есть документы с третьей группой dde5, 627a, fe95 и т. Д. Эти документы были сохранены из хранимой процедуры, вызвав Collection.createDocument() с опциями {'disableAutomaticIdGeneration': false}. Другие документы, которые я создаю с помощью стороннего приложения DocumentDB Studio, всегда имеют 4xxx в третьей группе, которая является допустимой версией UUID. Однако документы, созданные мной через Azure portal, имеют нестандартные третья группировки, такие как b359.

Вопрос: Являются ли автогенерируемые идентификаторы DocumentDB GUID или UUID, и есть ли на самом деле разница? Если UUIDs, то какой вариант?

ответ

6

В рамках исходного кода GitHub я обнаружил, что различные библиотеки на стороне клиента и на стороне сервера используют несколько разных методов для создания того, что они называют GUID (в некоторых библиотеках) или UUID (в других библиотеках).

Клиент nodejs, Javascript client и server-side library производят то, что они называют GUID, путем объединения строк шестнадцатеричных цифр и дефис. Обратите внимание, что они являются случайными, но не соответствуют правилам для создания UUID версии 4 RFC4122.

Python client и Java client называть их соответствующие стандартным librarymethods для генерации случайного (версия 4) UUID.

Клиент .NET доступен через NuGet, но source code еще не опубликован.

Резюме:

  • Microsoft не делает различия между GUID и UUID в клиентских библиотеках. Они используют термины взаимозаменяемо.
  • Что вы получите для GUID/UUID, зависит от того, какую клиентскую библиотеку вы используете для вызова DocumentDB при создании документов.
Смежные вопросы