Generatore di ULID
Genera in blocco gli ULID, identificativi ordinabili cronologicamente che si possono usare in alternativa agli UUID.
Consigli per l'uso
- 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.
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.