Eine UUID ist eine 128 Bit lange Kennung, die ohne zentrale Vergabestelle eindeutig sein soll. Version 4 erreicht das durch Zufall: 122 der 128 Bit werden gewürfelt, sechs sind für Version und Variante reserviert.
Damit lassen sich Datensätze in verteilten Systemen benennen, ohne dass irgendwer nachfragen muss, welche Nummer als nächste frei ist.
Warum 122 zufällige Bit reichen
Die Zahl der möglichen Werte liegt bei etwa 5,3 mal zehn hoch 36. Um mit einer Wahrscheinlichkeit von einem Prozent auf eine Doppelung zu stoßen, müsste man rund 2,7 Billionen UUIDs erzeugen — das ist das Geburtstagsparadoxon, angewandt auf einen sehr großen Raum.
Entscheidend ist dabei die Qualität des Zufalls. Ein schwacher Zufallsgenerator macht den ganzen Ansatz wertlos; deshalb benutzen ernsthafte Umsetzungen die kryptografische Quelle des Betriebssystems, so wie es dieses Werkzeug im Browser über die Web-Crypto-Schnittstelle tut.
Version 4 und die anderen
Version 1 enthält Zeitstempel und MAC-Adresse und verrät damit Ort und Zeit ihrer Entstehung. Version 4 ist reiner Zufall. Version 7, seit 2024 im Standard, stellt einen Zeitstempel voran und bleibt dadurch sortierbar — ein handfester Vorteil für Datenbankindizes.
Für Primärschlüssel in großen Tabellen ist genau das der bekannte Nachteil von Version 4: Weil die Werte zufällig verteilt sind, springt jede Einfügung an eine andere Stelle des Index. Version 7 oder ein separater fortlaufender Schlüssel lösen das.