Curious TechieDev Toolbox
Tutte le Guide/Identificatori8 min read

Cos’è un UUID? Versioni, Entropia e Specifiche RFC 9562

Identificatori a 128 bit nei sistemi distribuiti: casualità in UUID v4 contro ordinamento temporale in UUID v7.

Punti Chiave
  • L’UUID è un identificatore univoco a 128 bit standardizzato da RFC 9562.
  • UUID v4 garantisce un’entropia casuale a 122 bit con probabilità di collisione irrisoria.
  • UUID v7 inserisce un timestamp temporale che ottimizza le scritture nei database.
  • Consente ai microservizi di generare chiavi primarie senza interrogare un server centrale.

I database distribuiti necessitano di chiavi primarie generabili in modo autonomo su nodi distinti. Lo standard internazionale di riferimento è l’UUID (Universally Unique Identifier).

1. La Struttura dell’UUID a 128 Bit

Standardizzato da RFC 9562, un UUID comprende 16 ottetti (128 bit) rappresentati come 32 cifre esadecimali divise in 5 gruppi separati da trattini:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = Versione (es. 4 o 7) | N = Variante (tipicamente 8, 9, a o b)

2. Matematica delle Collisioni e Sicurezza

Con 122 bit di pura casualità nell’UUID v4 (circa 5,3 × 10^36 combinazioni), servirebbe generare 1 miliardo di UUID al secondo per 85 anni per raggiungere il 50% di probabilità di collisione.

3. UUID v4 (Casuale) vs UUID v7 (Ordinato nel Tempo)

Se l’UUID v4 è puramente casuale, l’UUID v7 integra un timestamp Unix a 48 millisecondi nei bit superiori, offrendo un ordinamento cronologico automatico.

4. Indicizzazione Database e Frammentazione B-Tree

Le chiavi casuali v4 causano frequenti split negli indici B-Tree. Con UUID v7 le scritture avvengono in sequenza, aumentando la velocità di inserimento fino a 10 volte su PostgreSQL e MySQL.