Curious TechieDev Toolbox
Alle Leitfäden/Identifikatoren8 min read

Was ist eine UUID? Versionen, Entropie & RFC 9562

Eindeutige 128-Bit-Bezeichner in verteilten Systemen: UUID v4 Zufall versus zeitbasierte UUID v7 Indexierung.

Wichtigste Erkenntnisse
  • Eine UUID ist ein 128-Bit-Identifikator, geregelt in der aktuellen Spezifikation RFC 9562.
  • UUID v4 nutzt 122 Bits kryptographischen Zufall für praktisch kollisionsfreie Schlüssel.
  • UUID v7 enthält einen 48-Bit-Zeitstempel zur Vermeidung von Datenbankfragmentierung bei B-Tree-Indizes.
  • Ermöglicht verteilten Systemen die autonome Primärschlüsselerzeugung ohne zentrale Datenbankabfragen.

Verteilte Datenbanken und Microservices erfordern Primärschlüssel, die autonom auf beliebigen Servern ohne zentralen Zähler erzeugt werden können. Der weltweite Standard hierfür ist der UUID (Universally Unique Identifier).

1. Struktur des 128-Bit-UUID

Gemäß RFC 9562 besteht ein UUID aus 16 Oktetten (128 Bits), dargestellt als 32 Hexadezimalzeichen in fünf Blöcken mit Bindestrichen:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = Versionsnummer (z. B. 4 oder 7) | N = Variante (typischerweise 8, 9, a oder b)

2. Kollisionsmathematik & Sicherheit

Mit 122 Bits Entropie bei UUID v4 (ca. 5,3 × 10^36 Möglichkeiten) müsste man 85 Jahre lang jede Sekunde 1 Milliarde UUIDs generieren, um eine 50-prozentige Kollisionschance zu erreichen.

3. UUID v4 (Zufällig) vs UUID v7 (Zeitlich sortiert)

Während UUID v4 rein zufällig ist, bettet UUID v7 einen 48-Bit-Unix-Millisekunden-Zeitstempel in den höchstwertigen Bits ein, was eine natürliche zeitliche Sortierung ermöglicht.

4. Datenbank-Indexierung & B-Tree-Fragmentierung

Zufällige UUID-v4-Schlüssel verursachen in B-Tree-Indizes starke Seitenfragmentierung. UUID v7 schreibt sequentiell am Indexende und beschleunigt Schreibvorgänge in PostgreSQL und MySQL um bis zu das Zehnfache.