Я вижу эти 2 аббревиатуры, и мне было интересно, есть ли различия между GUID и UUID?
Я вижу эти 2 аббревиатуры, и мне было интересно, есть ли различия между GUID и UUID?
Ответы:
Простой ответ есть: никакой разницы , они не одно и то же. Рассматривайте их как 16-байтовое (128-битное) значение, которое используется как уникальное значение. В Microsoft-говорят они называются GUID, но называют их UUID, когда не используются Microsoft-говорят.
Даже авторы спецификации UUID и Microsoft утверждают, что они являются синонимами:
Из введения в IETF RFC 4122 « Пространство имен URN универсального уникального идентификатора (UUID) »: « Пространство имен унифицированного имени ресурса для UUID (универсальный уникальный идентификатор), также известный как GUID (глобально уникальный идентификатор).»
Из Рекомендации МСЭ-Т X.667, международного стандарта ИСО / МЭК 9834-8: 2004 : «UUID также известны как глобально уникальные идентификаторы (GUID), но этот термин не используется в данной Рекомендации».
И Microsoft даже утверждает, что GUID указан в UUID RFC: «В программировании Microsoft Windows и в операционных системах Windows глобальный уникальный идентификатор (GUID), как указано в [RFC4122], является ... Термин универсальный уникальный идентификатор (UUID) ) иногда используется в спецификациях протокола Windows как синоним GUID. "
Но правильный ответ зависит от того, что означает вопрос, когда он говорит «UUID» ...
Первая часть зависит от того, что думают спрашивающие, когда говорят «UUID».
Заявление Microsoft подразумевает, что все UUID являются GUID. Но являются ли все GUID настоящими UUID? То есть, является ли набор всех UUID просто правильным подмножеством из набора всех GUID, или это точно такой же набор?
Рассматривая подробности RFC 4122, можно выделить четыре «варианта» UUID. Это происходит главным образом потому, что такие 16-байтовые идентификаторы использовались до того, как эти спецификации были объединены при создании спецификации UUID. Из раздела 4.1.1 RFC 4122 четыре варианта UUID:
Согласно RFC 4122 все варианты UUID являются «реальными UUID», тогда все GUID являются реальными UUID. На буквальный вопрос «есть ли разница между GUID и UUID» ответ определенно нет для RFC 4122 UUID: никакой разницы (но с учетом второй части ниже).
Но не все GUID являются UUID варианта 2 (например, Microsoft COM имеет GUID, которые являются UUID варианта 3). Если бы вопрос был «есть ли разница между GUID и UUID варианта 2», то ответ был бы да - они могут быть разными. Кто-то, задающий вопрос, вероятно, не знает о вариантах, и он может думать только о UUID варианта 2, когда произносит слово «UUID» (например, они смутно знают формы UUID с MAC-адресом + время и алгоритмы случайных чисел, которые оба варианта из варианта 2). В этом случае ответ да другой .
Таким образом, ответ, отчасти, зависит от того, о чем думает спрашивающий, когда произносит слово «UUID». Имеют ли они в виду вариант 2 UUID (потому что это единственный известный им вариант) или все UUID?
Вторая часть зависит от того, какая спецификация используется в качестве определения UUID.
Если вы считаете, что это сбивает с толку, прочитайте ITU-T X.667 ISO / IEC 9834-8: 2004, который должен быть выровнен и полностью технически совместим с RFC 4122 . В пункте 11.2 содержится дополнительное предложение, которое гласит: «Все идентификаторы UUID, соответствующие настоящей Рекомендации | Международному стандарту, должны иметь вариантные биты с битом 7 октета 7, установленным в 1, и битом 6 октета 7, установленным в 0». Это означает, что только UUID варианта 2 соответствует этому стандарту (эти два битовых значения означают вариант 2). Если это так, то не все GUID соответствуют UUID МСЭ-T / ISO / IEC, поскольку совместимые UUID МСЭ-T / ISO / IEC могут иметь только значения варианта 2.
Следовательно, реальный ответ также зависит от того, какую спецификацию UUID задает вопрос. Предполагая, что мы четко говорим обо всех UUID, а не только о UUID варианта 2: нет разницы между UUID GUID и IETF, но есть разница между GUID и соответствующими UUID ITU-T / ISO / IEC!
Двоичные кодировки могут отличаться
При кодировании в двоичном формате (в отличие от читаемого человеком текстового формата) идентификатор GUID может быть сохранен в структуре с четырьмя различными полями следующим образом. Этот формат отличается от стандарта UUID только порядком байтов первых 3 полей.
Bits Bytes Name Endianness Endianness
(GUID) RFC 4122
32 4 Data1 Native Big
16 2 Data2 Native Big
16 2 Data3 Native Big
64 8 Data4 Big Big
GUID - это реализация Microsoft стандарта UUID.
В Википедии :
Термин GUID обычно относится к внедрению Microsoft стандарта универсального уникального идентификатора (UUID).
Обновленная цитата из той же статьи в Википедии:
RFC 4122 сам утверждает, что UUID «также известны как GUID». Все это говорит о том, что «GUID», первоначально ссылаясь на вариант UUID, используемый Microsoft, стал просто альтернативным именем для UUID…
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
На самом деле, нет. GUID больше ориентирован на Microsoft, тогда как UUID используется более широко (например, как в схеме urn: uuid: URN и в CORBA).
GUID давно используется в областях, где он не обязательно является 128-битным значением так же, как UUID. Например, спецификация RSS определяет GUID как любую строку по вашему выбору, при условии, что она уникальна, с атрибутом «isPermalink», указывающим, что используемое вами значение - это просто постоянная ссылка на синдицируемый элемент.
GUID
Текстовое представление Microsoft может быть в форме UUID, окруженного двумя фигурными скобками {}
.
Одно различие между GUID в SQL Server и UUID в PostgreSQL - это регистр букв; SQL Server выводит верхний, а PostgreSQL выводит нижний.
Шестнадцатеричные значения от «a» до «f» выводятся как строчные буквы и нечувствительны к регистру при вводе. - rfc4122 # section-3