Generatore UUID (v4 casuale, v7 ordinato per tempo)
Clicca per generare uno o più UUID. Usa v4 per ID completamente casuali e v7 per ID ordinabili per tempo che si ordinano naturalmente per tempo di creazione — utile per le chiavi di database.
Come funziona
Quando usare v4 vs v7
UUID v4 è puramente casuale — 122 bit casuali con due bit versione/variante, che danno circa 5,3 × 10³⁶ valori possibili. Due collisioni sono praticamente impossibili. Usa v4 ovunque non hai bisogno di ordinamento, come ID delle richieste API o identificatori utente anonimi.
UUID v7 (RFC 9562, pubblicato nel 2024) inizia con un timestamp Unix a 48 bit in millisecondi seguito da 74 bit casuali. Si ordinano lessicograficamente nell'ordine di creazione, il che è enorme per le prestazioni del database — le chiavi primarie ordinate per tempo significano che gli inserimenti vanno sempre alla fine del B-tree, senza suddivisioni casuali di pagine. Usa v7 per le nuove chiavi primarie del database.
Come funziona questo generatore
Sia v4 che v7 usano crypto.getRandomValues — la sorgente casuale sicura del browser, la stessa primitiva usata da HTTPS e dai gestori di password. v4 riempie 122 bit casualmente. v7 divide 48 bit di timestamp + 74 bit di casuale più i marker versione/variante per RFC.
La generazione avviene nel tuo browser. Gli UUID non vengono memorizzati o trasmessi. Se generi 100 UUID v4 la possibilità di una collisione tra di loro è astronomicamente piccola — ben al di sotto della possibilità che i raggi cosmici capovolgano i bit nella tua CPU.
Insidie comuni degli UUID
Gli UUID v4 come chiavi primarie del database danneggiano le prestazioni rispetto agli interi auto-incrementali perché i valori casuali causano suddivisioni delle pagine del B-tree durante gli inserimenti. v7 risolve questo problema — usa v7 se vuoi i vantaggi degli UUID senza il problema degli indici.
Non esporre gli UUID agli utenti dove la indovinabilità conta. Gli UUID v4 hanno 122 bit di entropia e sono inindovinabili. Gli UUID v7 rivelano il tempo di creazione, che va bene per la maggior parte degli usi ma è problematico se il tempo di creazione è sensibile.
Gli UUID hanno 36 caratteri inclusi i trattini (32 esadecimali + 4 trattini). Occupano 16 byte in binario o 36 byte in testo. Per colonne ad altissima cardinalità, considera di memorizzarli come BLOB binario / tipo UUID nativo invece di VARCHAR(36).
Domande frequenti
›Sono crittograficamente sicuri?
Sì. Sia v4 che v7 usano crypto.getRandomValues, l'API casuale sicura. v4 ha 122 bit di entropia; v7 ne ha 74.
›Perché v7 è migliore per le chiavi del database?
Perché gli UUID v7 si ordinano per tempo di creazione, gli inserimenti vanno sempre alla fine dell'indice B-tree invece di posizioni casuali. Questo evita le suddivisioni delle pagine e migliora drasticamente il throughput di scrittura.
›Due UUID possono collidere?
Teoricamente sì. Con v4 dovresti generare ~10¹⁸ prima di qualsiasi rischio di collisione al 50%. Con v7 il componente temporale riduce questo a circa 2⁷⁴ nello stesso millisecondo — ancora praticamente impossibile.
›Gli UUID sono uguali ai GUID?
Sì. GUID è il nome Microsoft per UUID. Stesso formato, stesse garanzie di unicità.
›Qual è il formato?
8-4-4-4-12 cifre esadecimali con trattini. 32 caratteri esadecimali totali + 4 trattini = 36 caratteri. Minuscolo per convenzione RFC.
›Dovrei usare v1 invece?
v1 include l'indirizzo MAC, che è una perdita di privacy. v7 sostituisce v1 per gli ID ordinati per tempo senza esporre gli identificatori hardware.
›Posso generare v4 in Base64 sicuro per URL?
Non direttamente qui. Codifica i 16 byte dell'UUID come Base64 sicuro per URL per ottenere un ID di 22 caratteri. Utile per URL più brevi.
›I dati escono dal mio browser?
No. La generazione avviene interamente nel tuo browser.
Strumenti correlati
Ultimo aggiornamento: