UUIDs erklärt: Wann man sie verwendet und wie sie funktionieren
Erfahren Sie, was UUIDs sind, welche Unterschiede zwischen den Versionen bestehen, wie hoch das Kollisionsrisiko ist und wie man sie sicher für Datenbanken und APIs generiert.
Eine UUID (Universally Unique Identifier) ist ein 128-Bit-Label, das üblicherweise in der Form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx geschrieben wird. Entwickler verwenden UUIDs als Primärschlüssel, Korrelations-IDs und opake Token, weil sie ohne zentrale Koordination erstellt werden können und dennoch eine äußerst geringe Kollisionswahrscheinlichkeit aufweisen.
Warum keine ganzen Zahlen verwenden?
Automatisch inkrementierte Integer sind einfach und kompakt, geben jedoch Informationen preis: Konkurrenten können erraten, wie viele Bestellungen Sie haben, oder Ressourcen durch Iteration der IDs abgreifen. UUIDs sind in der Praxis nicht vorhersagbar und sicher für die Verwendung in URLs und clientseitigem Code.
UUIDs sind für sich allein kein Sicherheitsmerkmal. Wenn Sie Autorisierung benötigen, setzen Sie diese weiterhin serverseitig durch.
Gängige UUID-Versionen
| Version | Generierungsmethode | Typischer Einsatz |
|---|---|---|
| v1 | MAC-Adresse + Zeitstempel | Veraltet; vermeiden, wenn Datenschutz wichtig ist |
| v4 | Zufallsbits | Standardwahl für neue Systeme |
| v5 | SHA-1-Hash aus Namespace + Name | Deterministische IDs aus stabilen Eingaben |
Die meisten Anwendungen verwenden heute UUID v4 für Primärschlüssel. Einige Teams bevorzugen ULIDs oder Snowflake IDs für zeitlich sortierbare Zeichenketten; UUIDs bleiben jedoch die am weitesten verbreitete Lösung.
Kollisionswahrscheinlichkeit
Bei v4 ist die Chance einer Kollision astronomisch gering, bis man Milliarden von IDs pro Sekunde generiert. Für normale Webanwendungen ist es vertretbar, Kollisionen als ausgeschlossen zu betrachten – solange die Zufallsquelle kryptografisch stark ist (verwenden Sie das Betriebssystem oder den CSPRNG der Programmiersprache, nicht Math.random() für sicherheitskritische IDs).
// Browser: prefer crypto.randomUUID() when available
const id = crypto.randomUUID();
console.log(id); // e.g. 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d
Praktische Hinweise
- Datenbankindizes: Zufällige UUIDs fragmentieren B-Tree-Indizes stärker als sequenzielle IDs. PostgreSQLs
gen_random_uuid(), UUID v7 (zeitgeordnet) oder COMB-ähnliche Techniken können helfen, wenn die Einfügeleistung bei sehr großem Datenvolumen eine Rolle spielt. - Logs und Tracing: Verwenden Sie eine UUID pro Anfrage als Korrelations-ID, damit Sie Logs über mehrere Dienste hinweg durchsuchen können.
- Tests: Generieren Sie in Testdaten neue UUIDs, damit Tests nicht von festen Werten abhängen – es sei denn, Sie benötigen Reproduzierbarkeit (dann eignen sich v5 oder ein Generator mit festem Seed).
Im Browser ausprobieren
Nutzen Sie unseren kostenlosen UUID Generator, um sofort v4-Identifikatoren zu erstellen – ohne Anmeldung, und alles läuft lokal in Ihrem Browser-Tab.
Für verwandte Aufgaben empfehlen sich außerdem der Hash Generator für Prüfsummen sowie der JWT Decoder zum Debuggen von Token, die in APIs häufig neben UUIDs vorkommen.