Saltar para o conteúdo
Toolbrik
Voltar ao blog

UUID v4 vs. IDs sequenciais: o que escolher para uma API

5 de janeiro de 2026 · Ferramenta relacionada: Gerador de UUID

Ao desenhar uma API sobre Postgres ou MySQL, a pergunta "chave auto-incremental ou UUID?" surge mais cedo ou mais tarde. Eis a comparação que usámos para decidir na Toolbrik.

UUID v4 (aleatório)

  • Vantagens: não revela volume de negócio nem ordem; gerado no cliente sem round-trip; impossível de adivinhar por força bruta (122 bits de entropia).
  • Desvantagens: páginas de índice dispersas em b-trees (menor densidade de cache); 36 caracteres de texto.

UUID v1 (baseado em tempo)

  • Vantagens: ordem temporal aproximada, útil para event sourcing ou particionamento por data.
  • Desvantagens: revela a data e, consoante a implementação, o nó que o gerou. Vulnerável a ser adivinhado com um nó fixo.

IDs sequenciais

  • Vantagens: índices compactos e rápidos, depuração fácil, URLs limpos (/users/42).
  • Desvantagens: enumeráveis — qualquer pessoa pode percorrer o teu recurso; exigem o servidor para serem gerados; um bug de concorrência pode duplicá-los.

Recomendação prática

  • Usa UUID v4 como chave primária por defeito.
  • Gera os UUID no servidor se quiseres ocultar a ordem, ou no cliente para latência zero.
  • Para tabelas de eventos, considera v1; para catálogos internos, uma sequência é perfeitamente razoável.
  • Guarda SEMPRE o UUID como tipo nativo uuid, nunca como varchar, e usa-o como chave de cache.

Normalizar UUIDs de origem duvidosa

Nem todos os sistemas emitem UUIDs no mesmo formato: vais encontrar maiúsculas, o prefixo urn:uuid: de alguns padrões (WSDL, ATOM), ou strings de 32 caracteres sem hífenes. O validador de UUID aceita as três variantes, deteta a versão e a variante (RFC 4122 vs. reservada), e normaliza para minúsculas antes de guardares.

Gera quantos precisares com o nosso gerador de UUID (v4 e v1, com ou sem hífenes) e valida qualquer lista com o validador antes de a submeteres.