Estrazione della marca temporale da un UUID v7
Ricostruisce in data e ora in tempo coordinato universale la marca temporale al millesimo di secondo incorporata nei primi 48 bit di un UUID v7: basta incollare la stringa. Rileva anche le versioni diverse dalla settima e le anomalie nei bit di variante, e funge da conversione inversa dello strumento affine di generazione degli UUID v7.
Disposizione dei bit di un UUID v7
| Intervallo di bit | Campo | Descrizione |
|---|---|---|
| 0-47 | unix_ts_ms | Millesimi di secondo trascorsi dall'epoca Unix, memorizzati con l'ordine dei byte più significativi per primi. È il valore che questo strumento estrae. |
| 48-51 | version | Numero di versione dell'UUID. Per la settima è il valore fisso 0111, cioè 7 in esadecimale. |
| 52-63 | rand_a | Valore casuale a 12 bit. Alcune realizzazioni lo usano per conservare l'ordine all'interno dello stesso millesimo di secondo. |
| 64-65 | variant | Valore fisso 10 che indica la variante delle norme RFC 4122 e 9562. In esadecimale la cifra iniziale risulta 8, 9, a oppure b. |
| 66-127 | rand_b | Valore casuale a 62 bit: l'entropia che previene le collisioni. |
Che cosa significa estrarre la marca temporale da un UUID v7
L'UUID v7, standardizzato dalla RFC 9562 nel 2024, incorpora l'istante di creazione nei suoi primi 48 bit come marca temporale Unix in millisecondi. Per questo un insieme ordinato di UUID risulta in ordine di creazione, e per questo usarli come chiavi primarie mantiene bassa la frammentazione degli indici. Incollate qui un UUID e questo strumento recupera quei 48 bit come data e ora in UTC.
Riporta anche la versione e la variante. Se incollate qualcosa che non è un v7, la marca temporale viene comunque calcolata e mostrata, accompagnata da un avviso che il valore non è un v7. Un v4 casuale darà una data priva di senso, ma vederlo accadere è un buon modo per capire che cosa ciascun tipo di UUID trasporti davvero. Una tabella della disposizione dei bit mostra che cosa segue quei primi 48 bit. Tutto viene eseguito nel vostro browser.
Come leggere una marca temporale dentro un UUID
- Incollate l'UUID La forma standard di 36 caratteri con trattini, 8-4-4-4-12. Vanno bene sia maiuscole sia minuscole.
- Controllate versione e variante Un v7 non produce alcun avviso. Tutto il resto viene segnalato come non essendo un v7.
- Leggete l'ora recuperata Compare in tre forme: millisecondi Unix, ISO 8601 in UTC e l'ora locale del vostro dispositivo.
- Guardate la tabella dei bit Potete vedere che cosa occupa ciascun intervallo di bit dopo la marca temporale di 48 bit: la versione, la variante e la parte casuale.
Consigli per sfruttarlo al meglio
- L'analisi avviene interamente nel JavaScript del navigatore e l'UUID inserito non viene mai trasmesso ai serventi di toolbase.cc.
- Se usate UUID v7 come chiave primaria di una base di dati, potete risalire all'istante di creazione di una riga incollando qui la chiave, anche in assenza di una colonna dedicata alla data di creazione.
- Inserendo un UUID di versione diversa dalla settima, per esempio la quarta, compare un avviso, ma il valore ricavato meccanicamente dai primi 48 bit resta visibile: lo strumento si presta quindi anche a studiare le differenze fra i formati.
- Per generare gli identificativi usate lo strumento affine dedicato agli UUID v7: otterrete un formato che questo strumento sa riconvertire senz'altro.
- Incollando uno a uno gli UUID v7 presenti nei registri o nelle risposte delle interfacce, potete stimare l'istante in cui si sono verificati gli eventi di un sistema esterno.
Dove questo è utile
Recuperare quando è avvenuto un evento registrato
Anche un registro senza colonna della data può essere datato se le sue chiavi primarie sono v7, il che aiuta a ricostruire l'ordine dei fatti durante un incidente.
Confermare che le chiavi si ordinino per creazione
Inserite in sequenza gli UUID di più record e verificate che l'implementazione produca davvero valori ordinati nel tempo.
Decidere se adottare il v7
Vedere che cosa si riesce a estrarre rende concreto il compromesso: chiunque abbia il valore può leggere l'istante di creazione, il che è uno svantaggio ovunque quel momento sia sensibile.
Distinguere le versioni
Capire a occhio se un UUID ricevuto è un v4 o un v7 è difficile, e qui la risposta è immediata.
I termini degli UUID
- UUID v7
- La versione standardizzata dalla RFC 9562, che porta una marca temporale Unix in millisecondi nei primi 48 bit. L'ordinabilità nel tempo è ciò che la distingue soprattutto dal v4.
- Versione
- La cifra nella tredicesima posizione esadecimale, che indica come l'UUID è stato generato. In un v7 vale 7.
- Variante
- Un valore distinto che descrive la disposizione interna. Negli UUID conformi alla RFC 9562 la diciassettesima posizione è 8, 9, a o b.
- Millisecondi Unix
- Millisecondi trascorsi dal 1º gennaio 1970 alle 00:00:00 UTC. Quarantotto bit bastano fino all'anno 10889.
- In che cosa differisce il v4
- Un v4 è essenzialmente tutto casuale e non porta alcuna informazione su quando è stato creato. Perciò non si ordina per creazione, ma in cambio nessuno può leggerne il momento di origine.
Domande frequenti
A proposito — che cosa significa avere un orologio dentro un identificativo
La novità dell'UUID v7 sta nel fatto che l'identificativo stesso conserva in permanenza l'informazione sull'istante di generazione. Con l'UUID v4 occorreva una colonna apposita per sapere quando una riga fosse stata creata; con l'UUID v7 come chiave primaria, quell'istante si ricava meccanicamente dalla sola stringa. Questo strumento offre proprio quella ricostruzione, come conversione inversa dello strumento affine di generazione.
La proprietà torna particolarmente utile nell'analisi dei guasti e nelle migrazioni dei dati. Se il numero d'ordine rimasto in un vecchio registro, o l'identificativo di un evento ricevuto da un sistema esterno, è nel formato v7, si può accertare all'istante quando quella riga sia stata creata senza consultare alcuna colonna dedicata. Lo stesso vale per l'esame dei vecchi sistemi privi di quella colonna e per l'analisi degli UUID v7 emessi da altre aziende.
Il meccanismo richiede però qualche cautela. La marca temporale dipende dall'orologio di chi genera l'identificativo: se l'orologio del servente d'origine è sfasato, lo sarà anche il risultato. Va inoltre tenuto presente che l'estrazione meccanica di «qualcosa che somiglia a una marca temporale» anche da versioni diverse, come la quarta, è soltanto un'interpretazione di posizioni di bit e non garantisce affatto che il valore abbia un significato.