Y a-t-il une différence entre un GUID et un UUID?

866

Je vois ces 2 acronymes jetés autour, et je me demandais s'il y avait des différences entre un GUID et un UUID?

Jon Tackabury
la source
183
Je peux dire "GUID", je ne peux pas dire "UUID".
Hardwareguy
48
Je prononce UUID comme "vous-wid"
Matt Greer
106
Je dis "tu-tu-je-dee", mais je ne suis pas un locuteur natif ...
Flétrissement
20
La spécification UUID ( RFC-4122 ) dit dans l'abstrait: Cette spécification définit un espace de noms Uniform Resource Name pour les UUID (Universally Unique IDentifier), également connu sous le nom de GUID (Globally Unique IDentifier)
Tom
89
Les UUID sont uniques universellement (portée de l'univers) tandis que les GUID sont uniquement uniques à l'échelle mondiale (portée de globe). Ni l'un ni l'autre ne sont uniques à plusieurs niveaux, c'est-à-dire qu'ils ne sont pas des MUID. Cela signifie qu'en principe, vous ne devez pas utiliser les GUID de façon interplanétaire. En dehors de cela, ils sont à peu près interchangeables.
rsp

Réponses:

817

La réponse est simple : pas de différence , c'est la même chose. Traitez-les comme une valeur de 16 octets (128 bits) utilisée comme valeur unique. Dans Microsoft-speak, ils sont appelés GUID, mais appelez-les UUID lorsqu'ils n'utilisent pas Microsoft-speak.

Même les auteurs de la spécification UUID et Microsoft affirment qu'ils sont synonymes:

  • De l'introduction à l'IETF RFC 4122 « Un espace de noms URN IDentifier universel (UUID) »: «un espace de noms Uniform Resource Name pour les UUID (Universally Unique IDentifier), également connu sous le nom de GUID (Globally Unique IDentifier)».

  • D'après la Recommandation UIT-T X.667, Norme internationale ISO / CEI 9834-8: 2004 : "Les UUID sont également connus sous le nom d'identificateurs globaux uniques (GUID), mais ce terme n'est pas utilisé dans la présente Recommandation."

  • Et Microsoft prétend même qu'un GUID est spécifié par le RFC UUID: "Dans la programmation Microsoft Windows et dans les systèmes d'exploitation Windows, un identifiant globalement unique (GUID), comme spécifié dans [RFC4122], est ... Le terme identifiant universellement unique (UUID ) est parfois utilisé dans les spécifications du protocole Windows comme synonyme de GUID. "

Mais la bonne réponse dépend de ce que signifie la question lorsqu'elle dit "UUID" ...

La première partie dépend de ce que le demandeur pense quand il dit "UUID".

La revendication de Microsoft implique que tous les UUID sont des GUID. Mais tous les GUID sont-ils de vrais UUID? Autrement dit, l'ensemble de tous les UUID n'est-il qu'un sous-ensemble approprié de l'ensemble de tous les GUID, ou s'agit-il exactement du même ensemble?

En regardant les détails de la RFC 4122, il existe quatre "variantes" différentes d'UUID. Cela est principalement dû au fait que de tels identifiants de 16 octets étaient utilisés avant que ces spécifications ne soient réunies dans la création d'une spécification UUID. De la section 4.1.1 de la RFC 4122 , les quatre variantes d'UUID sont:

  1. Réservé, compatibilité descendante du système informatique de réseau
  2. La variante spécifiée dans la RFC 4122 (dont il existe cinq sous-variantes, appelées "versions")
  3. Réservé, compatibilité descendante avec Microsoft Corporation
  4. Réservé pour une future définition.

Selon la RFC 4122, toutes les variantes d' UUID sont de «vrais UUID», puis tous les GUID sont de vrais UUID. À la question littérale "existe-t-il une différence entre le GUID et l'UUID", la réponse est certainement non pour les UUID RFC 4122: aucune différence (mais sous réserve de la deuxième partie ci-dessous).

Mais tous les GUID ne sont pas des UUID de variante 2 (par exemple, Microsoft COM a des GUID qui sont des UUID de variante 3). Si la question était "y a-t-il une différence entre le GUID et la variante 2 UUID", alors la réponse serait oui - ils peuvent être différents. Quelqu'un qui pose la question ne connaît probablement pas les variantes et ne pense peut-être aux UUID de la variante 2 qu'en prononçant le mot "UUID" (par exemple, il connaît vaguement l'adresse MAC + l'heure et les formes d'algorithmes à nombres aléatoires d'UUID, qui sont les deux versions de la variante 2). Dans ce cas, la réponse est oui différente .

La réponse dépend donc en partie de ce que pense la personne qui demande lorsqu'elle dit le mot «UUID». S'agit-il de l'UUID de la variante 2 (car c'est la seule variante dont ils ont connaissance) ou de tous les UUID?

