Vai al contenuto principale
FreeOnlineTools Go
Italiano
Confronto

UUID v1 vs v4 vs v5: Quale versione dovresti usare?

Di FreeOnlineTools Team · 2026-08-28 aggiornata

Risposta rapida

Utilizza UUID v4 (casuale) per impostazione predefinita: non necessita di coordinamento e presenta un rischio di collisione trascurabile. Utilizza v1 (basato sul tempo) solo quando hai bisogno di ID ordinabili in base al tempo e puoi proteggere l'ID del nodo. Utilizza v5 (spazio dei nomi+nome) quando sono necessari ID deterministici derivati ​​da un nome. Genera qualsiasi versione con il nostro generatore UUID gratuito.

Introduzione

Un UUID (Universally Unique Identifier) ​​è un identificatore a 128 bit reso come 36 caratteri in gruppi esadecimali 8-4-4-4-12, ad es. 123e4567-e89b-12d3-a456-426614174000. RFC 9562 definisce diverse versioni; i tre che incontrerai di più sono v1 (tempo + MAC), v4 (casuale) e v5 (spazio dei nomi + nome, SHA-1). Ciascuno di essi effettua diversi compromessi tra garanzie di unicità, ordinabilità e determinismo.

Passo dopo passo

  1. UUID v1 —basato su tempo e nodo

    v1 codifica l'attuale timestamp a 60 bit (intervalli di 100 ns dal 1582-10-15) e un ID nodo a 48 bit (solitamente l'indirizzo MAC). Gli ID generati sullo stesso nodo sono monotonicamente crescenti e ordinabili nel tempo. Rischio: l'indirizzo MAC fa trapelare l'identità dell'hardware e lo sfasamento dell'orologio tra i nodi può interrompere l'ordine.

  2. UUID v4 —casuale

    v4 utilizza 122 bit casuali (6 bit sono fissi per la versione/variante). Con 122 bit casuali, la probabilità di una collisione tra 2,71 trilioni di ID è del 50%: per qualsiasi carico di lavoro realistico la probabilità è effettivamente pari a zero. v4 non necessita di coordinamento e non rivela informazioni sull'host, rendendolo l'impostazione predefinita più sicura.

  3. UUID v5 —spazio dei nomi e nome (SHA-1)

    v5 esegue l'hashing di uno spazio dei nomi UUID e di una stringa del nome con SHA-1 per produrre un ID deterministico a 128 bit. La stessa coppia (spazio dei nomi, nome) produce sempre lo stesso UUID, che è ideale per la deduplicazione e gli ID stabili derivati ​​da chiavi naturali. v3 è la stessa idea ma usa MD5 (evitatelo).

  4. Confronta i compromessi

    v1 è ordinabile ma perde il MAC e necessita della sincronizzazione dell'orologio. v4 è casuale e privato ma non ordinabile. v5 è deterministico e deduplica ma non è casuale: indovinare il nome consente a un utente malintenzionato di riprodurre UUID. Scegli in base alla tua necessità di ordine, casualità o determinismo.

  5. Scegli la versione giusta per il tuo caso

    Chiavi primarie del database: v4 (o v7 nei sistemi più recenti per l'ordinabilità temporale). Sistemi distribuiti senza coordinamento: v4. ID deterministici da una chiave naturale (es. URL →UUID): v5. Log di controllo che beneficiano dell'ordine temporale: v1 con un ID nodo casuale protetto.

Esempi

UUID v1 (basato sul tempo, ordinabile)

Ingresso: Generato alle 2026-08-28T12:00:00Z sul nodo 00:11:22:33:44:55

Produzione: 1ef7c1d0-2d3b-11f0-8000-001122334455 (cifra versione '1', ordinabile in base all'ora)

UUID v4 (casuale)

Ingresso: Random generation

Produzione: f47ac10b-58cc-4372-a567-0e02b2c3d479 (cifra versione '4', bit casuali)

UUID v5 (deterministico da spazio dei nomi+nome)

Ingresso: Spazio dei nomi DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) + nome 'freeonlinetoolsgo.com'

Produzione: 74738ff5-5367-5958-9aeb-0c1f1f1f1f1f (lo stesso input produce sempre lo stesso output)

Problemi comuni

  • Memorizzazione degli UUID come VARCHAR(36) invece che come tipo BINARY/UUID nativo a 16 byte: questo spreca il doppio dello spazio di archiviazione e interrompe le prestazioni dell'indice. Utilizza un tipo di colonna nativo UUID, ove disponibile.
  • Utilizzo di v1 senza proteggere l'ID del nodo: l'indirizzo MAC predefinito fa trapelare l'identità dell'hardware e rappresenta un problema di privacy. Sostituirlo con un valore crittograficamente casuale a 48 bit per nodo.
  • Supponendo che le collisioni v4 siano impossibili: non lo sono: sono semplicemente astronomicamente improbabili. Con 122 bit casuali, sono necessari circa 2,71 trilioni di ID per una probabilità del 50%. Per 1 miliardo di ID la probabilità è ~0,0000000000000001.
  • Utilizzo di v3 (basato su MD5) invece di v5 (basato su SHA-1): MD5 non funziona, quindi è preferibile v5. Entrambi sono deterministici, ma la v5 ha una maggiore resistenza alle collisioni.

Suggerimenti

  • L'impostazione predefinita è v4 per quasi tutti i casi d'uso: è casuale, privata e a prova di collisione senza alcun coordinamento.
  • Se hai bisogno di ID casuali ordinabili in base al tempo, guarda UUID v7 (RFC 9562, 2024) che combina un timestamp Unix con bit casuali, migliore della v1 per i database moderni.
  • Utilizza v5 per generare ID stabili da chiavi naturali (URLs, indirizzi email) in modo che lo stesso input sia sempre associato allo stesso UUID — utile per la deduplicazione e idempotente APIs.
  • Genera UUID sul client quando possibile per evitare un viaggio di andata e ritorno al server: il nostro generatore UUID viene eseguito interamente nel tuo browser utilizzando crypto.getRandomValues().

Strumenti correlati

Guide correlate

Riferimenti