Vedo questi 2 acronimi gettati in giro e mi chiedevo se ci sono differenze tra un GUID e un UUID?
Vedo questi 2 acronimi gettati in giro e mi chiedevo se ci sono differenze tra un GUID e un UUID?
Risposte:
La semplice risposta è: nessuna differenza , sono la stessa cosa. Considerali come un valore di 16 byte (128 bit) utilizzato come valore univoco. In Microsoft-speak vengono chiamati GUID, ma li chiamano UUID quando non si utilizza Microsoft-speak.
Persino gli autori delle specifiche UUID e Microsoft affermano di essere sinonimi:
Dall'introduzione a IETF RFC 4122 " Uno spazio dei nomi URN IDentificatore universale (UUID) ": "uno spazio dei nomi nome risorsa uniforme per UUID (IDentificatore universalmente unico), noto anche come GUID (IDentificatore univoco globale)."
Dalla raccomandazione ITU-T X.667, ISO / IEC 9834-8: 2004 Standard internazionale : "Gli UUID sono anche conosciuti come identificatori univoci globali (GUID), ma questo termine non è usato in questa raccomandazione."
E Microsoft afferma addirittura che un UUID RFC specifica un GUID: "Nella programmazione di Microsoft Windows e nei sistemi operativi Windows, un identificatore univoco globale (GUID), come specificato in [RFC4122], è ... Il termine identificatore univoco universale (UUID ) viene talvolta utilizzato nelle specifiche del protocollo di Windows come sinonimo di GUID. "
Ma la risposta corretta dipende dal significato della domanda quando dice "UUID" ...
La prima parte dipende da cosa pensa chi chiede quando sta dicendo "UUID".
L'affermazione di Microsoft implica che tutti gli UUID sono GUID. Ma tutti i GUID sono UUID reali? Cioè, l'insieme di tutti gli UUID è solo un sottoinsieme corretto dell'insieme di tutti i GUID o è esattamente lo stesso insieme?
Guardando i dettagli di RFC 4122, ci sono quattro diverse "varianti" di UUID. Ciò è dovuto principalmente al fatto che tali identificatori a 16 byte erano in uso prima che tali specifiche fossero riunite nella creazione di una specifica UUID. Dalla sezione 4.1.1 di RFC 4122 , le quattro varianti di UUID sono:
Secondo RFC 4122, tutte le varianti di UUID sono "UUID reali", quindi tutti i GUID sono UUID reali. Alla domanda letterale "c'è qualche differenza tra GUID e UUID" la risposta è decisamente no per gli UUID RFC 4122: nessuna differenza (ma soggetta alla seconda parte in basso).
Ma non tutti i GUID sono UUID variante 2 (ad es. Microsoft COM ha GUID che sono UUID variante 3). Se la domanda fosse "c'è qualche differenza tra GUID e UUID variante 2", allora la risposta sarebbe sì - possono essere diversi. Qualcuno che pone la domanda probabilmente non conosce le varianti e potrebbe pensare solo agli UUID di variante 2 quando dicono la parola "UUID" (ad esempio conoscono vagamente l'indirizzo MAC + tempo e le forme di algoritmi di numeri casuali di UUID, che sono entrambe le versioni della variante 2). In tal caso, la risposta è sì diversa .
Quindi la risposta, in parte, dipende da cosa pensa la persona che chiede quando dice la parola "UUID". Significano l'UUID variante 2 (perché questa è l'unica variante di cui sono a conoscenza) o tutti gli UUID?
La seconda parte dipende dalla specifica utilizzata come definizione di UUID.
Se ritieni che sia stato confuso, leggi ITU-T X.667 ISO / IEC 9834-8: 2004 che dovrebbe essere allineato e completamente tecnicamente compatibile con RFC 4122 . Ha una frase aggiuntiva nella clausola 11.2 che dice "Tutti gli UUID conformi a questa Raccomandazione | Lo standard internazionale deve avere bit di variante con bit 7 dell'ottetto 7 impostato su 1 e bit 6 dell'ottetto 7 impostato su 0". Ciò significa che solo l' UUID variante 2 è conforme a quello standard (quei due valori di bit indicano la variante 2). Se ciò è vero, non tutti i GUID sono conformi agli UUID ITU-T / ISO / IEC, poiché gli UUID ITU-T / ISO / IEC conformi possono essere solo varianti valori della 2.
Pertanto, la vera risposta dipende anche da quale specifica di UUID si pone la domanda. Supponendo che stiamo chiaramente parlando di tutti gli UUID e non solo della UUID di variante 2: non c'è differenza tra GUID e UUID di IETF, ma sì differenza tra GUID e conforme ITU-T UUID / ISO / IEC di!
Le codifiche binarie potrebbero differire
Quando codificato in binario (al contrario del formato di testo leggibile dall'uomo), il GUID può essere memorizzato in una struttura con quattro campi diversi come segue. Questo formato differisce dallo standard UUID solo nell'ordine dei byte dei primi 3 campi.
Bits Bytes Name Endianness Endianness
(GUID) RFC 4122
32 4 Data1 Native Big
16 2 Data2 Native Big
16 2 Data3 Native Big
64 8 Data4 Big Big
GUID è l'implementazione Microsoft dello standard UUID.
Per Wikipedia :
Il termine GUID di solito si riferisce all'implementazione di Microsoft dello standard UUID ( Universally Unique Identifier ).
Una citazione aggiornata dallo stesso articolo di Wikipedia:
RFC 4122 stesso afferma che gli UUID "sono anche noti come GUID". Tutto ciò suggerisce che "GUID", mentre originariamente si riferiva a una variante di UUID utilizzata da Microsoft, è diventato semplicemente un nome alternativo per UUID ...
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Non proprio. Il GUID è più incentrato su Microsoft, mentre l'UUID è usato più ampiamente (ad esempio, come nell'urna: uuid: schema URN e in CORBA).
Il GUID ha un utilizzo di lunga data in aree in cui non è necessariamente un valore a 128 bit allo stesso modo di un UUID. Ad esempio, la specifica RSS definisce i GUID come qualsiasi stringa di tua scelta, purché unica, con un attributo "isPermalink" per specificare che il valore che stai utilizzando è solo un permalink all'elemento che viene sindacato.
La GUID
rappresentazione testuale di Microsoft può essere sotto forma di un UUID circondato da due parentesi graffe {}
.
Una differenza tra GUID in SQL Server e UUID in PostgreSQL è il maiuscolo / minuscolo; SQL Server genera un output superiore mentre PostgreSQL genera un output inferiore.
I valori esadecimali da "a" a "f" vengono emessi come caratteri minuscoli e non fanno distinzione tra maiuscole e minuscole sull'input. - rfc4122 # section-3