La deuxième partie dépend de la spécification utilisée comme définition de l'UUID.

Si vous pensez que cela prête à confusion, lisez l' UIT-T X.667 ISO / IEC 9834-8: 2004 qui est censé être aligné et entièrement compatible avec la RFC 4122 . La clause 11.2 contient une phrase supplémentaire qui dit: "Tous les UUID conformes à la présente Recommandation | Norme internationale doivent avoir des bits de variante avec le bit 7 de l'octet 7 mis à 1 et le bit 6 de l'octet 7 mis à 0". Ce qui signifie que seule la variante 2 UUID est conforme à cette norme (ces deux valeurs binaires signifient la variante 2). Si cela est vrai, tous les GUID ne sont pas des UUID UIT-T / ISO / CEI conformes, car les UUID UIT-T / ISO / CEI conformes ne peuvent être que des valeurs de variante 2.

Par conséquent, la vraie réponse dépend également de la spécification de l'UUID sur laquelle porte la question. En supposant que nous parlons clairement de tous les UUID et pas seulement des UUID de variante 2: il n'y a pas de différence entre le GUID et les UUID de l'IETF, mais oui différence entre le GUID et les UUID UIT-T / ISO / IEC conformes !

Les encodages binaires peuvent différer

Lorsqu'il est codé en binaire (par opposition au format de texte lisible par l'homme), le GUID peut être stocké dans une structure avec quatre champs différents comme suit. Ce format diffère de la norme UUID uniquement dans l'ordre des octets des 3 premiers champs.

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
Hoylen
la source
35
Réponse plus informative que choisie. Je pense que la réponse choisie est la réponse la plus simple à la question.
New Alexandria
3
La table de codage binaire incorporée dans la réponse est très utile. Tnx
Luciano
2
L '«endianité» est très importante. Si vous stockez l'ID sous forme d'octets, vous obtiendrez des résultats différents de GUID et UUID.
Calabacin
Et imaginez, les êtres se sont contentés de 665 votes positifs! Comment ne pourrais-je pas voter contre cela?
Haakon Løtveit
656

GUID est l'implémentation par Microsoft de la norme UUID.

Par Wikipedia :

Le terme GUID fait généralement référence à l'implémentation par Microsoft de la norme UUID ( Universally Unique Identifier ).

Une citation mise à jour de ce même article Wikipedia:

La RFC 4122 déclare elle-même que les UUID "sont également appelés GUID". Tout cela suggère que "GUID", tout en se référant à l'origine à une variante d'UUID utilisée par Microsoft, est devenu simplement un nom alternatif pour UUID ...

bdukes
la source
40
(Le G signifie Globally)
ted.strauss
487
Tout comme Microsoft pour prendre quelque chose qui fonctionne partout (l'univers) et le faire fonctionner dans un très petit sous-ensemble (le globe) :)
Gus
33
Notez que si vous souhaitez convertir la représentation binaire GUID de Microsoft en UUID standard, vous devrez inverser l'endianité des trois (sur quatre) champs de données comme détaillé dans la section "Codage binaire" ici: en.wikipedia.org/ wiki / Globally_unique_identifier
Formulaire
87
C'est pourquoi les astronautes ne sont pas autorisés à installer Windows sur l'ISS.
intuition
10
@bdukes semble que Wikipedia a changé ce que vous appelez leur déclaration. Il lit maintenantThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Khadim Ali
13

Pas vraiment. GUID est plus centré sur Microsoft tandis que UUID est utilisé plus largement (par exemple, comme dans le schéma urn: uuid: URN et dans CORBA).

Mark Cidade
la source
1
Quelle est la définition et l'effet de Microsoft-centricity?
Karl Richter
8

Le GUID a une utilisation de longue date dans les domaines où il ne s'agit pas nécessairement d'une valeur de 128 bits de la même manière qu'un UUID. Par exemple, la spécification RSS définit les GUID comme n'importe quelle chaîne de votre choix, tant qu'elle est unique, avec un attribut "isPermalink" pour spécifier que la valeur que vous utilisez n'est qu'un lien permanent vers l'élément en cours de syndication.

Tony Arcieri
la source
0

La GUIDreprésentation textuelle de Microsoft peut prendre la forme d'un UUID entouré de deux accolades {}.

Chris Stryczynski
la source
6
Il s'agit uniquement d'une représentation textuelle du GUID. La structure réelle est différente.
anonyme
-2

Une différence entre GUID dans SQL Server et UUID dans PostgreSQL est la casse des lettres; SQL Server sort en haut tandis que PostgreSQL sort en bas.

Les valeurs hexadécimales "a" à "f" sont sorties en minuscules et ne respectent pas la casse à l'entrée. - rfc4122 # section-3

eezing
la source