tools.poderoso.io
← poderoso.io

Gerador de UUID v3, v4, v5, v6 e v7

·gera UUID nas versões v3, v4, v5, v6 e v7
// uuid v4 gerado
// namespace + nome (apenas v3/v5)

O gerador de UUID cria identificadores únicos nas versões 3, 4, 5, 6 e 7. Cada versão resolve um problema diferente, e escolher errado custa desempenho de banco de dados ou colisão de chave.

Qual versão usar

A v4 é aleatória e é o padrão para identificador de uso geral. A v7, definida pela RFC 9562, também é aleatória mas começa com um timestamp em milissegundos, então ordena por tempo. A v3 e a v5 são determinísticas: o mesmo nome dentro do mesmo namespace sempre gera o mesmo UUID. A v6 é uma reordenação da v1 para ficar ordenável.

Na prática: precisa só de identificador único, use v4. Vai ser chave primária de tabela grande, prefira v7. Precisa que o mesmo dado gere sempre o mesmo id, use v5.

Por que v7 importa em banco de dados

Chave primária aleatória espalha inserções por toda a árvore do índice. Cada insert toca uma página diferente, o cache do banco perde eficiência e o índice fragmenta. Com v7 os valores crescem no tempo, então as inserções vão para o fim do índice, que é o caso que todo B-tree otimiza.

Em MySQL com InnoDB o efeito é mais forte, porque a tabela é fisicamente ordenada pela chave primária: id aleatório causa divisão de página constante. Em PostgreSQL o impacto é menor, mas ainda existe no índice.

O custo do v7 é que ele revela quando o registro foi criado. Se o identificador é público e essa informação for sensível, prefira v4.

RFC 9562 substituiu a RFC 4122

As versões 1 a 5 vinham da RFC 4122, de 2005. A RFC 9562, de 2024, a tornou obsoleta e acrescentou v6, v7 e v8. Se você está lendo documentação que só menciona v1 a v5, ela é anterior a essa atualização.

A aleatoriedade da v4 e da v7 aqui vem de crypto.getRandomValues, o gerador criptográfico do navegador, e não de Math.random. A v5 usa SHA-1 e a v3 usa MD5, ambos aplicados sobre namespace mais nome.

Nada do que você cola aqui sai do seu navegador. O processamento é todo local, em JavaScript, sem envio para servidor, sem log e sem armazenamento.

Perguntas frequentes

Qual a diferença entre UUID v4 e v7?

A v4 é totalmente aleatória. A v7 começa com um timestamp em milissegundos, então UUIDs gerados em sequência ficam ordenados. Isso mantém a inserção no fim do índice do banco em vez de espalhar por toda a árvore.

UUID v4 pode repetir?

Na prática não. São 122 bits aleatórios. A probabilidade de colisão só se torna relevante depois de bilhões de bilhões de gerações, o que está muito além de qualquer aplicação real.

Quando usar UUID v5 em vez de v4?

Quando você precisa que a mesma entrada produza sempre o mesmo identificador, por exemplo para derivar um id estável a partir de uma URL ou de um e-mail sem guardar um mapeamento.

UUID v7 vaza informação?

Vaza o instante de criação, que está no início do valor em texto claro. Para identificador interno isso raramente importa; para identificador público de recurso sensível, prefira v4.

A RFC 4122 ainda vale?

Foi tornada obsoleta pela RFC 9562 em 2024. As versões 1 a 5 continuam idênticas, então nada quebrou, mas as versões 6, 7 e 8 só existem na especificação nova.

Referências