So werden die UUIDs erzeugt
Eine UUID besteht aus 128 Bit, geschrieben als 32 Hex-Ziffern in fünf Gruppen. Vier Bit geben die Version an, zwei oder drei Bit die Variante; der Rest hängt von der Version ab. RFC 9562, 2024 veröffentlicht, hat den älteren RFC 4122 ersetzt und die Versionen 6, 7 und 8 ergänzt.
v4 xxxxxxxx-xxxx-4xxx-Vxxx-xxxxxxxxxxxx v7 tttttttt-tttt-7ccc-Vxxx-xxxxxxxxxxxx t = Unix time in ms (48 bits) c = counter or random (12 bits) x = random, V = 8, 9, a or b
Version 4 füllt die übrigen 122 Bit mit Zufallsdaten; diese Seite holt sie vom kryptografischen Zufallsgenerator Ihres Browsers. Version 7 beginnt mit der Unix-Zeit in Millisekunden (48 Bit), sodass später erzeugte UUIDs hinter früheren einsortiert werden, und füllt den Rest mit Zufallsbits. Werden viele in derselben Millisekunde erzeugt, dienen die 12 Bit nach der Version als Zähler, wie RFC 9562 es erlaubt, sodass auch eine Liste von 1.000 UUIDs in der richtigen Reihenfolge bleibt.
Die Prüfung liest die Versions- und Variantenbits jeder UUID und bei den Versionen 1, 6 und 7 die darin gespeicherte Zeit. Eine UUID v4 enthält keine Zeit, daher lässt sich aus ihr nur die Version ablesen.
Beispiel
Das Beispiel in RFC 9562 ist 017f22e2-79b0-7cc3-98c4-dc0c0c07398f. Die ersten 12 Hex-Ziffern, 017f22e279b0, sind 1.645.557.742.000 Millisekunden seit 1970: 22. Februar 2022, 19:22:22 UTC. Die 7 nach dem zweiten Bindestrich ist die Version, und die 9 nach dem dritten kennzeichnet die Standardvariante.
Fragen
UUID v4 oder v7: Welche sollte ich verwenden?
Verwenden Sie v7 für Primärschlüssel in Datenbanken: Neue Zeilen bekommen größere IDs und landen daher am Ende des Index statt an zufälligen Stellen, was Einfügungen schnell und Indizes kompakt hält. Verwenden Sie v4, wenn die ID nicht verraten soll, wann sie erzeugt wurde, etwa in einem öffentlichen Link. Beide sind für jeden praktischen Zweck eindeutig genug.
Können zwei UUIDs jemals gleich sein?
Theoretisch ja, praktisch nein. Eine UUID v4 hat 122 Zufallsbits: Sie müssten etwa 2,7 Trillionen (2,7 × 10^18) davon erzeugen, um mit 50 % Wahrscheinlichkeit ein einziges Duplikat zu bekommen. Eine UUID v7 hat hinter ihrem Millisekunden-Timestamp je nach Erzeugung 62 bis 74 Zufallsbits, eine Kollision bräuchte also riesige Mengen in derselben Millisekunde. Schlechte Zufallszahlengeneratoren verursachen Duplikate, nicht das Format.
Ist eine GUID dasselbe wie eine UUID?
Ja. GUID ist Microsofts Name für dieselbe 128-Bit-Kennung, und Guid.NewGuid() in .NET erzeugt eine UUID der Version 4. Microsoft-Tools schreiben GUIDs oft in Großbuchstaben und in geschweiften Klammern: Mit den Optionen oben erhalten Sie diese Form.
Verrät eine UUID v7, wann sie erzeugt wurde?
Ja, auf die Millisekunde genau: Fügen Sie eine in die Prüfung oben ein, und sie zeigt die Zeit. Das macht sie gut sortierbar, verrät aber auch jedem, der die ID sieht, wann der Datensatz angelegt wurde. Wenn das eine Rolle spielt, verwenden Sie v4 für IDs, die Sie öffentlich zeigen.
Wie erzeuge ich eine UUID auf der Kommandozeile?
Unter Linux: cat /proc/sys/kernel/random/uuid oder uuidgen. Unter macOS: uuidgen (Großbuchstaben). In PostgreSQL: gen_random_uuid() für v4 und uuidv7() ab Version 18. In Python: import uuid; uuid.uuid4() und uuid.uuid7() ab Python 3.14. In JavaScript: crypto.randomUUID().