Gibt es einen Unterschied zwischen einer GUID und einer UUID?


865

Ich sehe diese 2 Akronyme herumgeworfen und habe mich gefragt, ob es Unterschiede zwischen einer GUID und einer UUID gibt.


183
Ich kann "GUID" sagen, ich kann nicht "UUID" sagen.
Hardwareguy

48
Ich spreche UUID als "you-wid" aus
Matt Greer

106
Ich sage "du-du-ich-dee", aber ich bin kein Muttersprachler ...
Wilt

20
Die UUID-Spezifikation ( RFC-4122 ) sagt in der Zusammenfassung: Diese Spezifikation definiert einen einheitlichen Ressourcennamen-Namespace für UUIDs (Universally Unique IDentifier), auch bekannt als GUIDs (Globally Unique IDentifier)
Tom

88
UUIDs sind universell eindeutig (Universumsbereich), während GUIDs nur global eindeutig sind (Globusbereich). Weder sind multiversal einzigartig, dh sie sind keine MUIDs. Dies bedeutet, dass Sie GUIDs im Prinzip nicht interplanetarisch verwenden sollten. Davon abgesehen sind sie ziemlich austauschbar.
rsp

Antworten:


817

Die einfache Antwort lautet: Kein Unterschied , sie sind dasselbe. Behandeln Sie sie als 16-Byte-Wert (128 Bit), der als eindeutiger Wert verwendet wird. In Microsoft-speak werden sie GUIDs genannt, aber sie werden UUIDs genannt, wenn Microsoft-speak nicht verwendet wird.

Sogar die Autoren der UUID-Spezifikation und Microsoft behaupten, sie seien Synonyme:

  • Aus der Einführung zu IETF RFC 4122 " Ein UNID-URN-Namespace (Universally Unique IDentifier)": "Ein einheitlicher Namespace für Ressourcennamen für UUIDs (Universally Unique IDentifier), auch als GUIDs (Globally Unique IDentifier) ​​bezeichnet."

  • Aus der ITU-T-Empfehlung X.667, ISO / IEC 9834-8: 2004 International Standard : "UUIDs werden auch als Global Unique Identifiers (GUIDs) bezeichnet, aber dieser Begriff wird in dieser Empfehlung nicht verwendet."

  • Und Microsoft behauptet sogar, dass eine GUID durch die UUID RFC angegeben wird: "In der Microsoft Windows-Programmierung und in Windows-Betriebssystemen ist eine global eindeutige Kennung (GUID), wie in [RFC4122] angegeben, ... Der Begriff universell eindeutige Kennung (UUID) ) wird manchmal in Windows-Protokollspezifikationen als Synonym für GUID verwendet. "

Die richtige Antwort hängt jedoch davon ab, was die Frage bedeutet, wenn sie "UUID" sagt ...

Der erste Teil hängt davon ab, was der Fragesteller denkt, wenn er "UUID" sagt.

Die Behauptung von Microsoft impliziert, dass alle UUIDs GUIDs sind. Aber sind alle GUIDs echte UUIDs? Das heißt, ist die Menge aller UUIDs nur eine richtige Teilmenge der Menge aller GUIDs, oder ist es genau dieselbe Menge?

Bei Betrachtung der Details des RFC 4122 gibt es vier verschiedene "Varianten" von UUIDs. Dies liegt hauptsächlich daran, dass solche 16-Byte-Kennungen verwendet wurden, bevor diese Spezifikationen bei der Erstellung einer UUID-Spezifikation zusammengeführt wurden. Ab Abschnitt 4.1.1 von RFC 4122 sind die vier Varianten von UUID:

  1. Reserviert, Abwärtskompatibilität des Network Computing Systems
  2. Die in RFC 4122 angegebene Variante (von denen es fünf Untervarianten gibt, die als "Versionen" bezeichnet werden)
  3. Reserviert, Abwärtskompatibilität der Microsoft Corporation
  4. Reserviert für zukünftige Definitionen.

Gemäß RFC 4122 sind alle UUID- Varianten "echte UUIDs", dann sind alle GUIDs echte UUIDs. Auf die wörtliche Frage "Gibt es einen Unterschied zwischen GUID und UUID?" Lautet die Antwort für RFC 4122-UUIDs definitiv Nein: Kein Unterschied (vorbehaltlich des zweiten Teils unten).

Es sind jedoch nicht alle GUIDs UUIDs der Variante 2 (z. B. Microsoft COM verfügt über GUIDs, bei denen es sich um UUIDs der Variante 3 handelt). Wenn die Frage lautete "Gibt es einen Unterschied zwischen GUID- und UUIDs der Variante 2", lautet die Antwort "Ja" - sie können unterschiedlich sein. Jemand, der die Frage stellt, weiß wahrscheinlich nichts über Varianten und denkt möglicherweise nur an UUIDs der Variante 2, wenn er das Wort "UUID" sagt (z. B. kennt er vage die MAC-Adresse + Zeit und die Zufallszahlenalgorithmen der UUID-Formen, die sind beide Versionen von Variante 2). In diesem Fall ist die Antwort ja anders .

Die Antwort hängt also teilweise davon ab, was die fragende Person denkt, wenn sie das Wort "UUID" sagt. Bedeuten sie UUID der Variante 2 (weil dies die einzige Variante ist, die ihnen bekannt ist) oder alle UUIDs?

