Я говорю "ты-ты-я-ди", но я не являюсь носителем языка ...
Уил
20
В спецификации UUID ( RFC-4122 ) сказано абстрактно: эта спецификация определяет пространство имен унифицированного имени ресурса для UUID (универсальный уникальный идентификатор), также известный как GUID (глобальный уникальный идентификатор)
Том
89
Идентификаторы UUID универсальны (универсальная область), а идентификаторы GUID уникальны только глобально (глобальная область). Ни один из них не является универсальным, то есть не является MUID. Это означает, что в принципе вы не должны использовать GUID межпланетно. Кроме этого, они в значительной степени взаимозаменяемы.
RSP
Ответы:
817
Простой ответ есть: никакой разницы , они не одно и то же. Рассматривайте их как 16-байтовое (128-битное) значение, которое используется как уникальное значение. В Microsoft-говорят они называются GUID, но называют их UUID, когда не используются Microsoft-говорят.
Даже авторы спецификации UUID и Microsoft утверждают, что они являются синонимами:
Из введения в IETF RFC 4122 « Пространство имен URN универсального уникального идентификатора (UUID) »: « Пространство имен унифицированного имени ресурса для 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 (из которых пять суб-вариантов, которые называются «версии»)
Зарезервировано, Microsoft Corporation обратная совместимость
Зарезервировано для будущего определения.
Согласно 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
RFC 4122 сам утверждает, что UUID «также известны как GUID». Все это говорит о том, что «GUID», первоначально ссылаясь на вариант UUID, используемый Microsoft, стал просто альтернативным именем для UUID…
Так же, как Microsoft, взять что-то, что работает везде (вселенная), и заставить его работать в очень маленьком подмножестве (глобус) :)
Gus
33
Обратите внимание, что если вы хотите преобразовать двоичное представление Microsoft GUID в стандартный UUID, вам нужно будет перевернуть порядковые номера первых трех (из четырех) полей данных, как подробно описано в разделе «Двоичное кодирование» здесь: en.wikipedia.org/ wiki / Globally_unique_identifier
Форма
87
Именно поэтому космонавтам не разрешается устанавливать Windows на МКС.
интуитивно
10
@bdukes Кажется, Википедия изменила то, что вы называли их утверждением. Это теперь читаетThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Хадим Али
13
На самом деле, нет. GUID больше ориентирован на Microsoft, тогда как UUID используется более широко (например, как в схеме urn: uuid: URN и в CORBA).
Каково определение и эффект Microsoft-центричности?
Карл Рихтер
8
GUID давно используется в областях, где он не обязательно является 128-битным значением так же, как UUID. Например, спецификация RSS определяет GUID как любую строку по вашему выбору, при условии, что она уникальна, с атрибутом «isPermalink», указывающим, что используемое вами значение - это просто постоянная ссылка на синдицируемый элемент.
Ответы:
Простой ответ есть: никакой разницы , они не одно и то же. Рассматривайте их как 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 полей.
источник
GUID - это реализация 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
источник