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.