Gerador de UUIDs
Gere UUIDs nas versões v4 (aleatório), v5 (determinístico) e v7 (ordenável).
UUIDs Gerados
Tipos de UUID
v4: Aleatório
Totalmente randômico, com baixa probabilidade de colisão, mas causa fragmentação em índices de banco de dados.
v5: Determinístico
Gerado a partir de um nome e namespace, ao fornecer a mesma entrada sempre gerará o mesmo UUID.
v7: Ordenável
Combina timestamp com aleatoriedade e é otimizado para bancos de dados, permitindo ordenação eficiente.
Dúvidas comuns
O UUID (Universally Unique Identifier) resolve o problema da centralização. Em sistemas distribuídos ou microserviços, se dois servidores criarem o ID "10" ao mesmo tempo, haverá um conflito no banco de dados. O UUID permite que qualquer máquina gere um identificador único sem consultar ninguém, garantindo que a chance de colisão seja estatisticamente nula. Além disso, IDs sequenciais em URLs expõem a quantidade de dados do seu sistema para concorrentes.
A diferença reside na ordenação. O UUID v4 é totalmente aleatório, o que causa fragmentação de índice em bancos de dados (o banco precisa reordenar as páginas de disco a cada inserção). O UUID v7 introduz um timestamp de 48 bits no início do código. Isso o torna lexicograficamente ordenável, ou seja, os registros novos são inseridos sempre ao final do índice, melhorando drasticamente a performance de escrita.
Diferente das outras versões, o v5 não é gerado ao acaso. Ele funciona como uma função matemática: se você fornecer o mesmo Contexto (namespace) e o mesmo Dado (nome), o resultado será rigorosamente o mesmo. Isso é útil para criar IDs únicos para recursos que já possuem um nome natural (como um SKU de produto ou uma URL de perfil), evitando duplicidade de registros sem precisar buscar no banco.
O v7 foi oficializado recentemente pela RFC 9562 para resolver as limitações do v1 e do v4. Ele combina o melhor dos dois mundos: a ordenação temporal (como o v1) e a alta entropia/segurança (como o v4). Para desenvolvedores, é a escolha ideal para chaves e/ou índices no banco de dados.
O UUID v5 utiliza o SHA-1 para realizar o hashing do contexto (namespace) e do dado (nome). Embora o SHA-1 não seja mais recomendado para assinaturas digitais de alta segurança, ele é perfeitamente seguro e ideal para a geração de identificadores únicos, pois o foco aqui é evitar colisões e não necessariamente criptografar dados sensíveis.
Teoricamente, sim. Na prática, não. Para ter 50% de chance de uma única colisão, você precisaria gerar 1 bilhão de UUIDs por segundo durante 85 anos, ou seja, algo bem improvável de acontecer em um sistema normal.
O UUID v7 reserva bits de sequência e entropia após o timestamp. Se você gerar 100 UUIDs no mesmo milissegundo, a parte aleatória garante que eles sejam diferentes, enquanto o timestamp garante que todos eles sejam agrupados próximos no índice do banco de dados, mantendo a performance.
Não. O UUID v5 é um hash, o que significa que ele é uma via de mão única (não dá para descriptografar). No entanto, se um invasor souber o seu contexto (namespace) e testar vários dados (nomes) comuns, ele pode descobrir qual dado gerou aquele UUID através de ataques de força bruta ou tabelas de busca. Nunca use UUIDs para armazenar senhas.
Armazenar como String (varchar) ocupa muito mais espaço e é mais lento para comparar do que o tipo nativo UUID ou BINARY. Sempre que o seu banco (PostgreSQL, MariaDB, SQL Server, etc) suportar o tipo UUID de forma nativa, prefira-o para economizar armazenamento e ganhar velocidade na execução de suas queries.
O FerramentalWeb é ideal para desenvolvedores que precisam de:
- Geração em massa: Criar até 100 IDs de uma vez para popular bancos de teste.
- Consistência (v5): Garantir que inputs de texto gerem IDs estáveis para migração de dados.
- Modernidade (v7): Obter IDs ordenados para novos projetos que exigem alta performance de banco de dados, seguindo a nova RFC 9562.