Der zweite Teil hängt davon ab, welche Spezifikation als Definition der UUID verwendet wird.

Wenn Sie der Meinung sind, dass dies verwirrend war, lesen Sie die ITU-T X.667 ISO / IEC 9834-8: 2004, die ausgerichtet und technisch vollständig kompatibel mit RFC 4122 sein soll . In Abschnitt 11.2 ist ein zusätzlicher Satz enthalten, der besagt: "Alle UUIDs, die dieser Empfehlung | Internationaler Standard entsprechen, müssen Variantenbits haben, wobei Bit 7 von Oktett 7 auf 1 und Bit 6 von Oktett 7 auf 0 gesetzt sind." Dies bedeutet, dass nur die UUID der Variante 2 diesem Standard entspricht (diese beiden Bitwerte bedeuten Variante 2). Wenn dies zutrifft, entsprechen nicht alle GUIDs den ITU-T / ISO / IEC-UUIDs, da konforme ITU-T / ISO / IEC-UUIDs nur Werte der Variante 2 sein können.

Daher hängt die tatsächliche Antwort auch davon ab, nach welcher UUID-Spezifikation die Frage gestellt wird. Angenommen, wir sprechen klar über alle UUIDs und nicht nur über UUIDs der Variante 2: Es gibt keinen Unterschied zwischen GUID- und IETF-UUIDs, aber ja Unterschied zwischen GUID und konformen ITU-T / ISO / IEC-UUIDs!

Binärcodierungen können unterschiedlich sein

Wenn die GUID binär codiert ist (im Gegensatz zum für Menschen lesbaren Textformat), kann sie wie folgt in einer Struktur mit vier verschiedenen Feldern gespeichert werden. Dieses Format unterscheidet sich vom UUID-Standard nur in der Bytereihenfolge der ersten 3 Felder.

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
Informativer als gewählte Antwort. Ich denke jedoch, dass die gewählte Antwort die absolut einfachste Antwort auf die Frage ist.
New Alexandria

3
Die in die Antwort eingebettete binäre Codierungstabelle ist sehr nützlich. Tnx
Luciano

2
Die "Endianness" ist sehr wichtig. Wenn Sie die ID als Byte speichern, erhalten Sie unterschiedliche Ergebnisse von GUID und UUID.
Calabacin

Und stellen Sie sich vor, Wesen stecken bei nur 665 Upvotes fest! Wie könnte ich das nicht unterstützen?
Haakon Løtveit

656

GUID ist die Implementierung des UUID-Standards durch Microsoft.

Per Wikipedia :

Der Begriff GUID bezieht sich normalerweise auf die Implementierung des UUID-Standards ( Universally Unique Identifier ) durch Microsoft .

Ein aktualisiertes Zitat aus demselben Wikipedia-Artikel:

RFC 4122 selbst gibt an, dass UUIDs "auch als GUIDs bezeichnet werden". All dies deutet darauf hin, dass "GUID", obwohl es sich ursprünglich auf eine von Microsoft verwendete UUID-Variante bezieht, einfach ein alternativer Name für UUID geworden ist ...


40
(Das G steht für Global)
ted.strauss

487
Genau wie Microsoft, um etwas zu nehmen, das überall funktioniert (das Universum) und es in einer sehr kleinen Teilmenge (dem Globus) zum
Gus

33
Beachten Sie, dass Sie, wenn Sie von der GUID-Binärdarstellung von Microsoft in eine Standard-UUID konvertieren möchten, die Endianness der ersten drei (von vier) Datenfeldern umdrehen müssen, wie im Abschnitt "Binärcodierung" hier beschrieben: en.wikipedia.org/ wiki / Globally_unique_identifier
Form

87
Aus diesem Grund dürfen Astronauten Windows nicht auf der ISS installieren.
Intuition

10
@bdukes Scheint, Wikipedia hat das geändert, was Sie als ihre Aussage bezeichnet haben. Es liest jetztThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Khadim Ali

13

Nicht wirklich. Die GUID ist stärker auf Microsoft ausgerichtet, während die UUID häufiger verwendet wird (z. B. im Schema urn: uuid: URN und in CORBA).


1
Was ist die Definition und Wirkung von Microsoft-Zentrizität?
Karl Richter

8

GUID wird seit langem in Bereichen verwendet, in denen es sich nicht unbedingt um einen 128-Bit-Wert handelt, wie dies bei einer UUID der Fall ist. In der RSS-Spezifikation werden GUIDs beispielsweise als beliebige Zeichenfolge Ihrer Wahl definiert, sofern sie eindeutig ist. Mit dem Attribut "isPermalink" wird angegeben, dass der von Ihnen verwendete Wert nur ein Permalink zurück zu dem zu syndizierenden Element ist.


0

Die GUIDTextdarstellung von Microsoft kann in Form einer UUID erfolgen, die von zwei geschweiften Klammern umgeben ist {}.


6
Dies ist nur für eine Textdarstellung der GUID. Die tatsächliche Struktur ist unterschiedlich.
anonym

-2

Ein Unterschied zwischen der GUID in SQL Server und der UUID in PostgreSQL ist die Groß- und Kleinschreibung. SQL Server gibt oben aus, während PostgreSQL unten ausgibt.

Die Hexadezimalwerte "a" bis "f" werden als Kleinbuchstaben ausgegeben und bei der Eingabe ohne Berücksichtigung der Groß- und Kleinschreibung. - rfc4122 # section-3

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.