Curious TechieDev Toolbox
Todos os Guias/Identificadores8 min read

O que é um UUID? Versões, Entropia e RFC 9562

Geração de identificadores universais de 128 bits: entropia aleatória no UUID v4 versus ordenação cronológica no UUID v7.

Principais Conclusões
  • Um UUID é um identificador de 128 bits definido pelo padrão RFC 9562.
  • O UUID v4 utiliza 122 bits de aleatoriedade pura, tornando a probabilidade de colisão matematicamente insignificante.
  • O UUID v7 incorpora um carimbo de data/hora (timestamp) nos primeiros 48 bits, acelerando índices em bancos de dados.
  • Permite a sistemas distribuídos criar chaves primárias sem consultar uma autoridade central.

Bancos de dados distribuídos e arquiteturas de microsserviços exigem chaves primárias que possam ser geradas de forma independente em servidores remotos sem gargalos centrais. O padrão mundial para isso é o UUID (Universally Unique Identifier).

1. Estrutura do UUID de 128 Bits

Padronizado pela RFC 9562, um UUID é composto por 16 octetos (128 bits) formatados como 32 dígitos hexadecimais em cinco grupos separados por hífen:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = Número da Versão (ex.: 4 ou 7) | N = Variante (geralmente 8, 9, a ou b)

2. Matemática de Colisão e Segurança

Com 122 bits de pura aleatoriedade no UUID v4 (2^122 ≈ 5,3 × 10^36 IDs possíveis), seria necessário gerar 1 bilhão de UUIDs por segundo durante 85 anos consecutivos para atingir 50% de chance de colisão.

3. UUID v4 (Aleatório) vs UUID v7 (Ordenado no Tempo)

Enquanto o UUID v4 é puramente aleatório, o padrão UUID v7 insere um timestamp Unix de 48 milissegundos nos bits mais significativos, seguido por 74 bits de aleatoriedade, garantindo ordenação cronológica nativa.

4. Indexação de Banco de Dados e Fragmentação de B-Tree

Inserir UUIDs v4 aleatórios em índices B-Tree causa divisões frequentes de páginas e perda de cache. O UUID v7 insere dados sequencialmente no final do índice, permitindo até 10x mais velocidade de gravação no PostgreSQL e MySQL.