Gerador de UUID

Adicionar ao site Metainformação

Outras ferramentas

Gerar UUID/GUID

Gerar UUID/GUID

O identificador exclusivo universal (UUID), também conhecido como identificador exclusivo global (GUID), tem sido amplamente usado em sistemas de computador.

É um código de 128 bits gerado pelo sistema com base em variáveis ​​e constantes: hora atual, endereço MAC, hash SHA-1, namespace MD5. O resultado final da geração de um UUID, exibido como um código alfanumérico de 32 caracteres separados por hifens, pode parecer arbitrário, mas na verdade é o resultado de cálculos complexos. Assim, um computador não “inventa” um código, mas o forma a partir de quantidades técnicas específicas que são relevantes em um determinado momento.

A probabilidade de que o mesmo UUID seja gerado em dois computadores diferentes em momentos diferentes tende a zero, o que torna possível usar os códigos resultantes para identificação de dados pontuais/locais sem referência ao centro de coordenação. Hoje, o UUID/GUID é onipresente em redes online e offline e funciona efetivamente não apenas no espaço global da Internet, mas também em sistemas de computador autônomos.

Histórico UUID

Os códigos UUID de 128 bits foram usados ​​pela primeira vez pela empresa americana Apollo Computer na década de 1980. Eles foram baseados nos códigos de 64 bits mais simples usados ​​no Domain/OS e encontraram uso generalizado no ambiente de computação da Open Software Foundation.

Com o advento das primeiras plataformas Windows, o identificador exclusivo global foi generalizado e padronizado. A Microsoft adotou o design DCE da Apollo Computer e registrou o namespace URN no RFC 4122. Em 2005, este último foi proposto como um novo padrão pelo IETF e o UUID foi padronizado na ITU.

No início de 2002, problemas de desempenho do sistema foram identificados ao usar UUIDs como chaves primárias em bancos de dados locais. Eles foram corrigidos na versão 4 adicionando um sufixo não aleatório com base na hora do sistema do computador. A chamada abordagem COMB (Combined GUID Time Identifier) ​​aumentou os riscos de duplicação de código, mas ao mesmo tempo melhorou significativamente o desempenho ao trabalhar com o Microsoft SQL Server.

Com o desenvolvimento das tecnologias de TI, o identificador único universal deixou de ser uma ferramenta técnica altamente especializada e hoje todos podem usá-lo. A probabilidade de repetição dos códigos gerados não é igual a zero, mas tende a isso, e qualquer informação digital pode ser identificada por eles, após o que podem ser combinados em matrizes de dados únicos com riscos mínimos de repetição.

Benefícios UUID

Os geradores de códigos exclusivos globais não requerem reconciliação/sincronização centralizada de dados e estão disponíveis gratuitamente para todos os usuários. As principais vantagens do UUID incluem:

  • Riscos mínimos de "colisão" (repetição) de códigos. Apesar de seu uso massivo, a probabilidade de repetição tende a zero.
  • Capacidade de unir diferentes matrizes de dados usando UUIDs como chaves primárias (únicas).
  • Distribuição simplificada de dados em vários servidores dispersos.
  • Capacidade de gerar códigos off-line.

Códigos de identificação únicos, escritos no formato xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, permitem que sistemas dispersos reconheçam informação sem coordenação de um único datacenter: com uma probabilidade quase nula de erros/repetições. Esse recurso, juntamente com a facilidade de uso e baixos requisitos de desempenho do computador, torna o UUID em demanda e indispensável em uma ampla variedade de setores de TI e sistemas de computação autônomos.

Identificador universalmente exclusivo

Identificador universalmente exclusivo

O UUID pode gerar códigos usando diferentes algoritmos e variáveis/valores constantes.

Existem 5 versões do identificador no total, usando a data/hora do sistema e endereços MAC, protocolos de segurança DCE, hash MD5, hash SHA-1 e namespace quando gerados.

Em todos os casos, o resultado final é exibido no formato xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (um número em notação hexadecimal, composto por letras latinas minúsculas e números, e dividido por hífens em cinco blocos: 8-4 -4-4- 12), M significa versão, N significa variante UUID.

