L'IBAN italiano, come tutti gli IBAN, include due cifre di controllo calcolate con l'algoritmo standard MOD-97 (ISO 7064): bastano per rilevare un errore di trascrizione, ma l'IBAN resta comunque un identificativo strutturato e assegnato centralmente da una banca. Un UUID segue una logica opposta — non contiene alcuna cifra di controllo perché non serve verificare una trascrizione manuale, e può essere generato in modo completamente indipendente su qualsiasi macchina, senza alcuna autorità centrale.
Versioni di UUID
- v1 — basata sull'ora corrente e sull'indirizzo MAC della scheda di rete. Garantisce l'unicità, ma rivela parzialmente quando e su quale dispositivo è stato creato l'identificatore.
- v4 — completamente casuale (a parte alcuni bit riservati che indicano la versione). L'opzione più comune oggi proprio perché non trapela informazioni collaterali.
- v5 — deterministica, calcolata come hash di un namespace e di una stringa — lo stesso input dà sempre lo stesso UUID.
Perché la probabilità di collisione è praticamente nulla
In un UUID v4, 122 bit sono casuali. Anche generando miliardi di UUID al secondo per secoli, la probabilità di almeno una collisione rimane astronomicamente piccola — un fatto matematicamente fondato sul paradosso del compleanno per uno spazio di queste dimensioni.
A cosa serve
- Generare chiavi primarie di database senza un contatore centrale o coordinamento tra server.
- Creare identificatori di sessione, richiesta o transazione in sistemi distribuiti, senza bisogno di un ente assegnatore centrale come per un IBAN.
- Evitare ID sequenziali prevedibili, facili da enumerare (a differenza di
1, 2, 3...).
UUID v7: un compromesso tra casualità e ordinamento
Un UUID v4 completamente casuale influisce negativamente sulle prestazioni degli indici del database — i nuovi record vengono inseriti in posizioni caotiche dell'albero dell'indice invece che alla fine. Il più recente UUID v7 risolve questo problema incorporando un timestamp nei primi bit dell'identificatore: i valori restano praticamente unici come v4, ma si ordinano naturalmente per tempo di creazione, come un contatore sequenziale.