¿Hay alguna diferencia entre un GUID y un UUID?


866

Veo estos 2 acrónimos, y me preguntaba si hay alguna diferencia entre un GUID y un UUID.


183
Puedo decir "GUID", no puedo decir "UUID".
Hardwareguy

48
Pronuncio UUID como "you-wid"
Matt Greer

106
Digo "you-you-I-dee", pero no soy un hablante nativo ...
Wilt

20
La especificación UUID ( RFC-4122 ) dice en resumen: Esta especificación define un espacio de nombre de Nombre de Recurso Uniforme para UUID (Identificador Universalmente Único), también conocido como GUID (Identificador Globalmente Único)
Tom

89
Los UUID son únicos universalmente (alcance del universo) mientras que los GUID solo son únicos globalmente (alcance del globo). Tampoco son únicos multiversalmente, es decir, no son MUID. Significa que, en principio, no debe usar GUID interplanetariamente. Aparte de eso, son bastante intercambiables.
rsp

Respuestas:


817

La respuesta simple es: no hay diferencia , son lo mismo. Trátelos como un valor de 16 bytes (128 bits) que se utiliza como un valor único. En Microsoft-speak se llaman GUID, pero los llama UUID cuando no se usa Microsoft-speak.

Incluso los autores de la especificación UUID y Microsoft afirman que son sinónimos:

  • De la introducción a IETF RFC 4122 " Un espacio de nombres URN de IDENTIFICADOR Universalmente Único (UUID) ": "un espacio de nombre de Nombre de Recurso Uniforme para UUID (IDentificador Universalmente Único), también conocido como GUID (IDentificador Único Global)".

  • De la Recomendación UIT-T X.667, Norma Internacional ISO / IEC 9834-8: 2004 : "Los UUID también se conocen como identificadores únicos globales (GUID), pero este término no se utiliza en esta Recomendación".

  • Y Microsoft incluso afirma que el RFID UUID especifica un GUID: "En la programación de Microsoft Windows y en los sistemas operativos Windows, un identificador único global (GUID), como se especifica en [RFC4122], es ... El término identificador universalmente único (UUID) ) a veces se usa en las especificaciones del protocolo de Windows como sinónimo de GUID ".

Pero la respuesta correcta depende del significado de la pregunta cuando dice "UUID" ...

La primera parte depende de lo que piense el autor cuando dice "UUID".

La afirmación de Microsoft implica que todos los UUID son GUID. Pero, ¿todos los GUID son UUID reales? Es decir, ¿el conjunto de todos los UUID es solo un subconjunto adecuado del conjunto de todos los GUID, o es exactamente el mismo conjunto?

Mirando los detalles del RFC 4122, hay cuatro "variantes" diferentes de UUID. Esto se debe principalmente a que dichos identificadores de 16 bytes estaban en uso antes de que esas especificaciones se unieran en la creación de una especificación UUID. De la sección 4.1.1 de RFC 4122 , las cuatro variantes de UUID son:

  1. Reservado, compatibilidad con versiones anteriores del sistema de computación en red
  2. La variante especificada en RFC 4122 (de las cuales hay cinco subvariantes, que se denominan "versiones")
  3. Reservado, compatibilidad con versiones anteriores de Microsoft Corporation
  4. Reservado para futuras definiciones.

De acuerdo con RFC 4122, todas las variantes de UUID son " UUID reales", luego todos los GUID son UUID reales. Para la pregunta literal "¿hay alguna diferencia entre GUID y UUID", la respuesta es definitivamente no para los UUID RFC 4122: no hay diferencia (pero sujeto a la segunda parte a continuación).

Pero no todos los GUID son UUID variantes 2 (por ejemplo, Microsoft COM tiene GUID que son UUID variantes 3). Si la pregunta era "¿hay alguna diferencia entre el GUID y los UUID de la variante 2", entonces la respuesta sería sí, pueden ser diferentes. Alguien que hace la pregunta probablemente no conoce las variantes y puede que solo piense en los UUID de la variante 2 cuando dice la palabra "UUID" (por ejemplo, sabe vagamente la dirección MAC + tiempo y las formas de algoritmos de números aleatorios de UUID, que son ambas versiones de la variante 2). En cuyo caso, la respuesta es sí diferente .

Entonces, la respuesta, en parte, depende de lo que piense la persona que pregunta cuando dice la palabra "UUID". ¿Significan UUID variante 2 (porque esa es la única variante que conocen) o todos los UUID?

La segunda parte depende de qué especificación se utilice como definición de UUID.

