"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Tudo o que você precisa saber sobre UUID.

Tudo o que você precisa saber sobre UUID.

Publicado em 2024-11-07
Navegar:852

Everything you need to know about UUID.

Um Identificador Universalmente Único (UUID) é um rótulo de 128 bits usado em sistemas de computador para identificar informações de maneira exclusiva. Os UUIDs são projetados para serem únicos no espaço e no tempo, permitindo que sejam gerados de forma independente, sem uma autoridade central, minimizando o risco de duplicação.

UUIDs servem a vários propósitos, incluindo:

  • Identificação de registros em bancos de dados.
  • Marcação de objetos em sistemas distribuídos.
  • Servindo como chaves primárias em aplicações onde a exclusividade é crítica.

Casos de uso do mundo real

  • Bancos de dados: UUID é usado como chave primária em bancos de dados relacionais para garantir a identificação exclusiva dos registros.
  • Microsserviços: facilitam a comunicação do serviço fornecendo identificadores exclusivos para solicitações e recursos.
  • Dispositivos IoT: identifique dispositivos exclusivamente em uma rede, garantindo que os dados de diversas fontes possam ser agregados sem conflitos.

Vantagens e desvantagens no uso de UUID

Vantagens:

  • Singularidade global: É extremamente improvável que os UUIDs colidam, tornando-os adequados para sistemas distribuídos onde vários nós geram identificadores de forma independente.
  • Não é necessária autoridade central: Eles podem ser gerados sem coordenação, o que simplifica as operações em ambientes distribuídos.
  • Escalabilidade: Eles funcionam bem em sistemas que exigem escalabilidade em vários servidores ou serviços.

Desvantagens:

  • Tamanho de armazenamento: UUIDs consomem mais espaço (128 bits) em comparação com IDs inteiros tradicionais (normalmente 32 bits), o que pode levar a maiores custos de armazenamento.
  • Problemas de desempenho: UUIDs de indexação podem degradar o desempenho do banco de dados devido à sua aleatoriedade e tamanho, levando a tempos de consulta mais lentos em comparação com IDs sequenciais.
  • Falta de amizade com o usuário: UUIDs não são facilmente memoráveis ​​ou fáceis de usar quando apresentados em interfaces de usuário.

O Padrão

A representação padrão de um UUID consiste em 32 caracteres hexadecimais divididos em cinco grupos, separados por hífens, seguindo o formato 8-4-4-4-12, resultando em um total de 36 caracteres (32 alfanuméricos mais 4 hífens) .

O formato UUID pode ser visualizado da seguinte forma:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

Onde:

  • M indica a versão do UUID.
  • N indica a variante, o que ajuda a interpretar o layout do UUID.

Componentes de um UUID

  1. TimeLow: 4 bytes (8 caracteres hexadecimais) representando o campo inferior do carimbo de data/hora.
  2. TimeMid: 2 bytes (4 caracteres hexadecimais) representando o campo intermediário do carimbo de data/hora.
  3. TimeHighAndVersion: 2 bytes (4 caracteres hexadecimais) que incluem o número da versão e o campo alto do carimbo de data/hora.
  4. ClockSequence: 2 bytes (4 caracteres hexadecimais) usados ​​para ajudar a evitar colisões, especialmente quando vários UUIDs são gerados em rápida sucessão ou se o relógio do sistema for ajustado.
  5. : 6 bytes (12 caracteres hexadecimais), normalmente representando o endereço MAC do nó gerador.

Tipos de UUIDs

  1. Versão 1: UUIDs baseados em tempo que usam uma combinação do carimbo de data/hora atual e do endereço MAC do nó gerador. Esta versão garante exclusividade no espaço e no tempo.

  2. Versão 2: semelhante à versão 1, mas inclui identificadores de domínio local; no entanto, é menos comumente usado devido às suas limitações.

  3. Versão 3: UUIDs baseados em nome gerados usando um hash MD5 de um identificador de namespace e um nome.

  4. Versão 4: UUIDs gerados aleatoriamente que fornecem alta aleatoriedade e exclusividade, com apenas alguns bits reservados para controle de versão.

  5. Versão 5: semelhante à versão 3, mas usa SHA-1 para hashing, tornando-a mais segura que a versão 3.

Variantes

O campo variante em um UUID determina seu layout e interpretação. As variantes mais comuns incluem:

  • Variante 0: Reservado para compatibilidade com versões anteriores do NCS.
  • Variante 1: O layout padrão usado para a maioria dos UUIDs.
  • Variante 2: Usado para UUIDs de segurança DCE, que são menos comuns.
  • Variante 3: Reservado para definições futuras.

Exemplo

Para Versão 4, um UUID pode ter esta aparência:

550e8400-e29b-41d4-a716-446655440000

Aqui:

  • 41d4 indica que é uma versão 4.
  • a7 representa a variante, neste caso, a variante comum "Leach-Salz".

Como os UUIDs são calculados

  1. Versão 1 (com base no tempo):

    • O carimbo de data/hora normalmente é o número de intervalos de 100 nanossegundos desde 15 de outubro de 1582 (a data da reforma do calendário gregoriano).
    • O nó é o endereço MAC da máquina que gera o UUID.
    • A sequência do relógio ajuda a garantir a exclusividade quando a hora do relógio muda (por exemplo, devido a reinicializações do sistema).
  2. Versão 3 e Versão 5 (baseada em nome):

    • Um namespace (como um domínio DNS) é combinado com um nome (como um caminho de arquivo ou URL) e hash.
    • O hash (MD5 para a versão 3, SHA-1 para a versão 5) é então estruturado em um formato UUID, garantindo que os campos de versão e variante sejam definidos corretamente.
  3. Versão 4 (baseado em aleatório):

    • Números aleatórios ou pseudo-aleatórios são gerados para os 122 bits do UUID.
    • Os campos de versão e variante são definidos de acordo, garantindo a conformidade com os padrões UUID.

Exemplo de cálculo UUIDv4

Etapa 1: Gere 128 bits aleatórios

Vamos supor que geramos o seguinte valor aleatório de 128 bits:

11001100110101101101010101111010101110110110111001011101010110110101111011010011011110100100101111001011

Etapa 2: Aplicar versão e variante UUIDv4

  1. Versão: Substitua os bits 12-15 (4º caractere) por 0100 (para UUID versão 4).
    Original: 1100 passa a 0100 → Valor atualizado nesta posição.

  2. Variante: Substitua os bits 6-7 do 9º byte por 10 (para a variante RFC 4122).
    Original: 11 vira 10 → Valor atualizado nesta posição.

Etapa 3: Formatar em hexadecimal

Converta o binário de 128 bits em 5 grupos hexadecimais:

  1. grupo de 32 bits: 11001100110101101101010101111010 → ccda55ba
  2. grupo de 16 bits: 1011101101101110 → b76e
  3. grupo de 16 bits: 0100010101000101 → 4545 (com 0100 para versão 4)
  4. grupo de 16 bits: 1010110111110010 → adf2 (com 10 para a variante)
  5. grupo de 48 bits: 11010011011110100100101111001011 → d39d25cb

Etapa 4: Combine os grupos

O UUID final ficaria assim:
ccda55ba-b76e-4545-adf2-d39d25cb

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/rosselli00/what-is-uuid-cng?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3