Strumenti per sviluppatori
GUID vs UUID: qual è la differenza?
GUID e UUID di solito hanno lo stesso identificatore 128 bit, ma la versione, il formato, l'ordinamento e i contratti di sistema contano ancora.
Di Vigneshwaran Vijayakumar, sviluppatore ed editore | | Recensito sotto il ClockTools politica editoriale
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 breve risposta è utile, ma non risolve tutte le questioni pratiche. Due identificatori possono condividere ciò che è familiare 8-4-4-4-12 forma del testo e utilizzano comunque versioni UUID diverse, regole di generazione, comportamento di ordinamento o convenzioni di serializzazione binaria. Quando una colonna di database, un'API o un'applicazione riporta GUID, l'approccio più sicuro consiste nel confermare il formato e la versione accettati anziché fare affidamento solo sull'etichetta.
Usa il ClockTools GUID Generatore 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 del lavoro quotidiano 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 a nome e un schema di generazione. Chiamare un valore GUID non indica se si tratta della versione 4, della versione 7, di una versione precedente basata sul tempo o di una costruzione specifica della piattaforma. Chiamarlo UUID non garantisce che un'applicazione accetti ogni versione standardizzata. L'etichetta identifica il tipo di dati ampio; la versione e il contratto circostante identificano il comportamento del valore.
| Domanda | GUID | UUID |
|---|---|---|
| Contesto tipico | API Microsoft, .NET, Windows, SQL Server | Standard Internet, database, sistemi distribuiti, API |
| Taglia abituale | 128 bit | 128 bit |
| Forma testuale familiare | 8-4-4-4-12 gruppi esadecimali | 8-4-4-4-12 gruppi esadecimali |
| 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 utilizzata dagli standard IETF che definisce il layout, le varianti, le versioni, la rappresentazione del testo e le considerazioni sulla generazione. GUID significa identificatore univoco globale e si è affermato profondamente nelle piattaforme Microsoft. Il Tipo "System.Guid" .NET è un esempio familiare.
Entrambi i nomi sono sopravvissuti perché gli ecosistemi software mantengono il loro vocabolario per compatibilità. Un'API Microsoft può esporre a Guida, uno schema PostgreSQL può utilizzare a uuid colonna e un'API JSON può chiamare il campo id. Tutti e tre possono avere lo stesso valore testuale canonico.
Non è necessario rinominare ogni campo GUID in UUID solo per ragioni terminologiche. È necessario documentare la versione accettata, se è importante l'uso delle lettere maiuscole e minuscole, se le parentesi graffe sono accettate e come il valore viene serializzato quando supera i limiti del sistema.
Che aspetto ha un UUID?
Il formato comune leggibile dall'uomo contiene 32 cifre esadecimali separate in cinque gruppi:
"testo".
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
```
Le 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.
Le maiuscole esadecimali non modificano il valore numerico. A716 e a716 rappresentano gli stessi bit. Trattini, parentesi graffe, a urna:uuid: prefisso o una forma compatta possono modificare la stringa accettata da un parser, ma non necessariamente modificano l'identificatore sottostante. Questo è 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 utilizzata. La maggior parte dei bit disponibili vengono riempiti da una fonte casuale o pseudocasuale, con i bit richiesti impostati per la versione e la variante. Funziona bene quando gli identificatori non devono rivelare l'ordine di creazione e quando la generazione avviene in modo indipendente tra molti client o servizi.
UUID v7 è ordinato in base all'ora. I suoi primi bit 48 portano un timestamp dell'epoca Unix in millisecondi, seguito da versione, variante e dati casuali. I valori generati successivamente generalmente vengono ordinati dopo i valori generati in precedenza. Questo può essere più amichevole per gli indici e i log ordinati perché è meno probabile che i nuovi record arrivino in posizioni non correlate nello spazio delle chiavi.
Il tempo ordinato non significa perfettamente sequenziale. Più valori UUID v7 creati nello stesso millisecondo necessitano comunque di dati aggiuntivi per rimanere distinti e il comportamento dell'orologio è importante. Inoltre non significa segreto: un valore v7 espone il tempo di creazione approssimativo in base alla progettazione. RFC 9562 contiene i layout normativi e le linee guida per la 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 | Di solito preferisco | 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 | UUIDv7 | Il prefisso timestamp supporta l'ordinamento cronologico |
| L'API esistente richiede esplicitamente una versione | Versione richiesta | La compatibilità supera la preferenza |
| Codice breve visibile dall'uomo | Né per impostazione predefinita | UUID sono identificatori, non codici di conferma amichevoli |
| Token di autenticazione o segreto per la reimpostazione della password | Un design dedicato per token sicuri | Unicità e segretezza sono proprietà diverse |
Non cambiare versione solo perché una sembra più recente. Controlla prima il driver del database, la libreria di convalida, lo schema API e i consumer downstream. 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 bit 128 sottostanti possono essere presentati in formato standard minuscolo, maiuscolo, tra parentesi graffe, testo tra virgolette, formato esadecimale compatto o URN. ClockTools può anche impacchettare i valori generati come linee, CSV, JSON o output di facile utilizzo SQL. Si tratta di scelte di rappresentazione, non di nuovi identificatori.
Lo scambio binario merita più attenzione. Alcune API della piattaforma espongono storicamente campi GUID o matrici di byte in un ordine diverso dall'ordine dei byte di rete descritto dalle moderne specifiche UUID. Un round trip di stringa può sembrare corretto mentre un round trip di 16-byte non lo è. Quando i sistemi scambiano UUID binari, documenta l'ordine dei byte e testalo rispetto a un valore noto invece di presumere che ogni libreria venga serializzata in modo identico.
Per le stringhe di query URL o i segmenti di percorso, utilizzare il formato canonico quando possibile. Se è necessario eliminare un valore circostante, il file ClockTools Codificatore URL può codificare il parametro completo senza alterare l'identificatore stesso.
Come dovresti memorizzare GUIDs e UUIDs?
Preferisci il tipo UUID nativo o l'identificatore univoco nativo di un database quando è disponibile e supportato dai tuoi strumenti. Un tipo nativo convalida la forma e normalmente archivia il valore 128 bit in modo più compatto rispetto a una colonna di testo 36 caratteri. Può anche rendere l'intento più chiaro ai lettori dello 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 dell'indice dipende dal database, dal carico di lavoro, dal modello di inserimento e dalla progettazione dell'indice. UUID v7 può migliorare la località per alcuni carichi di lavoro di chiave primaria con uso intensivo di aggiunta, ma non è una garanzia universale delle prestazioni. Misura con il tuo database e dati realistici. Mantieni il significato aziendale 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 online GUID e generatore UUID offre un flusso di lavoro mirato:
1. Seleziona UUID v4 per identificatori casuali o UUID v7 per identificatori ordinati nel tempo.
2. Scegli una quantità da 1 a 1,000.
3. Selezionare la formattazione standard, maiuscola, tra parentesi graffe, tra virgolette, compatta o URN.
4. Scegli la codifica semplice, Base64, Base64URL o URL quando la destinazione lo richiede.
5. Esporta come linee, CSV, JSON o SQL oppure copia direttamente i risultati.
6. Incolla un valore esistente nel validatore per controllarne la forma normalizzata, la versione, la variante e i valori speciali riconosciuti.
La generazione utilizza la fonte casuale crittografica del browser. UUID v4 imposta la versione richiesta e i bit della variante. UUID v7 combina il valore corrente dei millisecondi dell'epoca Unix con dati casuali e i bit di layout richiesti. Non è necessario che la pagina carichi gli identificatori generati per queste operazioni.
Quando si confrontano due elenchi esportati, utilizzare il file Controllo differenze testo per individuare una voce mancante, ripetuta o riformattata senza scansionare manualmente ogni riga.
Quali errori dovresti evitare?
Il primo errore è considerare “unico” come “impossibile da scontrarsi”. I progetti UUID rendono straordinariamente improbabile la collisione accidentale se generati correttamente, ma il software dovrebbe comunque utilizzare un vincolo di unicità in cui i duplicati sarebbero dannosi. Una sorgente casuale rotta, un dispositivo copiato, un errore di importazione o un bug dell'applicazione possono creare un duplicato anche quando i calcoli sono validi.
Il secondo errore è utilizzare un UUID come prova di autorizzazione. Un identificatore difficile da indovinare può ridurre il rilevamento casuale, ma non garantisce da solo l'autorizzazione in modo sicuro. Controlla l'accesso dell'utente autenticato su 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 si riferiscono comunemente a un identificatore 128 bit con la stessa forma di testo standard. UUID è il termine degli standard IETF, mentre GUID è particolarmente comune negli ecosistemi Microsoft.
Un GUID è sempre una versione UUID 4?
No. La parola GUID non identifica una versione UUID. Un valore a forma di GUID può utilizzare la versione 4, la versione 7, un'altra versione standardizzata o un metodo di generazione specifico della piattaforma.
Dovrei utilizzare UUID v4 o UUID v7?
Utilizza v4 quando desideri un identificatore casuale ampiamente compatibile senza tempi di creazione incorporati. Considera la v7 quando l'ordinamento cronologico e la località dell'indice sono importanti, a condizione che ogni sistema ricevente lo supporti.
Quanti caratteri ci sono in uno standard GUID o UUID?
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 UUID generati?
Il generatore GUID esegue la generazione, la formattazione e la convalida localmente nel browser. Utilizza l'origine casuale crittografica del browser per le porzioni casuali di UUIDs supportati.