Si cree que eso fue confuso, lea la norma ITU-T X.667 ISO / IEC 9834-8: 2004, que se supone que está alineada y es técnicamente compatible con RFC 4122 . Tiene una oración adicional en la Cláusula 11.2 que dice: "Todos los UUID conformes a esta Recomendación | Norma Internacional tendrán bits variantes con el bit 7 del octeto 7 establecido en 1 y el bit 6 del octeto 7 establecido en 0". Lo que significa que solo el UUID de la variante 2 se ajusta a ese estándar (esos dos valores de bits significan la variante 2). Si eso es cierto, entonces no todos los GUID cumplen con los UUID ITU-T / ISO / IEC, porque los UUID conformes ITU-T / ISO / IEC solo pueden ser valores de la variante 2.

Por lo tanto, la respuesta real también depende de qué especificación de UUID se haga la pregunta. Asumiendo que estamos hablando claramente de todos los UUID y no solo de los UUID de la variante 2: ¡no hay diferencia entre el GUID y los UUID de IETF, pero sí la diferencia entre el GUID y los UUID conformes de ITU-T / ISO / IEC!

Las codificaciones binarias pueden diferir

Cuando se codifica en binario (a diferencia del formato de texto legible por humanos), el GUID puede almacenarse en una estructura con cuatro campos diferentes como se muestra a continuación. Este formato difiere del estándar UUID solo en el orden de bytes de los primeros 3 campos.

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

35
Más informativo que la respuesta elegida. Sin embargo, creo que la respuesta elegida es la respuesta más simple a la pregunta.
Nueva Alejandría

3
La tabla de codificación binaria incrustada en la respuesta es muy útil. Tnx
Luciano

2
El 'endianness' es muy importante. Si almacena la identificación como bytes, obtendrá resultados diferentes de GUID y UUID.
Calabacin

¡E imagínense, seres atrapados en solo 665 votos a favor! ¿Cómo podría no votar esto?
Haakon Løtveit

656

GUID es la implementación de Microsoft del estándar UUID.

Por Wikipedia :

El término GUID generalmente se refiere a la implementación de Microsoft del estándar de Identificador Único Universal (UUID).

Una cita actualizada de ese mismo artículo de Wikipedia:

El RFC 4122 en sí mismo establece que los UUID "también se conocen como GUID". Todo esto sugiere que "GUID", aunque originalmente se refería a una variante de UUID utilizada por Microsoft, se ha convertido simplemente en un nombre alternativo para UUID ...


40
(La G significa Globalmente)
ted.strauss

487
Al igual que Microsoft para tomar algo que funciona en todas partes (el universo) y hacerlo funcionar en un subconjunto muy pequeño (el mundo) :)
Gus

33
Tenga en cuenta que si desea convertir la representación binaria GUID de Microsoft a un UUID estándar, tendrá que cambiar la endianidad de los primeros tres (de cuatro) campos de datos como se detalla en la sección "Codificación binaria" aquí: en.wikipedia.org/ wiki / Globally_unique_identifier
Formulario

87
Esta es la razón por la cual los astronautas no pueden instalar Windows en la ISS.
intuido

10
@bdukes parece que Wikipedia ha cambiado lo que usted llamó su declaración. Ahora se leeThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Khadim Ali

13

Realmente no. El GUID está más centrado en Microsoft, mientras que el UUID se usa más ampliamente (por ejemplo, como en el esquema urn: uuid: URN y en CORBA).


1
¿Cuál es la definición y el efecto de la céntrica de Microsoft?
Karl Richter

8

GUID tiene un uso prolongado en áreas donde no es necesariamente un valor de 128 bits de la misma manera que un UUID. Por ejemplo, la especificación RSS define los GUID como cualquier cadena de su elección, siempre que sea única, con un atributo "isPermalink" para especificar que el valor que está utilizando es solo un enlace permanente al elemento que se está sindicando.


0

La GUIDrepresentación textual de Microsoft puede tener la forma de un UUID rodeado de dos llaves {}.


66
Esto es solo para una representación textual del GUID. La estructura real es diferente.
anónimo

-2

Una diferencia entre GUID en SQL Server y UUID en PostgreSQL es la letra mayúscula; Las salidas de SQL Server son superiores mientras que las de PostgreSQL son inferiores.

Los valores hexadecimales "a" a "f" se muestran como caracteres en minúscula y no distinguen entre mayúsculas y minúsculas en la entrada. - rfc4122 # sección-3

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.