Cos'è UUID v6?
Versione UUID 6 è un identificatore a 128 bit basato sul tempo (stringa di 36 caratteri) proposto come miglioramento rispetto a UUID v1. Consiste in:
- Timestamp riordinato: timestamp a 60 bit dal più significativo al meno significativo
- Sequenza di clock: contatore a 14 bit per regolazioni dell'orologio
- ID nodo: valore a 48 bit (tipicamente indirizzo MAC)
Esempio di formato: 1eb527d6-e927-6511-9a03-0242ac130003
Come funziona UUID v6
- Calcola il timestamp corrente (intervalli di 100ns dal 15-10-1582)
- Riordina i bit del timestamp per un ordinamento migliore (bit più significativi per primi)
- Ottieni/incrementa la sequenza di clock a 14 bit (per unicità se l'orologio si sposta indietro)
- Ottieni ID nodo a 48 bit (di solito dall'indirizzo MAC)
- Imposta i bit di versione (0110) e i bit di variante (10)
- Assembla come 32 cifre esadecimali con trattini: formato 8-4-4-4-12
Vantaggi e considerazioni
Advantages | Considerations |
---|---|
|
|
Struttura UUID v6
Bits | Content |
---|---|
0-47 | Bit alti 48 del timestamp |
48-51 | Versione (0110 per v6) |
52-59 | Bit bassi 8 del timestamp |
60-63 | Bit alti 4 del timestamp |
64-65 | Variante (10 per RFC4122) |
66-79 | Sequenza di clock (14 bit) |
80-127 | ID nodo (48 bit) |
UUID v6 vs. altre versioni
Version | Basato su | Caso d'uso | Privacy |
---|---|---|---|
UUID v1 | Tempo + MAC | ID ordinati per tempo | ⚠️ Rivela MAC |
UUID v3 | Namespace + MD5 | ID deterministici | ✅ Privato |
UUID v4 | Random | ID casuali sicuri | ✅ Privato |
UUID v5 | Namespace + SHA-1 | ID deterministici | ✅ Privato |
UUID v6 | Tempo (riordinato) | ID ordinabili | ⚠️ Rivela MAC |
UUID v7 | Tempo + casuale | ID ordinabili | ✅ Privato |
Casi d'uso comuni
- Chiavi di database ordinabili per tempo: Per ordinamento cronologico
- Database distribuiti: Con indicizzazione ordinata per tempo
- Voci di log: Con ordine cronologico naturale
- Tracce di audit: Con timestamp incorporati
- Accodamento messaggi: Per elaborazione basata sul tempo
- Registri delle transazioni: Con ordinamento cronologico
Domande frequenti
Qual è la differenza tra UUID v1 e v6?
UUID v6 riordina i bit del timestamp da UUID v1 per renderlo naturalmente ordinabile in ordine lessicografico. Il contenuto è identico a v1, solo riordinato.
UUID v6 è uno standard ufficiale?
UUID v6 è attualmente una bozza di specifica nel documento proposto RFC 4122bis. Non è ancora uno standard RFC ufficiale ma è implementato in molte librerie UUID.
Posso estrarre il tempo di creazione da UUID v6?
Sì. La componente timestamp può essere estratta dai bit 0-59 e convertita nuovamente in un valore datetime.
Gli UUID v6 sono ordinabili per data di creazione?
Sì. A differenza di v1, UUID v6 posiziona i bit del timestamp dall'ordine dal più significativo al meno significativo, permettendo un confronto lessicografico (stringa) diretto che corrisponde all'ordine cronologico.
UUID v6 espone il mio indirizzo MAC?
Per impostazione predefinita, sì. Come UUID v1, la maggior parte delle implementazioni usa l'indirizzo MAC per l'ID nodo. Le implementazioni orientate alla privacy possono invece usare ID nodo casuali.