Question

Je vois ces 2 acronymes qui jaillissent, et je me demandais s’il existait des différences entre un GUID et un UUID?

Était-ce utile?

La solution

La réponse simple est la suivante: aucune différence , il s'agit de 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 prétendent qu'ils sont synonymes:

  • De l'introduction à l'IETF RFC 4122 " A Identifiant universellement unique (UUID) URN Namespace ":" un espace de nommage de nom de ressource uniforme pour les UUID (identificateur universellement unique), également appelé GUID (identificateur global unique). "

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

  • Et Microsoft a même revendications 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), spécifié dans la [RFC4122], est ... Le terme identificateur universel unique (UUID) ) est parfois utilisé dans les spécifications du protocole Windows comme synonyme de GUID. "

Mais la bonne réponse 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".

L'affirmation 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. des 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. Extrait de la section 4.1.1 de la RFC 4122 , les quatre variantes des 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 Microsoft Corporation
  4. Réservé pour une définition future.

Selon la RFC 4122, toutes les variantes UUID sont des "UUID réels", alors tous les GUID sont des UUID réels. A la question littérale "existe-t-il une différence entre GUID et UUID"? la réponse est définitivement non pour les UUID RFC 4122: aucune différence (sous réserve de la deuxième partie ci-dessous).

Cependant, tous les GUID ne sont pas des variantes 2 (par exemple, Microsoft COM a des GUID qui sont des variantes de 3 UUID). Si la question était "Existe-t-il une différence entre le GUID et les UUID de variante 2", 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 qu'à variante 2 UUID en prononçant le mot "UUID". (par exemple, ils connaissent vaguement l'adresse MAC + l'heure et les formes d'algorithmes de nombres aléatoires d'UUID, qui sont à la fois des versions de 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 pose la question pense quand elle prononce le mot "UUID". S'agit-il de l'UUID de 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 vous a dérouté, lisez la UIT-T X. 667 ISO / IEC 9834-8: 2004 censé être aligné et techniquement compatible avec RFC 4122 . La clause 11.2 contient une phrase supplémentaire indiquant "Tous les identificateurs UUID conformes à la présente Recommandation | Norme internationale doit avoir des bits variantes avec le bit 7 de l'octet 7 mis à 1 et le bit 6 de l'octet 7 mis à 0 ". Ce qui signifie que seuls les variants 2 UUID sont conformes à cette norme (ces deux valeurs de bits signifient variant 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 variante 2.

Par conséquent, la vraie réponse dépend également de la spécification de l’UUID visée par 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 une oui de différence entre le GUID et conforme UUID de l'UIT-T / ISO / CEI!

Les codages 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

Autres conseils

Le GUID est l’implémentation par Microsoft du standard UUID.

Per Wikipedia :

  

Le terme GUID fait généralement référence à la mise en oeuvre par Microsoft de la norme identifiant unique universel (UUID).

Une citation mise à jour du 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 référence à une variante de l’UUID utilisée par Microsoft, est devenu simplement un nom alternatif pour UUID…

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

Le GUID est utilisé depuis longtemps 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 le GUID comme étant une chaîne de votre choix. , tant qu’il est unique, avec un "isPermalink" attribut pour spécifier que la valeur que vous utilisez est simplement un lien permanent vers l’élément en cours de syndication.

La représentation textuelle de

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

Une différence entre GUID dans SQL Server et UUID dans PostgreSQL est la casse des lettres; Les sorties SQL Server sont supérieures, tandis que les sorties PostgreSQL sont inférieures.

Les valeurs hexadécimales " a " à travers " f " sont affichés en minuscules et ne font pas la différence entre les majuscules et les minuscules. - rfc4122 # section-3

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top