Entwicklertools
GUID vs. UUID: Was ist der Unterschied?
GUID und UUID benennen normalerweise denselben 128-Bit-Bezeichner, aber Version, Format, Reihenfolge und Systemverträge sind immer noch wichtig.
Von Vigneshwaran Vijayakumar, Entwickler und Herausgeber | | Bewertet unter der ClockTools redaktionelle Richtlinie
Inhaltsverzeichnis
GUID und UUID beschreiben normalerweise die gleiche Art von Kennung: einen 128-Bit-Wert, der so konzipiert ist, dass er eindeutig ist, ohne einen zentralen Zähler nach der nächsten Zahl zu fragen. Die Wörter stammen aus unterschiedlichen Namenstraditionen. UUID ist der Standardbegriff, während GUID besonders häufig in Microsoft-Software und Entwicklertools vorkommt.
Diese kurze Antwort ist nützlich, beantwortet aber nicht alle praktischen Fragen. Zwei Identifikatoren können das Vertraute teilen 8-4-4-4-12 Textform und verwenden Sie dennoch unterschiedliche UUID-Versionen, Generierungsregeln, Sortierverhalten oder binäre Serialisierungskonventionen. Wenn in einer Datenbankspalte, API oder Anwendung „GUID“ angegeben ist, besteht der sicherste Ansatz darin, das akzeptierte Format und die akzeptierte Version zu bestätigen, anstatt sich nur auf die Bezeichnung zu verlassen.
Benutzen Sie die ClockTools GUID Generator wenn Sie vom Browser generierte UUID v4- oder UUID v7-Werte, Massenausgabe, Validierung oder exportfähige Formatierung benötigen. Die Generierungs- und Validierungsschritte laufen lokal im Browser ab.
GUID vs UUID: Sind sie gleich?
In den meisten alltäglichen Entwicklungsarbeiten GUID und UUID sind austauschbare Namen für einen 128-Bit-Bezeichner. Der aktuelle IETF-Standard, RFC 9562weist ausdrücklich darauf hin, dass UUIDs auch als global eindeutige Bezeichner bekannt sind. Ein Wert wie 550e8400-e29b-41d4-a716-446655440000 kann daher entweder als UUID oder als GUID bezeichnet werden, ohne seine Zeichen zu ändern.
Der wichtige Unterschied besteht zwischen a Namen und a Generationsschema. Wenn Sie einen Wert als GUID bezeichnen, erfahren Sie nicht, ob es sich um Version 4, Version 7, eine ältere zeitbasierte Version oder eine plattformspezifische Konstruktion handelt. Die Bezeichnung UUID garantiert nicht, dass eine Anwendung jede standardisierte Version akzeptiert. Die Bezeichnung identifiziert den breiten Datentyp; Die Version und der umgebende Vertrag geben an, wie sich der Wert verhält.
| Frage | GUID | UUID |
|---|---|---|
| Typischer Kontext | Microsoft-APIs, .NET, Windows, SQL Server | Internetstandards, Datenbanken, verteilte Systeme, APIs |
| Übliche Größe | 128 Bits | 128 Bits |
| Vertraute Textform | 8-4-4-4-12 Hexadezimalgruppen | 8-4-4-4-12 Hexadezimalgruppen |
| Gibt der Name eine Version an? | Nein | Nein |
| Können sich die Begriffe auf denselben Wert beziehen? | Ja | Ja |
Aus diesem Grund sollte sich ein Vergleich zwischen GUID und UUID weniger darauf konzentrieren, welches Wort „richtig“ ist, sondern vielmehr auf den Systemanforderungen hinter dem Wort.
Warum gibt es zwei Namen?
UUID bedeutet universell eindeutige Kennung. Es ist die von den IETF-Standards verwendete Terminologie, die das Layout, die Varianten, Versionen, die Textdarstellung und die Überlegungen zur Generierung definiert. GUID bedeutet global eindeutiger Bezeichner und hat sich tief in den Microsoft-Plattformen etabliert. Die .NET-Typ „System.Guid“. ist ein bekanntes Beispiel.
Beide Namen haben überlebt, weil Software-Ökosysteme ihr Vokabular aus Kompatibilitätsgründen beibehalten. Eine Microsoft-API kann a verfügbar machen Anleitung, ein PostgreSQL-Schema kann a verwenden uuid Spalte, und eine JSON-API kann das Feld aufrufen id. Alle drei können denselben kanonischen Textwert tragen.
Es ist nicht erforderlich, jedes GUID-Feld lediglich aus Terminologiegründen in UUID umzubenennen. Es muss die akzeptierte Version dokumentiert werden, ob die Groß-/Kleinschreibung wichtig ist, ob geschweifte Klammern akzeptiert werden und wie der Wert serialisiert wird, wenn er Systemgrenzen überschreitet.
Wie sieht ein UUID aus?
Die übliche, für Menschen lesbare Form enthält 32 Hexadezimalziffern, die in fünf Gruppen unterteilt sind:
„Text
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
```
Die Gruppenlängen sind 8, 4, 4, 4 und 12. Einschließlich vier Bindestrichen ist die kanonische Zeichenfolge 36 Zeichen lang. M gibt das Versionsnibble in vom Standard abgedeckten Layouts an, während Bits durch dargestellt werden N Identifizieren Sie die Variante. Zum Beispiel die 4 in 550e8400-e29b-41d4-a716-446655440000 identifiziert UUID Version 4.
Die hexadezimale Schreibweise ändert den numerischen Wert nicht. A716 und a716 repräsentieren die gleichen Bits. Bindestriche, geschweifte Klammern usw urne:uuid: Präfix oder eine kompakte Form können die von einem Parser akzeptierte Zeichenfolge ändern, sie ändern jedoch nicht unbedingt den zugrunde liegenden Bezeichner. Das ist einer der Gründe, warum ClockTools die Generierung von der Formatierung trennt.
Wie unterscheiden sich UUID v4 und UUID v7?
UUID v4 ist die weit verbreitete Zufallsversion. Die meisten seiner verfügbaren Bits werden aus einer Zufalls- oder Pseudozufallsquelle gefüllt, wobei die erforderlichen Bits für die Version und Variante festgelegt sind. Es funktioniert gut, wenn Bezeichner die Erstellungsreihenfolge nicht preisgeben sollen und wenn die Generierung unabhängig über viele Clients oder Dienste hinweg erfolgt.
UUID v7 ist zeitlich geordnet. Seine ersten 48-Bits tragen einen Zeitstempel der Unix-Epoche in Millisekunden, gefolgt von Versions-, Varianten- und Zufallsdaten. Später generierte Werte werden im Allgemeinen nach früher generierten Werten sortiert. Dies kann für geordnete Indizes und Protokolle benutzerfreundlicher sein, da die Wahrscheinlichkeit geringer ist, dass neue Datensätze an nicht zusammenhängenden Positionen im Schlüsselbereich landen.
Geordnete Zeit bedeutet nicht, dass die Reihenfolge perfekt ist. Mehrere UUID v7-Werte, die innerhalb derselben Millisekunde erstellt wurden, benötigen noch zusätzliche Daten, um unterscheidbar zu bleiben, und das Taktverhalten ist wichtig. Es bedeutet auch nicht, dass es geheim ist: Ein v7-Wert legt konstruktionsbedingt die ungefähre Erstellungszeit offen. RFC 9562 enthält die normativen Layouts und Generierungshinweise für beide Versionen.
Welche Version sollten Sie wählen?
Wählen Sie die Version, die zum empfangenden System und dem von Ihnen benötigten Verhalten passt.
| Anforderung | Normalerweise bevorzugen | Warum |
|---|---|---|
| Breite Kompatibilität mit bestehenden UUID-fähigen Systemen | UUID v4 | Es ist ausgereift, vertraut und allgemein akzeptiert |
| Keine Informationen zur Erstellungszeit im Bezeichner | UUID v4 | Der Wert ist eher zufällig als zeitlich geordnet |
| Schlüssel, die ungefähr dem Erstellungszeitpunkt folgen | UUID v7 | Das Zeitstempel-Präfix unterstützt die chronologische Sortierung |
| Die vorhandene API erfordert ausdrücklich eine Version | Erforderliche Version | Kompatibilität geht vor Präferenz |
| Für den Menschen sichtbarer Kurzcode | Weder standardmäßig noch | UUIDs sind Bezeichner, keine benutzerfreundlichen Bestätigungscodes |
| Authentifizierungs-Token oder Geheimnis zum Zurücksetzen des Passworts | Ein dediziertes sicheres Token-Design | Einzigartigkeit und Geheimhaltung sind unterschiedliche Eigenschaften |
Wechseln Sie nicht die Version, nur weil eine neuer klingt. Überprüfen Sie zuerst Ihren Datenbanktreiber, Ihre Validierungsbibliothek, Ihr API-Schema und Ihre nachgeschalteten Verbraucher. Ein vor Jahren geschriebener Validator lehnt möglicherweise einen gültigen v7-Wert ab, da er nur ältere Versionen erkennt.
Kann derselbe UUID anders aussehen?
Ja. Die gleichen zugrunde liegenden 128-Bits können in Standard-Kleinbuchstaben, Großbuchstaben, geschweiften Klammern, Text in Anführungszeichen, kompakter Hexadezimalzahl oder URN-Form dargestellt werden. ClockTools kann generierte Werte auch als Zeilen, CSV, JSON oder SQL-freundliche Ausgabe packen. Hierbei handelt es sich um Darstellungsoptionen, nicht um neue Bezeichner.
Der binäre Austausch verdient mehr Sorgfalt. Einige Plattform-APIs stellen in der Vergangenheit GUID-Felder oder Byte-Arrays in einer Reihenfolge bereit, die von der in modernen UUID-Spezifikationen beschriebenen Netzwerk-Byte-Reihenfolge abweicht. Ein String-Roundtrip sieht möglicherweise korrekt aus, während ein roher 16-Byte-Roundtrip dies nicht tut. Wenn Systeme binäre UUIDs austauschen, dokumentieren Sie die Bytereihenfolge und testen Sie sie anhand eines bekannten Werts, anstatt davon auszugehen, dass jede Bibliothek identisch serialisiert.
Verwenden Sie für URL-Abfragezeichenfolgen oder Pfadsegmente nach Möglichkeit die kanonische Form. Wenn ein umgebender Wert maskiert werden muss, wird der ClockTools URL-Encoder kann den gesamten Parameter kodieren, ohne den Bezeichner selbst zu ändern.
Wie sollten Sie GUIDs und UUIDs speichern?
Bevorzugen Sie den nativen UUID- oder Unique-Identifier-Typ einer Datenbank, wenn dieser verfügbar ist und von Ihren Tools unterstützt wird. Ein nativer Typ validiert die Form und speichert normalerweise den 128-Bit-Wert kompakter als eine Textspalte mit 36 Zeichen. Es kann Schema-Lesern auch die Absicht klarer machen.
Die Textspeicherung bleibt sinnvoll, wenn einem System ein nativer Typ fehlt oder die Kompatibilität eine Zeichenfolge erfordert. Normalisieren Sie in diesem Fall eine Darstellung, definieren Sie die zulässige Länge und vermeiden Sie das Mischen von geschweiften Klammern, URNs, Großbuchstaben und kompakten Werten in derselben Spalte. Eine einheitliche Formatierung vereinfacht Gleichheitsprüfungen, Exporte und Supportarbeiten.
Das Indexverhalten hängt von der Datenbank, der Arbeitslast, dem Einfügemuster und dem Indexdesign ab. UUID v7 verbessert möglicherweise die Lokalität für einige anhangintensive Primärschlüssel-Workloads, ist jedoch keine universelle Leistungsgarantie. Messen Sie mit Ihrer eigenen Datenbank und realistischen Daten. Behalten Sie die Geschäftsbedeutung in separaten Spalten bei; Eine Kennung sollte keinen Erstellungszeitstempel, keine Kundennummer oder keine Zugriffskontrollregel ersetzen.
Wie kann ClockTools sie generieren und validieren?
Die Online-Generator für GUID und UUID bietet einen fokussierten Workflow:
1. Wählen Sie UUID v4 für zufällige Bezeichner oder UUID v7 für zeitlich geordnete Bezeichner.
2. Wählen Sie eine Menge von 1 bis 1,000.
3. Wählen Sie die Formatierung Standard, Großbuchstaben, geschweifte Klammern, Anführungszeichen, Kompakt oder URN.
4. Wählen Sie „Plain“, „Base64“, „Base64URL“ oder „URL-Kodierung“, wenn das Ziel dies erfordert.
5. Exportieren Sie als Zeilen, CSV, JSON oder SQL, oder kopieren Sie die Ergebnisse direkt.
6. Fügen Sie einen vorhandenen Wert in den Validator ein, um seine normalisierte Form, Version, Variante und erkannte Sonderwerte zu überprüfen.
Bei der Generierung wird die kryptografische Zufallsquelle des Browsers verwendet. UUID v4 setzt die erforderlichen Versions- und Variantenbits. UUID v7 kombiniert den Millisekundenwert der aktuellen Unix-Epoche mit Zufallsdaten und den erforderlichen Layout-Bits. Die Seite muss für diese Vorgänge keine generierten Kennungen hochladen.
Verwenden Sie beim Vergleich zweier exportierter Listen die Text-Diff-Checker um einen fehlenden, wiederholten oder neu formatierten Eintrag zu erkennen, ohne jede Zeile manuell scannen zu müssen.
Welche Fehler sollten Sie vermeiden?
Der erste Fehler besteht darin, „einzigartig“ als „unmöglich zu kollidieren“ zu behandeln. UUID-Designs machen versehentliche Kollisionen bei korrekter Generierung außerordentlich unwahrscheinlich, aber Software sollte dennoch eine Eindeutigkeitsbeschränkung verwenden, bei der Duplikate schädlich wären. Eine defekte Zufallsquelle, ein kopiertes Gerät, ein Importfehler oder ein Anwendungsfehler können ein Duplikat erzeugen, selbst wenn die Mathematik korrekt ist.
Der zweite Fehler besteht darin, einen UUID als Autorisierungsnachweis zu verwenden. Ein schwer zu erratender Bezeichner kann die zufällige Entdeckung verringern, erteilt aber allein keine sichere Berechtigung. Überprüfen Sie bei jeder geschützten Anfrage den Zugriff des authentifizierten Benutzers.
Der dritte Fehler besteht darin, die Darstellung stillschweigend zu ändern. Das Entfernen von Bindestrichen, das Dekodieren von Base64 oder das Konvertieren in Bytes sollte umkehrbar sein und getestet werden. Behalten Sie einen kanonischen Wert in Protokollen, damit Betreiber ihn dienstübergreifend nachverfolgen können. Wenn ein Parser einen Bezeichner ablehnt, validieren Sie die Version und das Format, bevor Sie einen Ersatz generieren. Das Ersetzen einer ID kann Referenzen zerstören, die bereits darauf verweisen.
Häufig gestellte Fragen
Sind GUID und UUID dasselbe?
Normalerweise ja. Beide Begriffe beziehen sich üblicherweise auf einen 128-Bit-Bezeichner mit derselben Standardtextform. UUID ist der IETF-Standardbegriff, während GUID besonders häufig in Microsoft-Ökosystemen vorkommt.
Ist ein GUID immer eine UUID Version 4?
Nein. Das Wort GUID identifiziert keine UUID-Version. Ein GUID-förmiger Wert kann Version 4, Version 7, eine andere standardisierte Version oder eine plattformspezifische Generierungsmethode verwenden.
Sollte ich UUID v4 oder UUID v7 verwenden?
Verwenden Sie v4, wenn Sie einen weitgehend kompatiblen Zufallsbezeichner ohne eingebettete Erstellungszeit wünschen. Ziehen Sie Version 7 in Betracht, wenn chronologische Sortierung und Indexlokalität wichtig sind, vorausgesetzt, dass jedes empfangende System dies unterstützt.
Wie viele Zeichen enthält ein Standard GUID oder UUID?
Die kanonische Textform besteht aus 32 hexadezimalen Ziffern und vier Bindestrichen, also insgesamt 36 Zeichen. Klammern, URN-Präfixe, kompakte Formatierungen oder Anführungszeichen können die angezeigte Länge ändern.
Kann ich ein UUID als geheimes Token verwenden?
Gehen Sie nicht davon aus, dass Einzigartigkeit Geheimhaltung bietet. Authentifizierungs- und Reset-Tokens benötigen ein Design, das speziell für sichere, unvorhersehbare Anmeldeinformationen sowie Ablauf- und Autorisierungsprüfungen ausgelegt ist.
Lädt ClockTools generierte UUIDs hoch?
Der GUID-Generator führt die Generierung, Formatierung und Validierung lokal im Browser durch. Es verwendet die kryptografische Zufallsquelle des Browsers für die zufälligen Teile der unterstützten UUIDs.

