Ich sehe, dass diese beiden Akronyme umhergeworfen werden, und ich frage mich, ob es irgendwelche Unterschiede zwischen einer GUID und einer UUID gibt?
Antworten
Zu viele Anzeigen?El einfache Antwort ist: **kein Unterschied, es ist dasselbe.
2020-08-20 Aktualisierung : GUIDs (wie sie von Microsoft verwendet werden) und UUIDs (wie sie in RFC4122 definiert sind) sehen zwar ähnlich aus und dienen ähnlichen Zwecken, es gibt jedoch subtile, aber gelegentlich wichtige Unterschiede. Genauer gesagt, einige Microsoft GUID-Dokumente erlauben es, dass GUIDs jede beliebige Hex-Ziffer an jeder Position enthalten, während RFC4122 bestimmte Werte für die version
y variant
Felder. Außerdem sollten GUIDs [gemäß demselben Link] ausschließlich in Großbuchstaben angegeben werden, während UUIDs sollte sein "als Kleinbuchstaben ausgegeben werden und bei der Eingabe die Groß-/Kleinschreibung nicht berücksichtigt wird". Dies kann zu Inkompatibilitäten zwischen Code-Bibliotheken führen ( wie zum Beispiel diese ).
(Originalantwort folgt)
Behandeln Sie sie als einen 16-Byte-Wert (128 Bit), der als eindeutiger Wert verwendet wird. In der Microsoft-Sprache werden sie GUIDs genannt, aber wenn Sie keine Microsoft-Sprache verwenden, nennen Sie sie UUIDs.
Selbst die Autoren der UUID-Spezifikation und Microsoft behaupten, dass es sich um Synonyme handelt:
-
Aus der Einleitung zur IETF RFC 4122 " Ein Universally Unique IDentifier (UUID) URN-Namensraum ": "ein Uniform Resource Name Namensraum für UUIDs (Universally Unique IDentifier), auch bekannt als GUIDs (Globally Unique IDentifier)."
-
Von der ITU-T-Empfehlung X.667, ISO/IEC 9834-8:2004 Internationale Norm : "UUIDs sind auch als Globally Unique Identifiers (GUIDs) bekannt, aber dieser Begriff wird in dieser Empfehlung nicht verwendet."
-
Und Microsoft selbst Ansprüche Ein GUID wird durch den UUID RFC spezifiziert: "In der Microsoft Windows Programmierung und in Windows Betriebssystemen ist ein global eindeutiger Bezeichner (GUID), wie in [RFC4122] spezifiziert, ... Der Begriff universell eindeutiger Bezeichner (UUID) wird manchmal in Windows-Protokollspezifikationen als Synonym für GUID verwendet."
Aber die richtige Antwort hängt davon ab, was die Frage meint, 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?
Betrachtet man die Details des RFC 4122, so gibt es vier verschiedene "Varianten" von UUIDs. Dies liegt vor allem daran, dass solche 16-Byte-Kennungen in Gebrauch waren, bevor diese Spezifikationen zu einer UUID-Spezifikation zusammengefasst wurden. Aus Abschnitt 4.1.1 des RFC 4122 die vier Varianten der UUID sind:
- Reserviert, Network Computing System Abwärtskompatibilität
- El Variante spezifiziert in RFC 4122 (von dem es fünf Untervarianten gibt, die als "Versionen" bezeichnet werden)
- Reserviert, Microsoft Corporation Abwärtskompatibilität
- Reserviert für zukünftige Definitionen.
Gemäß RFC 4122 müssen alle UUID Varianten sind "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 (aber vorbehaltlich des zweiten Teils unten).
Aber nicht alle GUIDs sind Variante 2 UUIDs (z. B. hat Microsoft COM GUIDs, die Variante 3 UUIDs sind). Wenn die Frage lautete: "Gibt es einen Unterschied zwischen GUID und Variante 2 UUIDs", dann wäre die Antwort ja - sie können unterschiedlich sein. Jemand, der diese Frage stellt, weiß wahrscheinlich nichts über Varianten und sie denken vielleicht nur an Variante 2 UUIDs, wenn sie das Wort "UUID" sagen (z. B. kennen sie vage die MAC-Adresse+Zeit und die Zufallszahlenalgorithmen als Formen der UUID, die beide Versionen de Variante 2). In diesem Fall lautet die Antwort ja anders .
Die Antwort hängt also zum Teil davon ab, was die fragende Person denkt, wenn sie das Wort "UUID" sagt. Meint er UUID-Variante 2 (weil das die einzige Variante ist, die er kennt) oder alle UUIDs?
Der zweite Teil hängt davon ab, welche Spezifikation für die Definition von UUID verwendet wird.
Wenn Sie glauben, dass das verwirrend war, lesen Sie die ITU-T X.667 ISO/IEC 9834-8:2004 die angepasst und technisch vollständig kompatibel sein soll mit RFC 4122 . Es gibt einen zusätzlichen Satz in Abschnitt 11.2, der besagt: "Alle UUIDs, die dieser Empfehlung | Internationalen Norm entsprechen, müssen Variantenbits haben, wobei Bit 7 von Oktett 7 auf 1 und Bit 6 von Oktett 7 auf 0 gesetzt ist. Das bedeutet, dass nur Variante 2 UUID diesem Standard entsprechen (diese beiden Bitwerte bedeuten Variante 2). Wenn das stimmt, dann sind nicht alle GUIDs konforme ITU-T/ISO/IEC UUIDs, denn konforme ITU-T/ISO/IEC UUIDs können nur sein Variante 2 Werte.
Daher hängt die richtige Antwort auch davon ab, nach welcher Spezifikation von UUID die Frage gestellt wird. Angenommen, wir sprechen eindeutig über alle UUIDs und nicht nur über UUIDs der Variante 2: Es gibt kein Unterschied zwischen GUID und den UUIDs der IETF, aber ja Unterschied zwischen GUID und konform ITU-T/ISO/IECs UUIDs!
Binäre Kodierungen können sich unterscheiden
Bei der Kodierung im Binärformat (im Gegensatz zum menschenlesbaren Textformat) wird die GUID können gespeichert werden in einer Struktur mit vier verschiedenen Feldern wie folgt. Dieses Format unterscheidet sich vom [UUID-Standard] 8 nur in der Byte-Reihenfolge 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 Microsofts Implementierung der Universell eindeutiger Bezeichner (UUID) Standard.
Ein aktualisiertes Zitat aus demselben Wikipedia-Artikel:
In RFC 4122 selbst heißt es, dass UUIDs "auch als GUIDs bekannt sind". All dies deutet darauf hin, dass "GUID", obwohl es sich ursprünglich auf eine von Microsoft verwendete Variante von UUID bezog, einfach ein alternativer Name für UUID geworden ist
GUID wird seit langem in Bereichen verwendet, in denen es sich nicht notwendigerweise um einen 128-Bit-Wert handelt, wie bei einer UUID. Zum Beispiel wird die Die RSS-Spezifikation definiert GUIDs kann eine beliebige Zeichenfolge Ihrer Wahl sein, solange sie eindeutig ist, mit einem "isPermalink"-Attribut, um anzugeben, dass der von Ihnen verwendete Wert nur ein Permalink zu dem zu syndizierenden Artikel ist.
Ein Unterschied zwischen GUID in SQL Server und UUID in PostgreSQL ist die Großschreibung; SQL Server gibt Großbuchstaben aus, während PostgreSQL Kleinbuchstaben ausgibt.
Die hexadezimalen Werte "a" bis "f" werden als Kleinbuchstaben ausgegeben und bei der Eingabe wird die Groß-/Kleinschreibung nicht berücksichtigt. - rfc4122#Abschnitt-3