Подтвердить что ты не робот

Откуда берутся пространства имен UUID?

спецификация UUID определяет 4 предопределенных пространства имен, которые он описывает как "потенциально интересные", что означает, среди прочего, "если другие люди создали UUID в этом пространстве имен вы можете проверить их":

  • 6ba7b810-9dad-11d1-80b4-00c04fd430c8 для DNS
  • 6ba7b811-9dad-11d1-80b4-00c04fd430c8 для URL
  • 6ba7b812-9dad-11d1-80b4-00c04fd430c8 для ISO OID
  • 6ba7b814-9dad-11d1-80b4-00c04fd430c8 для X.500 DN

Откуда они взялись?

В частности,

  • Если я создаю свой собственный UUID пространства имен, мне нужно избегать чего-либо в частности?
  • Я знаю, насколько велико пространство UUID, но имеет ли это какое-либо влияние на столкновение?
  • Почему они выбрали 4-й октет для увеличения как своего рода номера версии UUID?
  • У меня возникают вопросы о том, что я пропустил что-то принципиальное в отношении UUID?
4b9b3361

Ответ 1

Во-первых, чтобы быть ясным, все это обсуждение ограничено версиями 3 и 5 UUID. В моем (анекдотическом) опыте наиболее часто используются UUID версии 4 (случайные).

4122 неоднозначно начинается алгоритм генерации UUID с именами:

Выделите UUID для использования в качестве "Идентификатора пространства имен"

Нет другого упоминания о распределении идентификатора пространства имен, и ни я, ни python не обнаружили никаких стандартизованных пробелов за пределами четыре, перечисленные в RFC 4122.

Итак, ответ на ваш первый вопрос,

  • Если я создаю свой собственный UUID пространства имен, мне нужно избегать чего-либо в частности?

Вам нужно избегать четырех стандартных пространств имен.


Следующий вопрос,

  • Я знаю, насколько велико пространство UUID, но имеет ли это какое-либо влияние на столкновение?

Имеет две части:

  • Сбой UUID в пространстве имен? Verbatim от 4122:

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

  • Будет ли ваше UUID пространства имен сталкиваться с другими пространствами имен? Я не мог найти прямой ответ, так как нет стандартного для выделения идентификатора пространства имен, но аргумент в раздел 4.1.1 кажется отношение:

    Взаимодействие в любой форме с вариантами, отличными от одного определенная здесь, не гарантируется и вряд ли будет проблемой в практика.


  • Почему они выбрали 4-й октет для увеличения как своего рода номера версии UUID?

Это немного загадка. К счастью, у нас есть спецификация для UUID, поэтому мы можем раздобыть их для понимания.

Обратите внимание, что 8-й октет (0-index) начинается с 8 во всех случаях, поэтому мы имеем дело с RFC 4122 вариантом UUID. Уф.

Теперь проверьте октет 6 для версии: 1, мы имеем дело с версией 1 UUID.

Этот ответ имеет удобный алгоритм для извлечения данных python из UUID версии 1. Применение алгоритма дает время в 4 февраля 1998 года. Я еще не нашел смысла в эту дату. Увеличение 3-го октета добавляет наименьший кодируемый интервал времени (100 нс) к дате.


  • У меня возникают вопросы о том, что я пропустил что-то принципиальное в отношении UUID?

Неа. Существует очень мало обсуждений пространств имен UUID, так как случайные UUID настолько просты.

Ответ 2

Если я создаю свой собственный UUID пространства имен, мне нужно избегать чего-либо в частности?

Нет. Ваше пространство имен UUID может быть любым UUID, сгенерированным любым обычным способом. Например, вы, вероятно, захотите создать UUID версии 1 или версии 4 для использования в качестве UUID пространства имен. Это можно сделать с помощью программы uuidgen в Linux или OS X. Или вы можете легко создать версию 1 или версия 4 UUID онлайн.