fixmint
IT

UUID v4 o v7: quale usare e perché conta

Di · · aggiornato il 8 novembre 2026 · 5 min di lettura

Usa UUID v4 quando ti serve un identificatore casuale e basta. Usa UUID v7 quando l'identificatore sarà una chiave di database, oppure quando vuoi che gli ID si ordinino in base al momento della creazione. Entrambi sono composti da 128 bit scritti nella stessa forma di 36 caratteri, quindi la differenza sta nel modo in cui i bit sono disposti. Il generatore UUID qui sotto crea l'una o l'altra versione, da 1 a 500 alla volta, direttamente nel tuo browser.

Generatore UUIDMi servono ID unici per il codiceUsalo gratis

Com'è fatto un UUID

Un UUID, o identificatore universalmente unico, è un numero di 128 bit scritto con 32 cifre esadecimali divise in cinque gruppi: 8, 4, 4, 4 e 12 cifre, separati da trattini. Un esempio è 3f2b8c1e-6d4a-4f7b-9c2e-8a1d5e0b7f63.

Due parti del numero sono fisse. Quattro bit indicano la versione, quindi il terzo gruppo inizia con 4 per la v4 o con 7 per la v7. Due bit indicano la variante, quindi il quarto gruppo inizia con 8, 9, a o b. Il resto contiene l'identificatore vero e proprio. Proprio per via dei bit di versione e di variante un UUID v4 ha 122 bit casuali, e non 128.

UUID v4: casuale

Un UUID v4 è casuale, a parte quei bit fissi. I suoi 122 bit casuali rendono estremamente improbabile una ripetizione. Supponi di generare un miliardo di UUID v4. La probabilità che due coincidano è circa n al quadrato diviso per il doppio dei valori possibili, che equivale a circa 10 elevato a -19. In altre parole, le collisioni non sono qualcosa per cui devi progettare delle contromisure.

Questa stima presuppone che il generatore attinga i suoi bit da una fonte di casualità crittografica. Un generatore prevedibile farebbe crollare questa stima. Questo strumento usa la fonte di casualità crittografica del browser, tramite crypto.randomUUID o crypto.getRandomValues.

UUID v7: prima il tempo

La v7 è definita dalla RFC 9562. I suoi primi 48 bit contengono il tempo Unix in millisecondi, quindi un ID creato più tardi ha una prima parte maggiore di un ID creato prima. Seguono i bit di versione, poi bit casuali, i bit di variante e altri bit casuali. Una parte dello spazio casuale può contenere un contatore, che mantiene gli ID in ordine quando se ne generano più d'uno nello stesso millisecondo.

Poiché il tempo viene per primo, ordinare gli ID v7 come testo, in un'unica forma coerente, li ordina per momento di creazione, fino al millisecondo. Questo funziona perché le cifre esadecimali hanno una larghezza fissa e il tempo si trova nei primi caratteri.

Il tempo è anche visibile. Chiunque legga un UUID v7 può capire più o meno quando è stato creato. Puoi verificarlo tu stesso con il campo Ispeziona nel generatore UUID, che riconverte i primi 48 bit in data e ora.

Perché la v7 si adatta agli indici dei database

Un indice di database è di solito un B-tree, una struttura mantenuta in ordine per chiave. Quando la chiave è casuale, come nella v4, ogni nuova riga finisce in un punto casuale dell'indice. Il database deve quindi scrivere in molte parti diverse dell'indice, il che provoca più divisioni di pagina e più cache miss. Su una tabella grande, questo lavoro si accumula.

Una chiave v7 è maggiore di quasi tutte le chiavi già presenti nell'indice, perché la sua parte temporale cresce. Le nuove righe vengono aggiunte vicino alla fine dell'indice, un po' come farebbe un numero autoincrementale. Le pagine recenti dell'indice restano in memoria e le scritture restano ordinate. La differenza si nota soprattutto nelle tabelle grandi che crescono di continuo, e si percepisce a malapena in una tabella piccola.

