UUIDs

UUIDs (RFC 4122) sind Identifikatoren, die dezentral erzeugt werden können und deren Eindeutigkeit (nahezu) garantiert ist.

Format

Eine UUID besteht aus 8 Bytes (16 hexadezimalen Zeichen), die durch '-' in fünf Blöcke aufgeteilt werden.

aaaaaaaa-bbbb-Xccc-Yddd-eeeeeeeeeeee

Einige Bits haben dabei eine besondere Bedeutung:

  • Die vier Bits von X repräsentieren die Version der UUID.
  • Die drei most-significant Bits von Y repräsentieren die Variante. Die in RFC 4122 spezifizierte Variante ist 10xx.

nil

Bei der leeren UUID werden alle Bits auf '0' gesetzt.

00000000-0000-0000-0000-000000000000

Version 1: time based

Diese Version verwendet einen 60 Bit langen Zeitstempel (10tel Mikrosekunden seit 1582-10-15 UTC) in Kombination mit der Node-ID (MAC-Adresse des Systems) und einem Zähler. Um keine Informationen über das erzeugende System preiszugeben, kann anstatt der MAC-Adresse und des Zählers auch eine 62 Bit lange Zufallszahl verwendet werden.

Die einzelnen Blöcke der UUID beinhalten dabei:
a: Timestamp (niederwertige Bits)
b: Timestamp (mittelwertige Bits)
c: Timestamp (Bits mit höchster Wertigkeit)
d: Zähler
e: Node-ID

Version 4: random

Bei dieser Version der UUID enthalten alle verfügbaren Bits zufällige Werte. Damit ergibt sich eine 122 Bit lange Zufallszahl.