Was ist eine UUID?
Eine UUID (Universally Unique Identifier) ist ein 128-Bit-Label, formatiert als 32 hexadezimale Ziffern in fünf Gruppen durch Bindestriche (z.B. 550e8400-e29b-41d4-a716-446655440000). v4 UUIDs sind zufällig generiert, was die Wahrscheinlichkeit identischer Werte astronomisch gering macht.
UUIDs werden als Datenbank-Primärschlüssel, Session-Token und eindeutige Bezeichner in verteilten Systemen verwendet. Dieses Werkzeug nutzt das sichere crypto.randomUUID() des Browsers.
Wie erzeugt man eine UUID v4?
Um eine UUID v4 zu erzeugen, füllen Sie 128 Bit mit kryptografisch zufälligen Werten und legen dann 6 bestimmte Bits fest, um Version und Variante zu kennzeichnen, sodass der Wert weiterhin dem UUID-Standardformat entspricht. Beispielformat: 550e8400-e29b-41d4-a716-446655440000, wobei die '4' direkt nach dem zweiten Bindestrich immer Version 4 kennzeichnet.
Schritte zur Erzeugung einer UUID der Version 4
- Erzeugen Sie 128 Zufallsbits (16 Byte) mit einem kryptografisch sicheren Zufallsgenerator.
- Setzen Sie die 4 höchstwertigen Bits des 7. Byte binär auf 0100, was diese als Version 4 kennzeichnet — deshalb ist das erste Zeichen der dritten Gruppe immer '4'.
- Setzen Sie die 2 höchstwertigen Bits des 9. Byte binär auf 10, was die Standardvariante kennzeichnet — dadurch ist das erste Zeichen der vierten Gruppe immer 8, 9, a oder b.
- Formatieren Sie die verbleibenden Bits als 32 hexadezimale Ziffern.
- Fügen Sie Bindestriche ein, um die Ziffern in Gruppen von 8-4-4-4-12 Zeichen zu teilen, und erzeugen so die endgültige UUID-Zeichenkette.
Struktur einer UUID v4
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx, wobei x eine beliebige zufällige Hexadezimalziffer ist und y eines von 8, 9, a oder b
- Gesamtlänge = 36 Zeichen einschließlich 4 Bindestrichen (32 Hexadezimalziffern + 4 Bindestriche)
- Versions-Nibble = immer '4' (kennzeichnet Version 4, also zufällige Erzeugung)
- Varianten-Nibble = immer 8, 9, a oder b (kennzeichnet die RFC-Standardvariante)
Beispielhaftes UUID-v4-Format (veranschaulichend — jede Erzeugung ist zufällig)
| Gruppe | Länge | Beispielsegment |
|---|
| time_low | 8 Hexadezimalziffern | 550e8400 |
| time_mid | 4 Hexadezimalziffern | e29b |
| Version + time_hi | 4 Hexadezimalziffern (beginnt mit 4) | 41d4 |
| Variante + clock_seq | 4 Hexadezimalziffern (beginnt mit 8-b) | a716 |
| node | 12 Hexadezimalziffern | 446655440000 |
Häufig gestellte Fragen
Wie unwahrscheinlich ist es, dass zwei UUID-v4-Werte kollidieren?
Eine UUID v4 hat 122 zufällige Bits (128 insgesamt minus 6 feste Versions-/Variantenbits), was etwa 5,3 × 10^36 mögliche Werte ergibt. Auch bei einer Milliarde erzeugter UUIDs pro Sekunde über eine Milliarde Jahre bliebe die Kollisionswahrscheinlichkeit vernachlässigbar klein, weshalb UUIDs ohne zentrale Koordination als praktisch eindeutig gelten.
Warum hat jede UUID v4 an derselben Stelle eine 4?
Dieses Zeichen ist nicht zufällig — es ist durch den Standard festgelegt, um die UUID als Version 4 (zufällig erzeugt) zu kennzeichnen, damit Software, die die ID liest, erkennen kann, welche UUID-Version und welcher Erzeugungsalgorithmus sie erzeugt hat, auch ohne zusätzliche Metadaten.
Ist eine UUID dasselbe wie eine GUID?
GUID (Globally Unique Identifier) ist Microsofts Bezeichnung für dasselbe 128-Bit-Identifikatorformat, das als UUID standardisiert ist. Beide Begriffe beschreiben dieselbe zugrunde liegende Struktur und werden in der Praxis meist synonym verwendet, wobei manche ältere Microsoft-Tools kleinere Formatierungsunterschiede aufweisen.
Eignen sich UUIDs als Primärschlüssel in Datenbanken?
UUID v4 funktioniert gut, wenn IDs unabhängig auf mehreren Servern ohne Koordination erzeugt werden müssen und so der Engpass eines einzelnen Auto-Increment-Zählers vermieden wird. Der Nachteil ist, dass zufällige UUIDs größer als Ganzzahlen sind und, anders als sequenzielle IDs, bei hoher Einfügelast in manchen Datenbank-Engines die Indexlokalität beeinträchtigen können.
Dieses Werkzeug erzeugt UUIDs der Version 4 (zufällig) mit dem in den Browser integrierten crypto.randomUUID(), das kryptografisch sicher ist; es erzeugt keine anderen UUID-Versionen wie v1 (zeitstempelbasiert) oder v5 (namensbasierter Hash).
Sources: RFC 9562 - Universally Unique IDentifiers (UUIDs)