Eu vejo esses dois acrônimos lançados, e eu queria saber se existem diferenças entre um GUID e um UUID?
Eu vejo esses dois acrônimos lançados, e eu queria saber se existem diferenças entre um GUID e um UUID?
Respostas:
A resposta simples é: não há diferença , eles são a mesma coisa. Trate-os como um valor de 16 bytes (128 bits) usado como um valor exclusivo. No Microsoft-speak, eles são chamados de GUIDs, mas os chamam de UUIDs quando não estão usando o Microsoft-speak.
Até os autores da especificação UUID e da Microsoft afirmam que são sinônimos:
Desde a introdução ao IETF RFC 4122 " Um espaço para nome URN de um identificador exclusivo universal (UUID) ": "um espaço de nome Uniform Resource Name para UUIDs (identificador exclusivo universal), também conhecido como GUIDs (identificador exclusivo globalmente)."
Da Recomendação ITU-T X.667, Norma Internacional ISO / IEC 9834-8: 2004 : "Os UUIDs também são conhecidos como GUIDs (Identificadores Exclusivos Globalmente), mas esse termo não é usado nesta Recomendação".
E a Microsoft ainda afirma que um GUID é especificado pelo UUID RFC: "Na programação do Microsoft Windows e nos sistemas operacionais Windows, um GUID (identificador exclusivo globalmente), conforme especificado em [RFC4122], é ... O termo identificador universalmente exclusivo (UUID ) às vezes é usado nas especificações de protocolo do Windows como sinônimo de GUID. "
Mas a resposta correta depende do que a pergunta significa quando diz "UUID" ...
A primeira parte depende do que o solicitante está pensando quando está dizendo "UUID".
A afirmação da Microsoft implica que todos os UUIDs são GUIDs. Mas todos os GUIDs são UUIDs reais? Ou seja, o conjunto de todos os UUIDs é apenas um subconjunto adequado do conjunto de todos os GUIDs ou é exatamente o mesmo conjunto?
Observando os detalhes do RFC 4122, existem quatro "variantes" diferentes de UUIDs. Isso ocorre principalmente porque esses identificadores de 16 bytes estavam em uso antes que essas especificações fossem reunidas na criação de uma especificação UUID. Na seção 4.1.1 da RFC 4122 , as quatro variantes do UUID são:
De acordo com a RFC 4122, todas as variantes de UUID são "UUIDs reais" e todos os GUIDs são UUIDs reais. Para a pergunta literal "existe alguma diferença entre GUID e UUID", a resposta é definitivamente não para os UUIDs RFC 4122: nenhuma diferença (mas sujeita à segunda parte abaixo).
Mas nem todos os GUIDs são UUIDs da variante 2 (por exemplo, o Microsoft COM possui GUIDs que são UUIDs da variante 3). Se a pergunta for "existe alguma diferença entre GUID e UUIDs da variante 2", a resposta seria sim - eles podem ser diferentes. Alguém que faz a pergunta provavelmente não conhece as variantes e pode estar pensando apenas na UUID da variante 2 quando diz a palavra "UUID" (por exemplo, sabe vagamente o endereço MAC + o tempo e as formas de algoritmo de número aleatório do UUID, que são as duas versões da variante 2). Nesse caso, a resposta é sim diferente .
Portanto, a resposta, em parte, depende do que a pessoa que está perguntando está pensando quando diz a palavra "UUID". Eles significam a variante 2 UUID (porque essa é a única variante que eles conhecem) ou todos os UUIDs?
A segunda parte depende de qual especificação está sendo usada como a definição de UUID.
Se você acha isso confuso, leia o ITU-T X.667 ISO / IEC 9834-8: 2004, que deveria estar alinhado e totalmente compatível tecnicamente com o RFC 4122 . Há uma frase extra na Cláusula 11.2 que diz: "Todos os UUIDs em conformidade com esta Recomendação | Padrão Internacional devem ter bits variantes com o bit 7 do octeto 7 definido como 1 e o bit 6 do octeto 7 definido como 0". O que significa que apenas a UUID da variante 2 está em conformidade com esse padrão (esses valores de dois bits significam a variante 2). Se isso for verdade, nem todos os GUIDs estão em conformidade com os UUIDs ITU-T / ISO / IEC, porque os UUIDs ITU-T / ISO / IEC conformes podem ser apenas valores da variante 2.
Portanto, a resposta real também depende de qual especificação de UUID a pergunta está perguntando. Assumindo que estamos a falar claramente sobre todos os UUIDs e não apenas variante 2 UUIDs: não há nenhuma diferença entre UUIDs GUID e IETF das, mas sim diferença entre GUID e em conformidade ITU-T UUIDs / ISO / IEC!
Codificações binárias podem diferir
Quando codificado em binário (em oposição ao formato de texto legível por humanos), o GUID pode ser armazenado em uma estrutura com quatro campos diferentes, conforme a seguir. Esse formato difere do padrão UUID apenas na ordem dos bytes dos 3 primeiros campos.
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 é a implementação da Microsoft do padrão UUID.
Por Wikipedia :
O termo GUID geralmente se refere à implementação da Microsoft do padrão UUID ( Universally Unique Identifier ).
Uma citação atualizada desse mesmo artigo da Wikipedia:
O próprio RFC 4122 afirma que os UUIDs "também são conhecidos como GUIDs". Tudo isso sugere que "GUID", embora originalmente se referisse a uma variante de UUID usada pela Microsoft, tornou-se simplesmente um nome alternativo para UUID…
The term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
Na verdade não. O GUID é mais centrado na Microsoft, enquanto o UUID é usado mais amplamente (por exemplo, no esquema urn: uuid: URN e no CORBA).
O GUID tem uso de longa data em áreas onde não é necessariamente um valor de 128 bits da mesma maneira que um UUID. Por exemplo, a especificação RSS define GUIDs como qualquer sequência de sua escolha, desde que seja única, com um atributo "isPermalink" para especificar que o valor que você está usando é apenas um link permanente para o item que está sendo distribuído.
A GUID
representação textual da Microsoft pode estar na forma de um UUID cercado por dois chavetas {}
.
Uma diferença entre GUID no SQL Server e UUID no PostgreSQL é maiúscula; O SQL Server produz resultados superiores, enquanto o PostgreSQL produz resultados inferiores.
Os valores hexadecimais "a" a "f" são emitidos como caracteres minúsculos e não diferenciam maiúsculas de minúsculas na entrada. - rfc4122 # section-3