Cos'è un UUID
Un UUID (Universally Unique Identifier) è un identificatore a 128 bit standardizzato (RFC 4122) rappresentato come stringa esadecimale nel formato 8-4-4-4-12: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx. Il valore M indica la versione e N indica la variante. Con 2^122 combinazioni possibili, la probabilità di collisione in uso pratico è astronomicamente bassa.
Le versioni principali
- UUID v1: basato su timestamp + indirizzo MAC. Ordinabile nel tempo ma espone informazioni hardware
- UUID v4: completamente casuale. Il più usato oggi per database e ID di entità
- UUID v5: hash SHA-1 di un namespace + nome. Deterministico e riproducibile (stesso input = stesso UUID)
- UUID v7 (nuovo): basato su timestamp in millisecondo + casualità. Ordinabile come v1, privato come v4
Come generare UUID in JavaScript
Nel browser moderno e in Node.js 19+: crypto.randomUUID() restituisce un UUID v4 in modo nativo e sicuro, senza librerie esterne. Per versioni precedenti o per i tipi v1, v5, v7 si usa il package npm 'uuid': import { v4 as uuidv4 } from 'uuid'; const id = uuidv4();
UUID vs ULID vs NanoID
- UUID v4: standard universale, leggibile da qualsiasi sistema; non ordinabile cronologicamente nel DB
- ULID: 128 bit, base32, ordinabile cronologicamente (ottimo per indici DB)
- NanoID: più compatto (21 caratteri), URL-safe, buona casualità; non standard RFC
Quando usare gli UUID
Gli UUID sono ideali per ID di entità in database distribuiti (dove un intero auto-increment creerebbe conflitti tra nodi), per identificatori pubblici nelle API (evitano l'enumeration attack possibile con ID sequenziali interi), per le sessioni e i token temporanei, e per qualsiasi contesto dove l'unicità deve essere garantita senza coordinazione centralizzata.