Was sind UUIDs?
UUID (Universell Eindeutiger Bezeichner) ist ein standardisiertes Bezeichnerformat, das so konzipiert ist, dass es global in Raum und Zeit eindeutig ist. UUIDs sind 128-Bit-Werte, die typischerweise als 32 hexadezimale Ziffern dargestellt werden, aufgeteilt in fünf Gruppen, die durch Bindestriche getrennt sind: 123e4567-e89b-12d3-a456-426614174000
.
UUIDs sind durch den Standard RFC 9562 definiert (der den früheren RFC 4122 ersetzt) und werden in Computersystemen verwendet, um Informationen ohne zentrale Registrierung oder Koordination zu identifizieren.
Format einer UUID
Alle UUIDs teilen ein gemeinsames Format, das aus 36 Zeichen besteht (32 hexadezimale Ziffern plus 4 Bindestriche), organisiert nach dem Muster:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Wobei:
x
eine beliebige hexadezimale Ziffer ist (0-9, a-f)M
die Version der UUID angibt (1-7)N
die Variante der UUID angibt (typischerweise 8, 9, A oder B für moderne UUIDs)
Vergleich der UUID-Versionen
Version | Name | Generierungsmethode | Nach Zeit sortiert | Anwendungsfälle |
---|---|---|---|---|
UUID v1 | Zeitstempel | Aktueller Zeitstempel + Knoten-ID (MAC) | Ja (teilweise) | Protokolle, verteilte Systeme |
UUID v3 | Namensbasiert (MD5) | MD5-Hash von Namensraum + Name | Nein | Konsistente IDs für dieselbe Eingabe |
UUID v4 | Zufällig | Zufallszahlen oder Pseudozufallszahlen | Nein | Allgemeiner Zweck, am häufigsten verwendet |
UUID v5 | Namensbasiert (SHA-1) | SHA-1-Hash von Namensraum + Name | Nein | Konsistente IDs mit stärkerem Hash |
UUID v6 | Neu geordneter Zeitstempel | Zeitstempel (für Sortierung geordnet) | Ja | Datenbankschlüssel, zeitlich sortierte Protokolle |
UUID v7 | Unix-Zeitstempel | Unix-Zeitstempel + Zufallsdaten | Ja | Moderne sortierbare Bezeichner |
Nil UUID | Null-UUID | Alle Nullen | N/A | Sonderwert, nicht initialisierter Marker |
Vorteile von UUIDs
- Keine Koordination erforderlich: IDs ohne zentrale Koordination generieren
- Globale Eindeutigkeit: Extrem geringe Wahrscheinlichkeit von Kollisionen
- Feste Länge: Konsistente Darstellung mit 36 Zeichen
- Plattformübergreifend: Kompatibel mit nahezu allen Programmiersprachen
- Vielseitig: Verschiedene Versionen für unterschiedliche Anwendungsfälle
Nicht standardisierte Alternativen zu UUIDs
ID-Typ | Beschreibung | Vorteile | Nachteile |
---|---|---|---|
GUID | Microsoft-Implementierung von UUID | Funktional äquivalent zu UUID | Einige Implementierungsunterschiede bei älteren Systemen |
ULID | Universell eindeutiger lexikografisch sortierbarer Bezeichner | Lexikografisch sortierbar, Zeitstempel zuerst, nicht groß-/kleinschreibungssensitiv | Neuere Technologie, weniger weit verbreitet |
Snowflake ID | Verteiltes ID-System von Twitter | Nach Zeit sortierbar, kompakt (64 Bit) | Erfordert zentrale Koordination |
CUID/CUID2 | Kollisionsresistente IDs | Kurz, geeignet für clientseitige Generierung | Kein offizieller Standard |
Nano ID | Generator für kleine, sichere und URL-freundliche eindeutige Zeichenfolgen | Kleiner als UUID, konfigurierbares Alphabet | Nicht standardisiert |
Short UUID | Kürzere Kodierung von Standard-UUIDs | Kompaktere Darstellung | Erfordert Konvertierung zu/von Standard-UUID |
Nil UUID | UUID mit allen Bits auf Null | Spezielle semantische Bedeutung | Nicht eindeutig (als Sonderwert verwendet) |
Minecraft UUID | UUIDs mit oder ohne Bindestriche | Kompatibel mit Standard-UUIDs | Nur Formatunterschiede |
Praktische Anwendungen
- Primärschlüssel in Datenbanken: Besonders in verteilten oder replizierten Datenbanken
- Verteilte Systeme: Entitäten in mehreren Systemen identifizieren
- Webanwendungen: Sitzungs-IDs, anonymes Benutzer-Tracking
- Content-Management: Bezeichner für Dokumente und Medien
- APIs: Bezeichner für Anfragen und Transaktionen zur Nachverfolgung und Fehlerbehebung
- Internet der Dinge: Geräteidentifikation ohne zentrale Registrierung
- Daten-Synchronisation: Datensätze in mehreren Datenspeichern identifizieren
- Software-Lizenzen: Eindeutige Produkt- oder Lizenzschlüssel