UUID в CouchDB - PullRequest
       16

UUID в CouchDB

11 голосов
/ 25 апреля 2010

Мне интересно, какие форматы UUID по умолчанию представлены в CouchDB. В то время как RFC 4122 описывает UUID, такие как 550e8400-e29b-11d4-a716-446655440000, CouchDB использует непрерывные символы, такие как 3069197232055d39bc5bc39348a36417. Я некоторое время искал в их вики и в документации, что это на самом деле, но безрезультатно.

Знаете ли вы, является ли это форматом, не соответствующим RFC, пропускающим все -, или это совершенно другое представление 128 битов?

Фон в том, что я использую UUID Java, которые отформатированы, как указано в RFC. Я вижу преимущество в том, что стиль CouchDB, вероятно, более удобен для построения внутренних деревьев, но я хочу быть уверенным, что используется последовательная реализация.

Ответы [ 2 ]

12 голосов
/ 26 апреля 2010

Технически мы не используем стандарт rfc для uuids, как вы заметили.UUID версии четыре резервирует что-то вроде четырех битов, чтобы указать версию uuid.Мы также не форматируем их с дефисами, которые обычно встречаются в других реализациях.

Uuids CouchDB - это 16 случайных байтов, отформатированных как шестнадцатеричные.Грубо говоря, это v4 uuid, но не соответствует rfc.

Независимо от специфики, на практике не так уж много проблем.Как правило, вам не следует пытаться интерпретировать uuid, если вы не пытаетесь провести какой-то внеполосный анализ.CouchDB никогда не будет интерпретировать uuids, мы полагаемся только на свойства случайности, которые в нем присутствуют.

Суть в том, чтобы не беспокоиться об этом и просто рассматривать их как строки после генерации.

0 голосов
/ 15 апреля 2019

K Я могу предоставить ссылку на 2019 год с сайта документации: «В любом случае предпочтительнее предоставить свои собственные uuids» - https://docs.couchdb.org/en/latest/best-practices/documents.html?highlight=uuid

Я запустил пощечину, потому что (хобби) БД, которую я пытаюсь в качестве первого программирования, имеет дело с приложением, которое создает , генерирует и использует 4122-совместимые uuids, и я жевал свои ногти беспокоясь о том, чтобы удалить биты "-" и вернуть их обратно.

До того, как до меня дошло, что uuid, который couchdb использует в качестве документа _id, является строкой, а не числом ... дох. Поэтому я использую uuid приложения, сгенерированный при создании объекта для _id документа. Нет случайных дубликатов uuids.

...