bitlvl
IT

Generatore di UUID e ULID

Genera identificatori con la sorgente casuale crittografica del browser, oppure incollane uno per scoprire di che tipo è e quando è stato creato.

Tipo
Formato
 

Ispeziona un identificatore

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Quale tipo dovrei usare?

UUID v4UUID v7ULID
Contenuto122 bit casualitimestamp a 48 bit in ms + 74 bit casualitimestamp a 48 bit in ms + 80 bit casuali
Ordinabile per tempoNoSìSì
Forma testualehex 8-4-4-4-12hex 8-4-4-4-1226 caratteri Base32 Crockford
StandardRFC 4122 / 9562RFC 9562 (2024)Specifica della comunità
Adatto ai databaseScarso come chiave primaria: gli inserimenti casuali frammentano gli indici B-treeBuono: le nuove righe finiscono in fondo all’indiceBuono, ma richiede una colonna a 128 bit o una stringa di 26 caratteri

Per un nuovo sistema, UUID v7 è il default sensato: è un UUID standard, ogni database e linguaggio lo accetta, e mantiene compatti gli indici. Usa v4 quando l’ID non deve rivelare quando è stato creato. ULID è una buona scelta dove conta la sua forma testuale più corta e adatta agli URL e l’ecosistema lo usa già.

Leggere i bit

In xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, la cifra M è la versione (4 o 7) e i primi bit di N sono la variante (8, 9, a o b per gli UUID standard). In un v7 le prime 12 cifre hex sono il tempo Unix in millisecondi; in un v1 il tempo è sparso in tre campi e le ultime 12 cifre sono di solito l’indirizzo MAC della macchina che lo ha creato. L’ispettore decodifica tutto questo.

Collisioni

Un UUID v4 ha 2¹²² possibilità. Per arrivare al 50% di probabilità di una singola collisione dovresti generarne circa 2,7 × 10¹⁸, grosso modo un miliardo al secondo per 85 anni. In pratica il rischio è una cattiva sorgente casuale, non la matematica, ed è per questo che questa pagina usa crypto.getRandomValues e non Math.random.

Domande

Che differenza c’è tra UUID e GUID?

Nessuna, in pratica. GUID è il nome che Microsoft dà allo stesso identificatore a 128 bit. Gli strumenti Windows spesso li scrivono in maiuscolo con le graffe, cosa che l’opzione di formato qui riproduce.

Questi UUID sono davvero casuali?

I bit casuali vengono dal generatore crittograficamente sicuro del browser (WebCrypto), la stessa sorgente usata per le chiavi. Non derivano dal tuo orologio o da qualcosa di prevedibile, a parte il fatto che v7 e ULID includono deliberatamente l’ora corrente.

Un UUID può essere ricondotto a me?

Un v4 no. Un v7 o un ULID rivelano quando sono stati creati. Un v1 può contenere l’indirizzo MAC della macchina che lo ha generato, ed è per questo che il v1 è caduto in disuso.

Dovrei usare un UUID come chiave primaria del database?

Sì, se ti servono ID generati dai client o tra più servizi, ma preferisci il v7 così gli inserimenti sono sequenziali. Memorizzalo in una colonna UUID nativa a 16 byte (PostgreSQL uuid, MySQL BINARY(16)) invece che in una stringa di 36 caratteri.

Cos’è l’UUID nullo?

00000000-0000-0000-0000-000000000000, definito come segnaposto che significa «nessun valore». RFC 9562 definisce anche un UUID massimo tutto a uno.