UUID v1 vs v4 vs v5: Qual versão você deve usar?
Resposta rápida
Use UUID v4 (aleatório) por padrão – ele não precisa de coordenação e tem risco de colisão insignificante. Use v1 (baseado em tempo) somente quando precisar de IDs ordenáveis por tempo e puder proteger o ID do nó. Use v5 (namespace+nome) quando precisar de IDs determinísticos derivados de um nome. Gere qualquer versão com nosso gerador UUID gratuito.
Introdução
Um UUID (Identificador Universalmente Único) é um identificador de 128 bits renderizado como 36 caracteres em grupos hexadecimais 8-4-4-4-12, por exemplo. 123e4567-e89b-12d3-a456-426614174000. RFC 9562 define várias versões; os três que você mais encontrará são v1 (tempo + MAC), v4 (aleatório) e v5 (namespace + nome, SHA-1). Cada um faz diferentes compensações entre garantias de exclusividade, classificação e determinismo.
Passo a passo
-
UUID v1 —baseado em tempo e nó
v1 codifica o carimbo de data/hora atual de 60 bits (intervalos de 100 ns desde 1582-10-15) e um ID de nó de 48 bits (geralmente o endereço MAC). Os IDs gerados no mesmo nó aumentam monotonicamente e podem ser classificados no tempo. Risco: o endereço MAC vaza a identidade do hardware e a distorção do relógio entre os nós pode interromper a ordem.
-
UUID v4 —aleatório
v4 usa 122 bits aleatórios (6 bits são fixos para a versão/variante). Com 122 bits aleatórios, a probabilidade de colisão entre 2,71 trilhões de IDs é de 50% – para qualquer carga de trabalho realista a chance é efetivamente zero. v4 não precisa de coordenação e não revela informações do host, tornando-o o padrão mais seguro.
-
UUID v5 —namespace e nome (SHA-1)
v5 faz hash de um namespace UUID e uma string de nome com SHA-1 para produzir um ID determinístico de 128 bits. O mesmo par (namespace, nome) sempre produz o mesmo UUID, o que é ideal para desduplicação e IDs estáveis derivados de chaves naturais. v3 é a mesma ideia, mas usa MD5 (evite).
-
Compare as compensações
v1 é classificável, mas vaza MAC e precisa de sincronização de relógio. v4 é aleatório e privado, mas não classificável. v5 é determinístico e desduplica, mas não é aleatório – adivinhar o nome permite que um invasor reproduza o UUID. Escolha com base se você precisa de ordem, aleatoriedade ou determinismo.
-
Escolha a versão certa para o seu caso
Chaves primárias do banco de dados: v4 (ou v7 em sistemas mais recentes para ordenação temporal). Sistemas distribuídos sem coordenação: v4. IDs determinísticos de uma chave natural (por exemplo, URL →UUID): v5. Logs de auditoria que se beneficiam da ordem temporal: v1 com um ID de nó aleatório seguro.
Exemplos
UUID v1 (baseado no tempo, classificável)
Entrada: Gerado em 2026-08-28T12:00:00Z no nó 00:11:22:33:44:55
Saída: 1ef7c1d0-2d3b-11f0-8000-001122334455 (dígito de versão '1', classificável por tempo)
UUID v4 (aleatório)
Entrada: Random generation
Saída: f47ac10b-58cc-4372-a567-0e02b2c3d479 (dígito de versão '4', bits aleatórios)
UUID v5 (determinístico do namespace+nome)
Entrada: Namespace DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8) + nome 'freeonlinetoolsgo.com'
Saída: 74738ff5-5367-5958-9aeb-0c1f1f1f1f1f (a mesma entrada sempre produz a mesma saída)
Problemas comuns
- Armazenar UUIDs como VARCHAR(36) em vez de um tipo BINARY/UUID nativo de 16 bytes: isso desperdiça 2x o armazenamento e prejudica o desempenho do índice. Use um tipo de coluna nativo UUID quando disponível.
- Usando v1 sem proteger o ID do nó: o endereço MAC padrão vaza a identidade do hardware e é uma preocupação de privacidade. Substitua-o por um valor criptograficamente aleatório de 48 bits por nó.
- Supondo que as colisões v4 sejam impossíveis: elas não são – são apenas astronomicamente improváveis. Com 122 bits aleatórios, você precisa de aproximadamente 2,71 trilhões de IDs para ter 50% de chance. Para 1 bilhão de IDs, a chance é de aproximadamente 0,000000000000001.
- Usando v3 (baseado em MD5) em vez de v5 (baseado em SHA-1): MD5 está quebrado, então v5 é preferível. Ambos são determinísticos, mas o v5 tem maior resistência à colisão.
Dicas
- O padrão é v4 para quase todos os casos de uso - é aleatório, privado e seguro contra colisões, sem qualquer coordenação.
- Se você precisar de IDs aleatórios classificáveis no tempo, consulte UUID v7 (RFC 9562, 2024) que combina um carimbo de data/hora Unix com bits aleatórios — melhor que v1 para bancos de dados modernos.
- Use v5 para gerar IDs estáveis a partir de chaves naturais (URLs, endereços de e-mail) para que a mesma entrada sempre seja mapeada para o mesmo UUID —útil para desduplicação e APIs idempotente.
- Gere UUIDs no cliente quando possível para evitar uma viagem de ida e volta ao servidor —nosso gerador UUID é executado inteiramente em seu navegador usando crypto.getRandomValues().