Was ist eine UUID?
Eine UUID (Universally Unique Identifier) ist ein 128-Bit-Bezeichner, der durch RFC 4122 standardisiert ist. Sie sieht so aus:
550e8400-e29b-41d4-a716-446655440000
Funf Gruppen von Hexadezimalzeichen, durch Bindestriche getrennt, immer 36 Zeichen lang. Die "universelle Einzigartigkeit" ergibt sich aus der Kombination von Zeit, Zufalllichkeit und/oder Namespace, je nach Version.
UUIDs werden verwendet, wenn IDs ohne zentrale Autoritat (z. B. einen Datenbankzahler mit automatischer Inkrementierung) generiert werden mussen. Sie eignen sich fur verteilte Systeme, clientseitig generierte IDs und Falle, in denen kein Server-Roundtrip fur die nachste ID moglich ist.
UUID-Versionen
Es gibt mehrere offizielle UUID-Versionen, jede mit einer anderen Generierungsstrategie:
UUID v1, Zeitbasiert
Wird aus dem aktuellen Zeitstempel kombiniert mit der MAC-Adresse des generierenden Rechners erzeugt. Garantiert einzigartig uber Maschinen hinweg zum gleichen Zeitpunkt, aber die MAC-Adresse verrAt die Maschinenidentitat, in manchen Kontexten ein Sicherheitsproblem.
UUID v3, Namensbasiert (MD5)
Deterministisch: derselbe Name + Namespace erzeugt immer dieselbe UUID. Verwendet MD5-Hashing. Nutzlich fur die Generierung stabiler IDs fur bekannte Ressourcen (eine bestimmte URL, ein Domainname). MD5 gilt als schwach, daher wird v5 fur neue Projekte bevorzugt.
UUID v4, Zufallig (am haufigsten)
Wird aus 122 Bits zufalliger Daten generiert. Die am weitesten verbreitete Version. Die Wahrscheinlichkeit einer Kollision zwischen zwei UUIDv4s ist astronomisch gering. Verwenden Sie diese, sofern kein bestimmter Grund dagegen spricht.
UUID v5, Namensbasiert (SHA-1)
Wie v3, aber mit SHA-1 statt MD5. Wird v3 fur neue Projekte vorgezogen. Gut fur die Generierung stabiler, reproduzierbarer Bezeichner aus Eingabezeichenketten.
UUID v7, Zeitgeordnet zufallig (neuer Standard)
In der Revision 2022 des RFC eingefuhrt. Kombiniert ein Millisekunden-Zeitstempel-Prafix mit zufAlligen Bits. Das Zeitstempel-Prafix bedeutet, dass UUIDv7s chronologisch sortierbar sind, ein wesentlicher Vorteil fur Datenbank-Primarschlussel (bessere Index-Leistung als zufalliges v4). Dies ist die empfohlene Wahl fur Datenbank-IDs.
Wann UUIDs verwenden
- Datenbank-Primarschlussel, besonders in verteilten Systemen, wo mehrere Knoten gleichzeitig Datensatze einfugen
- API-Ressourcenbezeichner, die Exposition sequenzieller Integer verrAt Informationen uber Ihr Datenvolumen; UUIDs nicht
- Datei- und Asset-Benennung, kollisionsresistente Namen fur hochgeladene Dateien ohne Koordinationsserver
- Idempotenzschlussel, Generierung eines clientseitigen Schlussels zur sicheren Wiederholung einer Zahlungs- oder Mutationsanfrage
UUID vs ULID vs NanoID
UUID v4 ist zufallig, aber nicht sortierbar. Alternativen sind fur spezifische Anwendungsfalle entstanden:
ULID (Universally Unique Lexicographically Sortable Identifier): eine 128-Bit-ID wie UUID, aber nach Zeit sortierbar. Ahnliches Ziel wie UUID v7.
NanoID: kleiner (standardmasig 21 Zeichen), URL-sicher, konfigurierbares Alphabet. Nutzlich fur kurze IDs in URLs. Die Kollisionswahrscheinlichkeit ist durch Anpassung der Lange einstellbar.
Fur die meisten Backend-Datenbankarbeiten ist UUID v7 die moderne beste Praxis. Fur URL-freundliche kurze IDs ist NanoID eine beliebte Wahl. UUID v4 bleibt die am weitesten unterstuzte Option, wenn Kompatibilitat Prioritat hat.
UUIDs im Browser generieren
Sie konnen UUID v4 (und andere Versionen) sofort mit dem UUID-Generator auf dieser Seite generieren, ohne Anmeldung, ohne Server-Roundtrip, vollstandig im Browser ausgefuhrt.
Im Code: JavaScript hat crypto.randomUUID() nativ in modernen Browsern und Node.js ab Version 14.17. Python hat das Standardbibliotheksmodul uuid.
Kurz zusammengefasst
UUIDs sind 128-Bit-kollisionsresistente Bezeichner mit mehreren Versionen fur unterschiedliche Strategien: zeitbasiert (v1), zufallig (v4), namensbasiert (v5) und zeitgeordnet zufallig (v7). UUID v4 ist die haufigste Allzweckwahl; UUID v7 ist die beste Wahl fur Datenbank-Primarschlussel, bei denen die Sortierreihenfolge wichtig ist.