Assim, o sistema utiliza 36 caracteres por vez (26 letras e 10 números), portanto a probabilidade de repetição de códigos de 32 dígitos tende a zero, apesar de serem gerados diariamente por milhões de usuários em todo o mundo.

Versões UUID

Versão 1

A primeira versão do identificador único, ao gerar o código, é baseada no endereço MAC do computador e seu horário de sistema, que muda seu valor numérico 1 vez por segundo. O processo de geração consiste em cinco etapas:

  • Os 32 bits inferiores de informação são obtidos da tag UTC. Eles são convertidos em 8 caracteres hexadecimais e ocupam 4 bytes.
  • Em média, 16 bits de informação são retirados do mesmo rótulo UTC e convertidos em 4 caracteres hexadecimais ocupando 2 bytes.
  • Os 12 bits superiores de informação da tag UTC são obtidos e convertidos em mais 4 caracteres hexadecimais.
  • Outros 1-3 bits caem na sequência do relógio e reduzem os riscos de colisões ao introduzir um grau de aleatoriedade/incerteza. A hora do sistema é condicionalmente desacelerada ou redefinida - para que dois ou mais identificadores trabalhando no mesmo computador ao mesmo tempo não "se cruzem".
  • Os 6 bytes restantes são um valor constante gerado com base no endereço MAC do dispositivo. Ele consiste em 12 caracteres hexadecimais e tem 48 bits de tamanho.

Como o algoritmo da primeira versão do UUID está indissociavelmente ligado à hora do sistema, o uso da sequência do relógio é obrigatório. Caso contrário, os riscos de gerar os mesmos códigos aumentam muitas vezes - durante o segundo, quando o tempo do sistema “congela” em um ou outro valor.

Versão 2

A segunda versão é minimamente diferente da primeira e raramente é usada na prática. Em vez de uma sequência de relógio, ele usa um identificador de sistema vinculado a dados do usuário ou outros valores exclusivos que não são repetidos em outros computadores ou são repetidos muito raramente. O efeito da aleatoriedade na segunda versão é minimizado e pode ser usado para melhorar a segurança de um ambiente de computação distribuído.

Versões 3 e 5

Eles têm muito em comum: usam nomes e nomes únicos (do espaço MD5) para criar códigos, ou seja, valores não aleatórios. Apenas a versão 3 usa um hash padrão, enquanto a versão 5 usa um hash SHA-1. Esses identificadores são menos dependentes de variáveis ​​aleatórias.

Versão 4

A geração desta versão UUID é mais de 90% aleatória. Tem 6 bits para valores constantes e 122 para valores arbitrários. A implementação do algoritmo é que 128 bits de informação são primeiro gerados aleatoriamente e 6 deles são substituídos por dados de versão e variante.

O papel do gerador de números pseudo-aleatórios na quarta versão é o máximo, e se tiver um algoritmo muito simples, os riscos de repetições/colisões aumentam significativamente. Apesar disso, é a quarta versão que é de longe a mais comum e frequentemente usada na prática.

Opções UUID

O UUID exclusivo foi refinado várias vezes com o desenvolvimento da tecnologia de computadores e hoje é apresentado em várias versões.

Opção 0

Projetado para funcionar com bancos de dados de formato legados do Apollo Network Computing System 1.5 1988. Esta opção é compatível com eles e não entra em conflito com os UUIDs históricos do NCS.

Opções 1 e 2

Usado para identificar blocos e arrays de dados modernos, e na forma de texto canônico eles não diferem uns dos outros, exceto pela ordem de escrita dos bits variantes. Portanto, a opção 1 usa ordem de bytes big-endian e a opção 2 usa title-endian. O primeiro é o principal e o segundo é reservado para trabalhar com os primeiros GUIDs do Microsoft Windows.

Opção 3

Atualmente não está em uso. É uma versão reservada para uso futuro - quando as possibilidades das opções anteriores se esgotarem.

A maioria dos sistemas codifica o identificador em big-endian, mas há exceções. Por exemplo, o empacotamento nas bibliotecas COM/OLE da Microsoft usa mixed-endian ao gerar código dos blocos title-endian e big-endian. O primeiro são os três primeiros componentes do UUID e o segundo são os dois últimos.