Was ist eine UUID?
Eine UUID (Universally Unique Identifier) ist ein 128-Bit-Wert, der zur eindeutigen Identifikation von Informationen verwendet wird. Das Format besteht aus 32 hexadezimalen Zeichen, gruppiert durch Bindestriche:8-4-4-4-12.
Beispiel: 550e8400-e29b-41d4-a716-446655440000
UUID-Versionen
UUID v1 (Zeitbasiert)
Kombiniert Zeitstempel + MAC-Adresse. Garantiert Eindeutigkeit, aber gibt Informationen über Erstellungszeit und Gerät preis. Sortierbar nach Zeit.
UUID v4 (Zufällig)
122 zufällige Bits (6 Bits für Version/Variante). Am häufigsten verwendet. Keine Informationspreisgabe. Kollisionswahrscheinlichkeit praktisch null.
UUID v3 / v5 (Namensbasiert)
Generiert aus Namespace + Name per Hash (v3=MD5, v5=SHA-1). Deterministisch: gleiche Eingabe = gleiche UUID. Ideal für reproduzierbare IDs.
UUID-Aufbau
550e8400-e29b-41d4-a716-446655440000 │ │ │ │ │ │ │ │ │ └── Node (v1: MAC-Adresse) │ │ │ └───── Variante (8, 9, a, b) │ │ └─────── Version (1, 4, 5, etc.) │ └──────────── Zeit (v1) oder Zufall └───────────────────── Zeit (v1) oder Zufall
Warum UUIDs verwenden?
- Dezentral: Keine zentrale Instanz für ID-Vergabe nötig
- Skalierbar: Funktioniert in verteilten Systemen
- Sicher: Nicht erratbar (bei v4)
- Merge-freundlich: Keine ID-Konflikte bei Datenbank-Merges
UUID vs. Auto-Increment ID
| Eigenschaft | UUID | Auto-Increment |
|---|---|---|
| Größe | 128 Bit (16 Bytes) | 32/64 Bit (4/8 Bytes) |
| Lesbarkeit | Komplex | Einfach |
| Vorhersagbar | Nein (v4) | Ja |
| Verteilt | Ja | Nein |
| Index-Performance | Schlechter | Besser |
UUIDs in Programmiersprachen
// JavaScript (Browser) crypto.randomUUID() // Python import uuid uuid.uuid4() // Java java.util.UUID.randomUUID() // C# / .NET Guid.NewGuid() // PHP Ramsey\Uuid\Uuid::uuid4()
Häufig gestellte Fragen
Wie wahrscheinlich ist eine UUID-Kollision?
Bei UUID v4: Extrem unwahrscheinlich. Um 50% Kollisionswahrscheinlichkeit zu erreichen, müsste man etwa 2,7 × 10¹⁸ UUIDs generieren. In der Praxis vernachlässigbar.
Kann ich UUIDs als Datenbankschlüssel verwenden?
Ja, aber beachten: UUIDs sind größer (16 vs. 4 Bytes) und schlechter für Index-Performance bei B-Trees. UUID v1 oder ULID sind besser sortierbar.
Was ist ein ULID?
ULID (Universally Unique Lexicographically Sortable Identifier) ist eine Alternative zu UUID: 128 Bit, aber lexikographisch sortierbarnach Erstellungszeit. Besser für Datenbanken.