Pergunta

Eu vejo estes 2 siglas jogados ao redor, e eu queria saber se existem diferenças entre um GUID e um UUID?

Foi útil?

Solução

O resposta simples é: nenhuma diferença , eles são a mesma coisa. Tratá-los como um valor de 16 bytes (128 bits) que é usado como um valor único. Em Microsoft-falar que eles são chamados de GUIDs, mas chamá-los UUIDs quando não estiver usando Microsoft-falar.

Mesmo os autores da especificação UUID e Microsoft afirmam que eles são sinônimos:

  • A partir da introdução à IETF RFC 4122 " A Universalmente Unique Identifier (UUID) urna namespace ": " um Uniform namespace nome do recurso para UUIDs (Universally Unique Identifier), também conhecido como GUIDs (Globally Unique Identifier)"

  • A partir do X.667 Recomendação ITU-T, ISO / IEC 9834-8: 2004 Norma Internacional : "UUIDs também são conhecidos como Globally Unique Identifiers (GUIDs), mas este termo não é utilizado na presente recomendação."

  • E Microsoft mesmo reivindicações a GUID é especificado pelo UUID RFC: "programação em Microsoft Windows e em sistemas operacionais Windows, um identificador exclusivo global (GUID), conforme especificado no [RFC4122], é ... o termo universalmente identificador exclusivo (UUID) é por vezes utilizado no protocolo caderno de encargos do Windows como um sinônimo para GUID ".

Mas o resposta correta depende do que o meio de perguntas, quando ele diz que "UUID" ...

A primeira parte depende do que o consulente está pensando quando eles estão dizendo "UUID".

alegação da Microsoft implica que todos os UUIDs são GUIDs. Mas são todos os GUIDs UUID reais? Ou seja, é o conjunto de todos os UUIDs apenas um subconjunto próprio do conjunto de todos os GUIDs, ou é exatamente o mesmo conjunto?

Olhando para os detalhes da RFC 4122, existem quatro diferentes "variantes" de UUIDs. Isto é principalmente porque tais identificadores 16 bytes foram em utilização antes de essas especificações foram reunidos na criação de uma especificação UUID. Da seção 4.1.1 do RFC 4122 , os quatro variantes de UUID são:

  1. reservados, Sistema Network Computing compatibilidade com versões anteriores
  2. O variante especificado no RFC 4122 (dos quais existem cinco sub-variantes, que são chamados de "versões")
  3. reservados, Microsoft Corporation compatibilidade com versões anteriores
  4. Reservado para definição futura.

De acordo com a RFC 4122, todos UUID variantes são "UUIDs reais", então todos os GUIDs são UUIDs reais. À pergunta literal "não há qualquer diferença entre GUID e UUID" a resposta é definitivamente não para RFC 4122 UUIDs:. nenhuma diferença (mas sujeita a segunda parte abaixo)

Mas nem todos os GUIDs são variante 2 UUIDs (por exemplo, Microsoft COM tem GUIDs que são variantes 3 UUIDs). Se a questão era "não há qualquer diferença entre GUID e variante 2 UUIDs", então a resposta seria sim - eles podem ser diferentes. Alguém que faz a pergunta provavelmente não sabe sobre variantes e eles só poderia estar pensando em variante 2 UUIDs quando dizem a palavra "UUID" (por exemplo, eles vagamente sei do MAC endereço + tempo e os algoritmos de números aleatórios formas de UUID, que são ambos versões de variante 2). Nesse caso, a resposta é sim diferente .

Portanto, a resposta, em parte, depende do que a pessoa que solicita está pensando quando dizem a palavra "UUID". Será que eles média variante 2 UUID (porque essa é a única variante eles estão cientes) ou todos os UUIDs?

A segunda parte depende de qual especificação a ser usado como a definição do UUID.

Se você acha que foi confuso, leia a ITU-T X. 667 ISO / IEC 9834-8: 2004 quaisé suposto ser alinhados e totalmente tecnicamente compatível com RFC 4122 . Tem uma frase extra na Cláusula 11.2, que diz: "Todos os UUIDs em conformidade com a presente recomendação | Norma devem ter bits variantes com bit 7 do octeto 7 set a 1 e o bit 6 do octeto 7 set a 0". Que significa que apenas variante 2 UUID estão de acordo com esse padrão (esses dois valores de bit significa variante 2). Se isso for verdade, então nem todos os GUIDs estão em conformidade ITU-T / ISO / IEC UUIDs, porque conformant ITU-T / ISO / IEC UUIDs só pode ser variante 2 valores.

Portanto, a resposta real também depende de qual especificação de UUID a questão é perguntando. Assumindo que estamos a falar claramente sobre todos os UUIDs e não apenas variante 2 UUIDs: existe nenhuma diferença entre GUID e UUID do IETF, mas sim diferença entre GUID e conformes ITU-T / UUIDs da ISO / IEC!

codificações binárias podem diferir

Quando codificado em binário (em oposição ao formato de texto legível), o GUID podem ser armazenados de uma estrutura com quatro campos diferentes como se segue. Este formato difere do UUID padrão apenas na ordem de bytes dos primeiros 3 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

Outras dicas

Não é verdade. GUID é mais Microsoft-centric enquanto UUID é usado mais amplamente (por exemplo, como no urn: UUID: esquema de urna, e em CORBA).

GUID tem o uso de longa data em áreas onde não é necessariamente um valor de 128 bits da mesma forma como um UUID. Por exemplo, o RSS especificação define GUIDs para ser qualquer cadeia de sua escolha , contanto que ele é único, com um atributo "isPermalink" para especificar que o valor que você está usando é apenas uma volta permalink para o item que está sendo distribuído.

representação textual do GUID da Microsoft pode ser na forma de um UUID ser cercado por duas chaves {}.

Uma diferença entre GUID no SQL Server e UUID no PostgreSQL é maiúsculas e minúsculas; SQL Server gera superior, enquanto saídas PostgreSQL diminuir.

Os valores hexadecimais "a" a "f" são emitidos como caracteres em minúsculas e são insensíveis caso na entrada. - rfc4122 # section-3

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top