Ich sehe diese 2 Akronyme herumgeworfen und habe mich gefragt, ob es Unterschiede zwischen einer GUID und einer UUID gibt.
Ich sehe diese 2 Akronyme herumgeworfen und habe mich gefragt, ob es Unterschiede zwischen einer GUID und einer UUID gibt.
Antworten:
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:
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
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 ...
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
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).
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.
Die GUID
Textdarstellung von Microsoft kann in Form einer UUID erfolgen, die von zwei geschweiften Klammern umgeben ist {}
.
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