Generatore di ULID
Genera in blocco gli ULID, identificativi ordinabili cronologicamente che si possono usare in alternativa agli UUID.
Che cosa significa generare ULID
Generare ULID significa emettere in blocco identificatori univoci a livello globale che si ordinano per tempo: gli Universally Unique Lexicographically Sortable Identifier. Un ULID è una stringa di 26 caratteri in Crockford Base32 i cui primi 10 codificano l’istante di generazione e i restanti 16 provengono da una sorgente casuale crittograficamente sicura. A differenza di un identificatore del tutto casuale come l’UUID v4, il suo pregio maggiore è che ordinare alfabeticamente le stringhe le dispone anche nell’ordine in cui sono state create.
Questo strumento ricava la parte casuale da crypto.getRandomValues() della Web Crypto API: la sorgente è dunque crittograficamente sicura e non un semplice generatore pseudocasuale. Tutto avviene nel browser: né il numero che inserisce né gli identificatori prodotti vengono inviati a un server. Se ne possono generare fino a 1.000 per volta e l’uscita è disponibile in maiuscolo – la forma canonica della specifica – oppure in minuscolo.
Come si generano gli ULID
- Indichi quanti gliene servono Digiti il numero di ULID da emettere in una volta, da 1 a 1.000.
- Decida se li vuole in minuscolo Spunti l’opzione minuscolo se desidera uniformità per l’uso in una URL o in un log. Entrambe le forme sono valide secondo la specifica.
- Prema il pulsante di generazione Viene elencato insieme il numero richiesto di ULID, con l’ora corrente nella parte di marca temporale.
- Copi i risultati Li copi uno per uno oppure usi «copia tutto» per prelevare l’intero elenco separato da a capo.
Consigli per sfruttarlo al meglio
- Un ULID è composto di dieci caratteri iniziali che formano la marca temporale, cioè il momento della generazione, e di sedici caratteri casuali. Salvo per gli identificativi generati nello stesso millesimo di secondo, basta ordinarli come stringhe per disporli secondo l'ordine di creazione.
- Usare un UUID v4, del tutto casuale, come chiave primaria di una base di dati fa sì che la posizione di inserimento nell'indice sia casuale, favorendo la frammentazione degli indici ad albero; gli ULID, ordinandosi cronologicamente, occupano posizioni pressoché contigue e attenuano il problema.
- Un ULID si scrive con ventisei caratteri della codifica Base32 di Crockford — le cifre e le lettere maiuscole, escluse le quattro che si confondono facilmente — ed è quindi più breve di un UUID, che ne conta trentasei compresi i trattini, e si tratta in sicurezza anche negli ambienti che non distinguono maiuscole e minuscole.
- Per il confronto con i formati Nano ID e UUID v4, consultate anche la tabella riportata nella pagina affine dedicata alla generazione di Nano ID.
Quando generare ULID è utile
Chiavi primarie e identificatori di record
Adottando gli ULID come chiave primaria di una nuova tabella, può predisporre presto nello sviluppo un lotto di identificatori per record fittizi e dati iniziali.
Identificatori di evento in un sistema a eventi
Quando ogni evento di una coda di messaggi o di un sistema distribuito richiede un identificatore univoco, gli ULID si ordinano per tempo, il che agevola molto il seguire i log in ordine cronologico.
Identificatori di log e di traccia di prova
Produca subito identificatori nel formato reale per collaudare o presentare una piattaforma di log o uno strumento di tracciamento.
Confrontare con altri formati di identificatore
Se è indeciso fra ULID, UUID v4, UUID v7 o Nano ID per URL brevi, confronti prima aspetto e lunghezza reali. Veda anche la generazione di UUID, la generazione di UUID v7 e la generazione di Nano ID.
Termini legati agli ULID
- ULID
- Sigla di Universally Unique Lexicographically Sortable Identifier. Identificatore univoco a 128 bit i cui primi 48 bit contengono l’ora di generazione, così che il solo ordinamento delle stringhe li disponga in ordine cronologico.
- Crockford Base32
- Codifica che impiega 32 caratteri: le cifre 0–9 e le lettere A–Z private di I, L, O e U, visivamente equivocabili. Un ULID viene così codificato in 26 caratteri.
- Monotonicità
- Proprietà di un valore che cresce sempre nel tempo. Un ULID non garantisce l’ordine quando più identificatori nascono nello stesso millisecondo, ma l’estensione di generazione monotona prevista dalla specifica conserva la crescita anche allora.
- UUID
- Sigla di Universally Unique Identifier. Standard di identificatore univoco a 128 bit definito nella RFC 4122, scritto di norma con 36 caratteri esadecimali trattini compresi. È uno standard indipendente da ULID.
- Identificatori univoci nei sistemi distribuiti
- Meccanismo per cui più server o processi generano ciascuno identificatori privi di collisioni in modo indipendente, senza interpellare un emittente centrale. ULID e UUID uniscono ora di generazione e casualità per ridurre a un livello trascurabile la probabilità di collisione.
- Parte di marca temporale
- I primi 10 caratteri di un ULID: un valore a 48 bit che codifica in Crockford Base32 l’ora di generazione in millisecondi. È il nucleo del meccanismo che consente di dedurre l’ordine di generazione dal solo confronto fra stringhe.
Domande frequenti
A proposito — ULID, che ha portato il tempo nel mondo degli identificativi
La specifica di ULID fu pubblicata nel 2016 da Alizain Feerasta. L'UUID era già allora il mezzo standard per generare identificativi univoci nei sistemi distribuiti, ma la sua totale casualità, e quindi l'impossibilità di ordinarlo, risultava scomoda per l'efficienza degli indici delle basi di dati e per l'analisi cronologica dei registri: da quella insoddisfazione nacque la nuova specifica.
Anche l'UUID conosce del resto varianti che comprendono l'informazione temporale, come la versione 1, fondata sull'indirizzo fisico della scheda di rete e su una marca temporale, e la versione 7, standardizzata nel 2024, che unisce marca temporale e valori casuali. ULID si distingue però per essere una specifica autonoma, indipendente da quella degli UUID, votata a una progettazione più semplice e a una notazione compatta grazie alla codifica Base32.
Oggi esistono librerie per ULID in quasi tutti i principali linguaggi di programmazione e il formato è largamente adottato dove conta conservare l'ordine di generazione: identificativi di evento nei sistemi distribuiti, codici di tracciamento nei registri, chiavi primarie delle basi di dati. Con l'UUID v7, comparso nello stesso periodo, condivide molti presupposti progettuali: i due convivono come approcci diversi al medesimo problema degli identificativi ordinabili.