Strumenti per sviluppatori
GUID vs UUID: qual è la differenza?
GUID e UUID di solito indicano lo stesso identificatore a 128 bit, ma versione, formato, ordinamento e requisiti dei sistemi restano importanti.
Di Vigneshwaran Vijayakumar, sviluppatore ed editore | | Revisionato secondo la politica editoriale di ClockTools
Sommario
GUID e UUID di solito descrivono lo stesso tipo di identificatore: un valore di 128 bit progettato per essere univoco senza chiedere a un contatore centrale il numero successivo. Le parole provengono da diverse tradizioni di denominazione. UUID è il termine standard, mentre GUID è particolarmente comune nel software Microsoft e negli strumenti per sviluppatori.
Questa risposta breve è utile, ma non risolve ogni questione pratica. Due identificatori possono condividere la nota struttura testuale 8-4-4-4-12 e usare comunque versioni UUID, regole di generazione, criteri di ordinamento o convenzioni di serializzazione binaria diversi. Quando una colonna di database, un'API o un'applicazione usa il termine GUID, è più sicuro verificare il formato e la versione accettati anziché affidarsi solo al nome.
Usa il generatore GUID di ClockTools quando sono necessari valori UUID v4 o UUID v7 generati dal browser, output in blocco, convalida o formattazione pronta per l'esportazione. I passaggi di generazione e convalida vengono eseguiti localmente nel browser.
GUID vs UUID: sono la stessa cosa?
Nella maggior parte delle attività quotidiane di sviluppo, GUID e UUID sono nomi intercambiabili per un identificatore a 128 bit. L’attuale standard IETF, RFC 9562, rileva esplicitamente che i UUID sono noti anche come identificatori univoci globali. Un valore come 550e8400-e29b-41d4-a716-446655440000 può quindi essere chiamato UUID o GUID senza modificarne i caratteri.
La distinzione importante è tra un nome e un schema di generazione. Chiamare un valore GUID non indica se usa la versione 4, la versione 7, una versione precedente basata sul tempo o un metodo specifico di una piattaforma. Chiamarlo UUID non garantisce che un'applicazione accetti tutte le versioni standardizzate. Il nome identifica il tipo di dato generale; la versione e i requisiti concordati tra i sistemi ne determinano il comportamento.
| Domanda | GUID | UUID |
|---|---|---|
| Contesto tipico | API Microsoft, .NET, Windows, SQL Server | Standard Internet, database, sistemi distribuiti, API |
| Dimensione abituale | 128 bit | 128 bit |
| Forma testuale familiare | Gruppi esadecimali di lunghezza 8-4-4-4-12 | Gruppi esadecimali di lunghezza 8-4-4-4-12 |
| Il nome specifica una versione? | No | No |
| I termini possono riferirsi allo stesso valore? | Sì | Sì |
Questo è il motivo per cui un confronto tra GUID e UUID dovrebbe concentrarsi meno su quale parola sia "corretta" e più sui requisiti di sistema dietro la parola.
Perché ci sono due nomi?
UUID significa identificatore universalmente univoco. È la terminologia usata dagli standard IETF che definiscono la struttura, le varianti, le versioni, la rappresentazione testuale e i criteri di generazione. GUID significa identificatore univoco globale e si è affermato sulle piattaforme Microsoft. Il tipo .NET System.Guid è un esempio familiare.
Entrambi i nomi sono rimasti in uso perché gli ecosistemi software conservano il proprio vocabolario per compatibilità. Un'API Microsoft può esporre un Guid, uno schema PostgreSQL può usare una colonna di tipo uuid e un'API JSON può chiamare il campo id. Tutti e tre possono contenere lo stesso valore testuale canonico.
Non occorre rinominare ogni campo GUID in UUID solo per una questione terminologica. Occorre invece documentare la versione accettata, l'eventuale distinzione tra maiuscole e minuscole, l'accettazione delle parentesi graffe e la serializzazione del valore quando passa da un sistema all'altro.
Che aspetto ha un UUID?
Il formato comune leggibile dall'uomo contiene 32 cifre esadecimali separate in cinque gruppi:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxLe lunghezze dei gruppi sono 8, 4, 4, 4 e 12. Includendo quattro trattini, la stringa canonica è lunga 36 caratteri. M indica la versione nibble nei layout coperti dallo standard, mentre i bit rappresentati da N identificare la variante. Ad esempio, il 4 dentro 550e8400-e29b-41d4-a716-446655440000 identifica UUID versione 4.
L'uso di maiuscole o minuscole nelle cifre esadecimali non cambia il valore numerico. A716 e a716 rappresentano gli stessi bit. Trattini, parentesi graffe, il prefisso urn:uuid: o un formato compatto possono cambiare la stringa accettata da un parser, ma non necessariamente l'identificatore sottostante. È uno dei motivi per cui ClockTools separa la generazione dalla formattazione.
In cosa differiscono UUID v4 e UUID v7?
UUID v4 è la versione casuale ampiamente diffusa. La maggior parte dei bit disponibili riceve valori da una sorgente casuale o pseudocasuale, mentre i bit richiesti vengono impostati per indicare versione e variante. È adatta quando gli identificatori non devono rivelare l'ordine di creazione e quando la generazione avviene in modo indipendente su molti client o servizi.
UUID v7 segue l'ordine temporale. I primi 48 bit contengono un timestamp Unix in millisecondi, seguito da versione, variante e dati casuali. In genere i valori generati più tardi vengono ordinati dopo quelli generati prima. Questo può favorire gli indici ordinati e i log, perché è meno probabile che i nuovi record finiscano in posizioni sparse nello spazio delle chiavi.
L'ordine temporale non implica una sequenza perfetta. Più UUID v7 creati nello stesso millisecondo richiedono comunque dati aggiuntivi per restare distinti, e il comportamento dell'orologio conta. Non implica nemmeno segretezza: un valore v7 rivela per sua natura l'ora approssimativa di creazione. RFC 9562 contiene le strutture normative e le indicazioni di generazione per entrambe le versioni.
Quale versione dovresti scegliere?
Scegli la versione che corrisponde al sistema ricevente e al comportamento di cui hai bisogno.
| Requisito | Scelta generalmente consigliata | Perché |
|---|---|---|
| Ampia compatibilità con i sistemi UUID esistenti | UUID v4 | È maturo, familiare e comunemente accettato |
| Nessuna informazione sul momento della creazione nell'identificatore | UUID v4 | Il valore è casuale anziché ordinato nel tempo |
| Chiavi che seguono approssimativamente il tempo di creazione | UUID v7 | Il prefisso timestamp supporta l'ordinamento cronologico |
| L'API esistente richiede esplicitamente una versione | Versione richiesta | La compatibilità ha la precedenza sulle preferenze |
| Codice breve da mostrare agli utenti | Nessuna delle due come scelta predefinita | Gli UUID sono identificatori, non codici di conferma facili da leggere |
| Token di autenticazione o segreto per la reimpostazione della password | Un sistema progettato appositamente per generare token sicuri | Unicità e segretezza sono proprietà diverse |
Non cambiare versione solo perché una sembra più recente. Verifica prima il driver del database, la libreria di convalida, lo schema dell'API e i sistemi che ricevono i dati. Un validatore scritto anni fa potrebbe rifiutare un valore v7 valido perché riconosce solo le versioni precedenti.
Lo stesso UUID può apparire diverso?
Sì. Gli stessi 128 bit sottostanti possono essere rappresentati nel formato standard minuscolo, in maiuscolo, tra parentesi graffe, tra virgolette, in formato esadecimale compatto o come URN. ClockTools può anche organizzare i valori generati in righe, CSV, JSON o output adatto a SQL. Sono scelte di rappresentazione, non nuovi identificatori.
Lo scambio in formato binario richiede più attenzione. Storicamente, le API di alcune piattaforme espongono campi GUID o array di byte in un ordine diverso da quello di rete descritto dalle moderne specifiche UUID. Una conversione in stringa e ritorno può risultare corretta, mentre la conversione in 16 byte grezzi e ritorno può non esserlo. Quando i sistemi scambiano UUID binari, documenta l'ordine dei byte e verifica il risultato con un valore noto, senza presumere che tutte le librerie serializzino allo stesso modo.
Per i parametri di query o i segmenti di percorso degli URL, usa quando possibile la forma canonica. Se un valore che contiene l'identificatore richiede l'escape dei caratteri, il Codificatore URL di ClockTools può codificare il parametro completo senza alterare l'identificatore stesso.
Come memorizzare GUID e UUID?
Preferisci il tipo nativo UUID o identificatore univoco del database, quando disponibile e supportato dai tuoi strumenti. Un tipo nativo convalida la struttura e normalmente memorizza il valore a 128 bit in modo più compatto rispetto a una colonna di testo da 36 caratteri. Può anche rendere più chiaro lo scopo del campo a chi legge lo schema.
L'archiviazione del testo rimane ragionevole quando un sistema non dispone di un tipo nativo o quando la compatibilità richiede una stringa. In tal caso, normalizza una rappresentazione, definisci la lunghezza consentita ed evita di mescolare parentesi graffe, URN, lettere maiuscole e valori compatti nella stessa colonna. La formattazione coerente semplifica i controlli di uguaglianza, le esportazioni e il lavoro di supporto.
Il comportamento degli indici dipende dal database, dal carico di lavoro, dal modo in cui vengono inseriti i dati e dalla progettazione degli indici. UUID v7 può migliorare la località dei dati per alcuni carichi di lavoro con molte aggiunte basati su chiavi primarie, ma non garantisce prestazioni migliori in ogni caso. Misura i risultati sul tuo database con dati realistici. Conserva le informazioni applicative in colonne separate: un identificatore non deve sostituire un timestamp di creazione, un numero cliente o una regola di controllo degli accessi.
Come può ClockTools generarli e convalidarli?
Il generatore online di GUID e UUID offre un flusso di lavoro mirato:
- Seleziona UUID v4 per identificatori casuali o UUID v7 per identificatori ordinati nel tempo.
- Scegli una quantità da 1 a 1,000.
- Seleziona il formato standard, maiuscolo, tra parentesi graffe, tra virgolette, compatto o URN.
- Scegli il testo semplice oppure la codifica Base64, Base64URL o URL, secondo quanto richiesto dalla destinazione.
- Esporta i risultati in righe, CSV, JSON o SQL, oppure copiali direttamente.
- Incolla un valore esistente nel validatore per controllarne la forma normalizzata, la versione, la variante e i valori speciali riconosciuti.
La generazione usa la sorgente di casualità crittografica del browser. UUID v4 imposta i bit richiesti per la versione e la variante. UUID v7 combina il timestamp Unix corrente in millisecondi con dati casuali e i bit previsti dalla struttura. Per queste operazioni la pagina non deve caricare sul server gli identificatori generati.
Per confrontare due elenchi esportati, usa il Confronto delle differenze tra testi per individuare una voce mancante, ripetuta o riformattata senza scansionare manualmente ogni riga.
Quali errori dovresti evitare?
Il primo errore è interpretare «univoco» come «impossibile da duplicare». Se generati correttamente, gli UUID rendono una collisione accidentale estremamente improbabile, ma il software dovrebbe comunque applicare un vincolo di unicità quando i duplicati sarebbero dannosi. Una sorgente casuale difettosa, dati di test copiati, un errore di importazione o un bug dell'applicazione possono creare un duplicato anche quando il modello matematico è corretto.
Il secondo errore è usare un UUID come prova di autorizzazione. Un identificatore difficile da indovinare può ridurre le scoperte casuali, ma da solo non concede un accesso sicuro. Verifica i diritti di accesso dell'utente autenticato a ogni richiesta protetta.
Il terzo errore è cambiare silenziosamente la rappresentazione. La rimozione dei trattini, la decodifica Base64 o la conversione in byte dovrebbero essere reversibili e testate. Mantieni un valore canonico nei log in modo che gli operatori possano tracciarlo tra i servizi. Se un parser rifiuta un identificatore, convalida la versione e il formato prima di generare una sostituzione; la sostituzione di un ID può interrompere i riferimenti che già puntano ad esso.
Domande frequenti
GUID e UUID sono la stessa cosa?
Di solito sì. Entrambi i termini indicano comunemente un identificatore a 128 bit con la stessa forma testuale standard. UUID è il termine degli standard IETF, mentre GUID è particolarmente comune negli ecosistemi Microsoft.
Un GUID è sempre un UUID versione 4?
No. Il termine GUID non identifica una specifica versione UUID. Un valore in formato GUID può usare la versione 4, la versione 7, un'altra versione standardizzata oppure un metodo di generazione specifico di una piattaforma.
Dovrei utilizzare UUID v4 o UUID v7?
Usa v4 se vuoi un identificatore casuale ampiamente compatibile che non incorpori l'ora di creazione. Valuta v7 quando contano l'ordinamento cronologico e la località dei dati nell'indice, purché tutti i sistemi riceventi lo supportino.
Quanti caratteri contiene un GUID o UUID standard?
Il formato di testo canonico ha 32 cifre esadecimali e quattro trattini, per un totale di 36 caratteri. Parentesi graffe, prefissi URN, formattazione compatta o virgolette possono modificare la lunghezza visualizzata.
Posso utilizzare un UUID come token segreto?
Non dare per scontato che l’unicità garantisca la segretezza. I token di autenticazione e ripristino necessitano di una progettazione specificatamente pensata per credenziali sicure e imprevedibili, insieme a controlli di scadenza e autorizzazione.
ClockTools carica sul server gli UUID generati?
Il generatore GUID esegue generazione, formattazione e convalida localmente nel browser. Per le parti casuali degli UUID supportati usa la sorgente di casualità crittografica del browser.

