utildev
← Blog
Geradores Diversos5 min

UUID v4: o que é e quando usar?

Entenda as versões de UUID, por que a v4 é a mais usada, a probabilidade real de colisão, e quando preferir UUID a auto-incremento em bancos de dados.

UUID (Universally Unique Identifier) é um identificador de 128 bits padronizado pela RFC 4122. É representado como 32 caracteres hexadecimais em grupos separados por hífens: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. O objetivo é gerar identificadores únicos sem necessidade de coordenação central entre sistemas.

As versões do UUID

  • v1: baseado em timestamp + endereço MAC. Ordenável mas expõe informações da máquina.
  • v3: hash MD5 de um namespace + nome. Determinístico.
  • v4: aleatório (122 bits de entropia). O mais usado.
  • v5: hash SHA-1 de um namespace + nome. Determinístico, mais seguro que v3.
  • v7: timestamp Unix em alta resolução + aleatoriedade. Ordenável e recomendado para bancos de dados.

Qual é a probabilidade real de colisão no v4?

Com 122 bits de aleatoriedade, o UUID v4 tem 2¹²² ≈ 5,3 × 10³⁶ valores possíveis. Para ter 50% de chance de uma colisão, você precisaria gerar 2,71 quintilhões de UUIDs. Se você gerasse 1 bilhão de UUIDs por segundo, levaria 86 anos para atingir essa probabilidade. Na prática, colisões são impossíveis para qualquer sistema real.

UUID vs auto-incremento: quando usar cada um?

  • UUID: sistemas distribuídos (sem coordenação central), IDs gerados no cliente, privacidade (não revela quantidade de registros), merge de dados entre bancos
  • Auto-incremento: sistemas centralizados simples, melhor performance em JOINs e índices, menor uso de espaço no banco, facilidade de debug (IDs legíveis)
Para bancos de dados relacionais, considere UUID v7 (ou ULID) em vez de v4. Eles são ordenáveis cronologicamente, o que melhora muito a performance de índices B-tree e evita a fragmentação causada por UUIDs completamente aleatórios.

Armazenando UUID eficientemente

Armazene UUIDs como BINARY(16) ou UUID nativo (MySQL 8+, PostgreSQL com extensão uuid-ossp) em vez de VARCHAR(36). Isso reduz o tamanho em disco em mais de 50% e melhora a performance de índices. No MySQL 8+, use UUID_TO_BIN(uuid, 1) para armazenar em formato que é eficiente para índices.

Use o Gerador de UUID do UtilDev para gerar UUIDs v4 no formato padrão (com hífens) ou sem hífens, individualmente ou em lote.

Ferramentas relacionadas

Gerador de UUID
Gere UUIDs (v1, v4) para uso em aplicações

Artigos relacionados

QR Code: tudo que você precisa saber5 min →O que é Lorem Ipsum e por que existe?4 min →