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.

Consigli per l'uso

  • 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.

Domande frequenti

La norma RFC 9562 stabilisce che dei 128 bit i primi 48 contengano stabilmente una marca temporale Unix al millesimo di secondo, con l'ordine dei byte più significativi per primi. Basta quindi convertire in numero le prime dodici cifre esadecimali e interpretarle come millesimi di secondo per ricostruire l'istante di generazione.

Essendo un valore del tutto casuale, la «marca temporale» estratta è un numero privo di significato e di relazione con l'istante reale di generazione. Lo strumento esamina la cifra della versione e mostra un avviso, ma continua a riportare, a titolo di riferimento, il valore ricavato meccanicamente dai primi 48 bit.

La specifica dell'UUID v7 prevede la precisione del millesimo di secondo. Se più identificativi sono generati nello stesso millesimo, i primi 48 bit coincidono e la distinzione è affidata ai valori casuali: il loro ordine di generazione non è quindi ricostruibile.

Le norme RFC 4122 e 9562 stabiliscono che la prima cifra esadecimale del quarto gruppo sia 8, 9, a oppure b. Se assume un altro valore, cioè da 0 a 7 oppure da c a f, l'identificativo potrebbe provenire da una logica di generazione non standard o presentare bit corrotti: di qui l'avviso.
Tool-kun

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.