Gerador de UUID
Gere identificadores únicos em lote. A versão 4 é a escolha padrão para quase todo caso.
O que é um UUID
UUID significa Universally Unique Identifier: um número de 128 bits escrito em 32 dígitos hexadecimais, separados por hífens no formato 8-4-4-4-12. GUID é o mesmo conceito com outro nome, usado no mundo Microsoft.
A ideia central é gerar identificadores únicos sem coordenação. Duas máquinas em continentes diferentes, offline, podem gerar UUIDs simultaneamente com confiança prática de que não vão colidir — e é isso que o diferencia de um id sequencial de banco, que exige um ponto central para decidir o próximo número.
Versão 4: a escolha padrão
A v4 é puramente aleatória. Dos 128 bits, 6 são reservados para identificar versão e variante, sobrando 122 bits de entropia — cerca de 5,3 undecilhões de valores possíveis.
A probabilidade de colisão é desprezível numa escala difícil de intuir: seria preciso gerar bilhões de UUIDs por segundo durante décadas para que a chance de uma única repetição se tornasse relevante. Para efeitos práticos, v4 não colide.
Ela não carrega nenhuma informação: não dá para saber quando nem onde foi gerada. Isso é uma vantagem de privacidade e uma desvantagem de ordenação.
Versão 1: ordenável, mas vaza informação
A v1 combina timestamp com o endereço MAC da placa de rede da máquina. Isso a torna aproximadamente ordenável por tempo de criação — útil como chave de banco, porque índices em árvore sofrem menos com inserções aleatórias.
O custo é sério: o UUID passa a revelar quando foi gerado e em qual máquina. Já houve investigação forense que identificou o autor de um documento pelo MAC embutido num UUID v1. Se o identificador vai ser exposto publicamente, isso é vazamento de informação.
O problema de índice que a v4 causa
Vale conhecer antes de escolher a v4 como chave primária. Bancos relacionais indexam com árvores B, que funcionam melhor quando as inserções são sequenciais: cada novo registro entra no fim, e as páginas do índice ficam compactas.
UUID v4 é aleatório por definição, então cada inserção cai num ponto imprevisível do índice. Em tabelas grandes isso causa fragmentação de página e queda de desempenho na escrita — um efeito real, documentado em MySQL e PostgreSQL.
Foi para resolver isso que surgiu o UUID v7, padronizado na RFC 9562: ele começa com um timestamp em milissegundos e completa com aleatoriedade. Fica ordenável como a v1, sem expor o MAC como a v1. Para chave primária em projeto novo, é hoje a recomendação — ainda que a v4 continue perfeita para identificador público, token e chave de idempotência.
Onde usar
Identificador público — expor o id sequencial do banco numa URL revela quantos registros existem e permite enumerar. UUID resolve os dois.
Sistemas distribuídos — cada nó gera seus próprios ids sem consultar ninguém.
Chave de idempotência — o cliente gera um UUID por operação, e a API usa esse valor para não processar a mesma requisição duas vezes se a rede falhar no meio.
Correlação de logs — um UUID por requisição atravessa todos os serviços e permite reconstruir o caminho inteiro depois.
Continue por aqui
- Gerador de Senha — UUID não serve como senha nem como token secreto: é identificador, não segredo.
- Números Aleatórios — quando basta um número aleatório em um intervalo, sem os 128 bits do UUID.