UUID в CouchDB
Мне интересно, формат UUID по умолчанию представлен в CouchDB. Хотя RFC 4122 описывает UUID, такие как 550e8400-e29b-11d4-a716-446655440000
, CouchDB использует непрерывные символы, такие как 3069197232055d39bc5bc39348a36417
. Я искал какое-то время в своей вики и их документации, что это на самом деле, но без каких-либо результатов.
Знаете ли вы, что это либо формат, не соответствующий RFC, который пропускает все -
, либо это совершенно иное представление из 128 бит.
Фон состоит в том, что я использую Java UUID, которые отформатированы, как указано в RFC. Я вижу преимущество, что CouchDB-стиль, вероятно, более удобен для создания внутренних деревьев, но я хочу быть уверенным в использовании последовательной реализации.
Ответы
Ответ 1
Технически мы не используем стандарт rfc для uuids, как вы заметили. Версия 4 uuids резервирует что-то вроде четырех бит, чтобы указать версию uuid. Мы также не форматируем их с помощью дефисов, которые обычно видны в других реализациях.
CouchDB uuids - это 16 случайных байтов, отформатированных как hex. Грубо говоря, что v4 uuid, но не совместим с rfc.
Независимо от специфики, на практике действительно не так много. Обычно вы не должны пытаться интерпретировать uuid, если вы не пытаетесь сделать какой-то внеполосный анализ. CouchDB никогда не будет интерпретировать uuids, мы полагаемся только на свойства случайности, связанные с ними.
Нижняя строка не должна беспокоиться об этом и просто рассматривать их как строки после поколения.
Ответ 2
KI может предоставить ссылку на 2019 год с сайта документа: "В любом случае предпочтительнее предоставить один собственный uuids" - https://docs.couchdb.org/en/latest/best-practices/documents.html?highlight=uuid.
Я включил пощечину, потому что (хобби) db, который я пробую как первое программирование чего-либо, имеет дело с приложением, которое генерирует и использует 4122 -compliant uuids, и я жевал свои ногти, волнуясь по поводу удаления "-" битов и положить их обратно на поиск.
До меня дошло, что uuid, который couchdb использует в качестве doc _id, является строкой, а не числом... дох. Поэтому я использую приложение uuid, сгенерированное при создании объекта для _id документа. Нет случайных дублированных uuids.