In questo articolo
Cos'e un UUID?
Un UUID (Universally Unique Identifier) e un valore a 128 bit utilizzato per identificare in modo univoco le informazioni nei sistemi informatici. Scritto come 32 cifre esadecimali visualizzate in cinque gruppi separati da trattini, un UUID appare come 550e8400-e29b-41d4-a716-446655440000.
Gli UUID sono progettati per essere globalmente unici senza necessita di un'autorita di registrazione centrale. Questo li rende ideali per sistemi distribuiti dove piu nodi devono generare identificatori indipendentemente senza collisioni.
Versioni UUID spiegate
Lo standard UUID definisce diverse versioni, ciascuna con un metodo di generazione diverso. Il numero di versione appare come il 13esimo carattere.
- Versione 1 (v1) — basata sul tempo: combina il timestamp corrente con l'indirizzo MAC della macchina. Garantisce l'unicita ma espone informazioni hardware
- Versione 3 (v3) — basata sul nome con MD5: genera un UUID deterministico attraverso l'hashing di un namespace e un nome con MD5
- Versione 4 (v4) — casuale: la versione piu utilizzata. Tutti i bit tranne i campi versione e variante sono generati casualmente
- Versione 5 (v5) — basata sul nome con SHA-1: come v3 ma usa SHA-1. Preferita alla v3 per nuove implementazioni
- Versione 7 (v7) — casuale ordinata per timestamp: un formato piu recente che combina un timestamp Unix con bit casuali
Prova gratuitamente — nessuna registrazione richiesta
Valida un UUID →Come funziona la validazione UUID
Validare un UUID comporta la verifica sia del formato che delle regole strutturali. Un UUID valido deve corrispondere al pattern esadecimale canonico 8-4-4-4-12.
- Controllo formato — la stringa deve contenere esattamente 32 caratteri esadecimali disposti in cinque gruppi separati da quattro trattini
- Controllo versione — il 13esimo carattere deve essere un numero di versione valido (1, 2, 3, 4, 5, 6, 7 o 8)
- Controllo variante — il 17esimo carattere deve indicare la variante RFC 4122 (8, 9, a o b)
Casi d'uso comuni
Gli UUID sono la scelta predefinita per gli identificatori in molti domini dello sviluppo software moderno.
- Chiavi primarie del database — gli UUID consentono di generare chiavi lato client senza round-trip al database
- Identificatori risorse API — esporre UUID invece di interi sequenziali previene attacchi di enumerazione
- ID di sessione e correlazione — gli UUID tracciano le richieste attraverso i microservizi
- Denominazione file e oggetti — i sistemi di archiviazione cloud usano UUID per evitare collisioni di nomi
Best practice
Scegliere la versione UUID corretta e gestirli correttamente puo prevenire bug sottili e problemi di prestazioni.
- Usa v4 per identificatori casuali generici — e la scelta piu comune senza dipendenze esterne
- Usa v7 quando servono identificatori ordinabili per tempo — gli UUID v7 si ordinano cronologicamente
- Memorizza gli UUID come binario a 16 byte nei database invece di stringhe di 36 caratteri
- Valida sempre gli UUID ricevuti da input esterni — non dare mai per scontato che le stringhe fornite siano ben formate
Domande frequenti
Due UUID possono essere uguali?
Sebbene teoricamente possibile, la probabilita di collisione con UUID v4 e astronomicamente bassa. Dovresti generare circa 2,7 quintilioni di UUID per avere il 50 percento di possibilita di una singola collisione.
Un UUID e case-sensitive?
No. Lo standard RFC 4122 specifica che gli UUID devono essere mostrati in minuscolo, ma le implementazioni devono accettare sia maiuscole che minuscole come equivalenti.
Dovrei usare UUID o ULID?
Gli ULID sono identificatori a 128 bit ordinabili lessicograficamente. Se hai bisogno di ordinabilita senza la complessita di UUID v7, gli ULID sono una buona alternativa.