Cosa sono gli UUID?
UUID (Identificatore Unico Universale) è un formato di identificatore standardizzato progettato per essere univoco a livello globale nello spazio e nel tempo. Gli UUID sono valori a 128 bit tipicamente rappresentati come 32 cifre esadecimali, visualizzati in cinque gruppi separati da trattini: 123e4567-e89b-12d3-a456-426614174000
.
Gli UUID sono definiti dallo standard RFC 9562 (che sostituisce il precedente RFC 4122) e sono utilizzati su piattaforme informatiche per identificare informazioni senza richiedere registrazione o coordinamento centralizzato.
Formato UUID
Tutti gli UUID condividono un formato comune composto da 36 caratteri (32 cifre esadecimali più 4 trattini) disposti nel modello:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Dove:
x
è una qualsiasi cifra esadecimale (0-9, a-f)M
indica la versione UUID (1-7)N
indica la variante UUID (tipicamente 8, 9, A o B per UUID moderni)
Confronto tra versioni UUID
Version | Name | Metodo di generazione | Time-ordered | Casi d'uso |
---|---|---|---|---|
UUID v1 | Timestamp | Timestamp corrente + ID nodo (MAC) | Sì (parzialmente) | Logging, sistemi distribuiti |
UUID v3 | Basato su nome (MD5) | Hash MD5 di namespace + nome | No | ID coerenti per lo stesso input |
UUID v4 | Random | Numeri casuali o pseudo-casuali | No | Uso generale, il più comune |
UUID v5 | Basato su nome (SHA-1) | Hash SHA-1 di namespace + nome | No | ID coerenti con hash più forte |
UUID v6 | Timestamp riordinato | Timestamp (ordinato per ordinamento) | Yes | Chiavi database, record ordinabili per tempo |
UUID v7 | Timestamp Unix Epoch | Timestamp Unix + dati casuali | Yes | Identificatori ordinabili moderni |
UUID nullo | UUID zero | Tutti zeri | N/A | Valore speciale, marcatore non inizializzato |
Vantaggi degli UUID
- Nessuna coordinazione richiesta: Genera ID senza coordinamento centrale
- Unicità globale: Probabilità di collisione estremamente bassa
- Lunghezza fissa: Rappresentazione coerente di stringa a 36 caratteri
- Cross-Platform: Supportato praticamente in tutti i linguaggi di programmazione
- Versatile: Versioni diverse per casi d'uso differenti
Alternative UUID non standard
Tipo di ID | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Implementazione UUID di Microsoft | Funzionalmente equivalente a UUID | Alcune differenze di implementazione in sistemi più vecchi |
ULID | Identificatore univoco universale ordinabile lessicograficamente | Ordinabile lessicograficamente, timestamp prima, case-insensitive | Più recente, adozione meno diffusa |
ID Snowflake | Sistema ID distribuito di Twitter | Ordinabile per tempo, compatto (64-bit) | Richiede coordinamento centrale |
CUID/CUID2 | ID resistenti alle collisioni | Corto, adatto per generazione lato client | Non uno standard ufficiale |
Nano ID | Generatore di ID unici piccoli, sicuri e compatibili con URL | Più piccolo di UUID, alfabeto configurabile | Non standardizzato |
UUID corto | Codifica più corta degli UUID standard | Rappresentazione più compatta | Richiede conversione da/a UUID standard |
UUID nullo | UUID con tutti i bit impostati a zero | Significato semantico speciale | Non univoco (usato come valore speciale) |
UUID di Minecraft | UUID con o senza trattini | Compatibile con UUID standard | Solo differenze di formattazione |
Applicazioni pratiche
- Chiavi primarie di database: Specialmente in database distribuiti o replicati
- Sistemi distribuiti: Identificare entità attraverso più sistemi
- Applicazioni web: Identificatori di sessione, tracciamento utenti anonimi
- Gestione contenuti: Identificatori di documenti e media
- APIs: Identificatori di richieste e transazioni per tracciamento e debug
- Internet delle cose: Identificazione dispositivi senza registrazione centrale
- Sincronizzazione dati: Identificazione record attraverso più archivi dati
- Licenze software: Chiavi prodotto o licenza uniche