Come scegliere tra v4 e v7

  • Chiavi primarie di database, o qualsiasi tabella che cresce nel tempo: v7. L'indice resta ordinato.
  • Log, eventi o messaggi che ordini spesso per data: v7, perché l'ID stesso porta con sé l'ordine.
  • ID pubblici in cui il momento della creazione deve restare privato: v4. Un ID v7 rivela quando è stato creato.
  • Molti dispositivi con orologi inaffidabili: sia v4 sia v7 restano unici, perché il lavoro lo fanno i bit casuali. Solo l'ordinamento della v7 dipende dal fatto che gli orologi siano corretti.

Entrambe le versioni sono standard, ma le librerie più vecchie potrebbero conoscere solo la v4. Per molti anni la RFC 4122 ha descritto le versioni da 1 a 5. La RFC 9562 è stata pubblicata a maggio 2024, sostituisce la RFC 4122 e definisce le versioni 6, 7 e 8. Prima di farci affidamento, verifica che la versione della libreria che usi supporti la v7.

Come memorizzare gli UUID

Un UUID scritto come testo occupa 36 caratteri. I suoi 16 byte possono essere memorizzati in forma binaria, che occupa molto meno spazio. Molti database hanno un tipo UUID nativo o una colonna binaria da 16 byte proprio per questo scopo, e il confronto è più veloce rispetto al testo.

Scegli un formato e mantienilo. Maiuscole, minuscole, trattini e parentesi graffe sono lo stesso UUID per una persona, ma un database o un confronto di stringhe potrebbe trattarli come valori diversi. Le opzioni del generatore per maiuscole, assenza di trattini e parentesi graffe servono per i sistemi che richiedono quelle forme.

Non usare mai un UUID come segreto

Un UUID è un identificatore, non una password, un token di sessione o una chiave di accesso. È progettato per essere unico, non per essere impossibile da indovinare. Un UUID v7 porta inoltre con sé il momento della creazione. E gli identificatori finiscono in link, log, email e screenshot, dove chiunque li veda può riutilizzarli.

Il controllo degli accessi deve stare sul server. Chi conosce un ID non dovrebbe automaticamente poter vedere o modificare il record a cui si riferisce. Per password, frasi d'accesso o token, usa un generatore pensato per i segreti. Il generatore di password crea password casuali o frasi di parole direttamente sul tuo dispositivo, con una casualità sicura, e ne stima la robustezza. Per capire perché lunghezza e casualità contano, leggi password sicure ed entropia.

Come usare lo strumento

  1. Scegli la versione 4 per ID casuali, oppure la versione 7 per ID che si ordinano per tempo.
  2. Imposta il numero, da 1 a 500 alla volta.
  3. Seleziona maiuscole, nessun trattino o nessuna parentesi graffa se il tuo codice richiede una forma precisa.
  4. Copia tutti gli ID, oppure scarica l'elenco come file .txt.
  5. Incolla un UUID qualsiasi in Ispeziona per leggerne la versione, la variante e, per la v7, il tempo incorporato.

Risposte rapide

Un UUID v4 è unico? In pratica sì. I suoi 122 bit casuali rendono una ripetizione così improbabile che non serve verificarla.

Devo usare la v7 per tutto? Non sempre. Usa la v7 per le chiavi di database e per tutto ciò che si ordina per tempo. Usa la v4 quando il momento della creazione deve restare nascosto.

Posso usare un UUID come password? No. È un identificatore. Per tutto ciò che deve restare segreto, usa un generatore di password.

Lo strumento invia gli ID da qualche parte? No. Gli ID vengono generati e mostrati nel tuo browser e non vengono inviati a un server.

Tradotto dal Originale in inglese con l'assistenza dell'IA.

Commenti

    Nessun commento per ora. Sii il primo.

    La tua valutazione (facoltativa)

    La tua email non viene mai mostrata né conservata.

    Copertina di Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

    Perché i dataset pubblici, gratuiti e aperti plasmeranno l'intelligenza artificiale generale tanto quanto gli algoritmi e la potenza di calcolo.

    $4.99Acquistalo su GumroadIn inglese