web-dev-qa-db-fra.com

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

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

808
Jon Tackabury

La réponse simple est: pas de différence , ce sont 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 lorsque vous n'utilisez pas Microsoft-Speak.

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

  • De l'introduction à l'IETF RFC 4122 "n espace de nom URN d'un identifiant unique universel (UUID)]": "un espace de noms d'un nom de ressource uniforme pour les UUID (identifiant unique universel), également appelé GUID (identificateur mondial unique). "

  • A partir de Recommandation UIT-T X.667, Norme internationale ISO/IEC 9834-8: 2004 : "Les identificateurs UUID sont également appelés identificateurs globaux uniques (GUID), mais ce terme n'est pas utilisé dans la présente Recommandation. . "

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

Mais la réponse correcte dépend de la signification de la question quand elle dit "UUID" ...

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

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

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

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

Selon RFC 4122, tous les UUID variants sont des "vrais UUID", alors tous les GUID sont de vrais UUID. Pour la question littérale "y a-t-il une différence entre GUID et UUID", la réponse est définitivement non pour RFU 4122 UUID: aucune différence (mais sujet à la deuxième partie ci-dessous).

Mais tous les GUID ne sont pas variante 2 UUID (Microsoft COM, par exemple, a des GUID qui sont des variantes de 3 UUID). Si la question était "Y a-t-il une différence entre GUID et les UUID variantes 2", la réponse serait oui - ils peuvent être différents. Quelqu'un qui pose la question ne sait probablement pas à propos de variantes et ne pense peut-être qu'à variante 2 UUID quand ils disent le mot "UUID" (par exemple, ils connaissent vaguement le L'adresse MAC + l'heure et les algorithmes de nombres aléatoires de l'UUID, qui sont tous deux versions sur variante 2). Dans ce cas, la réponse est oui différente .

Donc, la réponse dépend en partie de ce que la personne qui demande pense quand elle dit le mot "UUID". S'agit-il de la variante 2 de l'UUID (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 a été source de confusion, lisez le IT-T X.667 ISO/IEC 9834-8: 2004 qui est censé être aligné et techniquement compatible avec RFC 4122 . La clause 11.2 contient une phrase supplémentaire qui dit: "Tous les identificateurs UUID conformes à la présente Recommandation | Norme internationale doivent avoir des bits variantes avec le bit 7 de l'octet 7 mis à 1 et le bit 6 de l'octet 7 à 0". Ce qui signifie que seuls variante 2 UUID sont conformes à cette norme (ces deux valeurs de bits signifient variante 2). Si cela est vrai, tous les GUID ne sont pas conformes aux UUID ITU-T/ISO/IEC, car les UUID ITU-T/ISO/IEC conformes ne peuvent être que des valeurs variant ​​2.

Par conséquent, la vraie réponse dépend également de la spécification de l'UUID à propos de laquelle la question est posée. En supposant que nous parlons clairement de tous les UUID et pas seulement des UUID de variante 2: il n'y a aucune différence entre GUID et les UUID de l'IETF, mais oui différence entre GUID et conforme Les UUID de l'UIT-T/ISO/CEI!

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 à quatre champs différents, comme suit. Ce format diffère de 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
740
Hoylen

GUID est la mise en œuvre par Microsoft du standard UUID.

Par Wikipedia :

Le terme GUID désigne généralement l'implémentation par Microsoft de la norme identificateur unique universel (UUID).

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

La RFC 4122 elle-même indique que les UUID "sont également appelés GUID". Tout cela suggère que "GUID", alors qu'il faisait à l'origine référence à une variante d'UUID utilisée par Microsoft, est devenu simplement un nom alternatif pour UUID…

641
bdukes

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

14
Mark Cidade

Le GUID est utilisé de longue date dans les zones où il n’est pas nécessairement une valeur de 128 bits de la même manière qu’un UUID. Par exemple, la spécification RSS définit les GUID désigne 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 est simplement un lien permanent vers l'article étant syndiqué.

8
Tony Arcieri

La représentation textuelle de Microsoft GUID peut être sous la forme d'un UUID entouré de deux accolades {}.

0
Chris Stryczynski