Gerador de UUID/GUID
Gere identificadores únicos universais (UUID/GUID) de forma instantânea e gratuita! Nossa ferramenta suporta as versões mais utilizadas: UUID v1 (baseado em timestamp), v4 (totalmente aleatório) e v5 (baseado em hash SHA-1). Ideal para desenvolvedores que precisam de IDs únicos para bancos de dados, APIs REST, sistemas distribuídos e muito mais.
O que é UUID/GUID?
UUID (Universally Unique Identifier) ou GUID (Globally Unique Identifier) é um identificador de 128 bits
representado por 32 caracteres hexadecimais, geralmente formatado em 5 grupos separados por hífens:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
. A probabilidade de gerar dois UUIDs idênticos é
astronomicamente baixa (1 em 2128), tornando-os perfeitos para identificação única em
sistemas distribuídos sem necessidade de coordenação central.
Versões de UUID: Diferenças e Casos de Uso
UUID v1 - Baseado em Timestamp
Gerado a partir do timestamp atual (data/hora) combinado com o endereço MAC do computador e um número sequencial. Garante unicidade temporal e permite ordenação cronológica.
Vantagens: Ordenável cronologicamente, ideal para logs e auditoria.
Desvantagens: Pode expor informações sobre quando e onde foi gerado.
Uso ideal: Sistemas de auditoria, logs de eventos, tracking temporal.
UUID v4 - Totalmente Aleatório
Gerado de forma completamente aleatória usando geradores criptograficamente seguros. É a versão mais popular e amplamente utilizada devido à sua simplicidade e alta entropia.
Vantagens: Máxima aleatoriedade, não expõe informações, fácil de gerar.
Desvantagens: Não ordenável, pode causar fragmentação em índices B-tree.
Uso ideal: IDs de registros em bancos de dados, chaves primárias, tokens de sessão.
UUID v5 - Baseado em Hash SHA-1
Gerado a partir de um namespace UUID e um nome, usando hash SHA-1. O mesmo nome sempre gera o mesmo UUID, sendo determinístico e reproduzível.
Vantagens: Determinístico (mesmo input = mesmo output), útil para deduplicação.
Desvantagens: Previsível se o namespace e nome forem conhecidos.
Uso ideal: Deduplicação de dados, identificação de recursos por URL/nome, caching.
Casos de Uso Comuns para UUIDs
- Chaves Primárias em Bancos de Dados: Substituir IDs incrementais para evitar exposição de volume de dados e facilitar mesclagem de bancos distribuídos.
- APIs RESTful: Identificadores únicos para recursos, permitindo criação de IDs no cliente sem consultar o servidor.
- Sistemas Distribuídos: Garantir unicidade sem coordenação entre nós diferentes, essencial em arquiteturas de microserviços.
- Rastreamento de Sessões: IDs únicos para sessões de usuário, carrinho de compras, requisições HTTP.
- Upload de Arquivos: Nomes únicos para arquivos evitando colisões e conflitos.
- Mensageria e Filas: Identificadores de mensagens em sistemas como RabbitMQ, Kafka, AWS SQS.
UUID vs. Auto-Increment: Qual usar?
Característica | UUID | Auto-Increment |
---|---|---|
Unicidade Global | ✅ Sim | ❌ Não (apenas na tabela) |
Geração no Cliente | ✅ Sim | ❌ Não (requer servidor) |
Performance em Índices | ⚠️ Pode causar fragmentação | ✅ Ótima (sequencial) |
Segurança | ✅ Não expõe volume de dados | ⚠️ Expõe quantidade de registros |
Tamanho | ⚠️ 16 bytes (128 bits) | ✅ 4-8 bytes (32-64 bits) |
Como usar UUIDs em diferentes linguagens
JavaScript/TypeScript
// Usando crypto API nativa (Node.js 14.17+)
import { randomUUID } from 'crypto';
const uuid = randomUUID(); // UUID v4
// Usando biblioteca uuid
import { v4 as uuidv4, v1 as uuidv1 } from 'uuid';
const uuid4 = uuidv4();
const uuid1 = uuidv1();
Python
import uuid
# UUID v4 (aleatório)
uuid4 = uuid.uuid4()
# UUID v1 (timestamp)
uuid1 = uuid.uuid1()
# UUID v5 (namespace + nome)
namespace = uuid.NAMESPACE_DNS
uuid5 = uuid.uuid5(namespace, 'geradorbrasil.com.br')
Java
import java.util.UUID;
// UUID v4 (aleatório)
UUID uuid = UUID.randomUUID();
// Converter para string
String uuidString = uuid.toString();
PHP
// UUID v4 usando biblioteca ramsey/uuid
use Ramsey\Uuid\Uuid;
$uuid4 = Uuid::uuid4();
$uuid1 = Uuid::uuid1();
echo $uuid4->toString();
Perguntas Frequentes
É possível gerar dois UUIDs idênticos?
Embora tecnicamente possível, a probabilidade é astronomicamente baixa. Para UUID v4, existem 2122 valores possíveis (aproximadamente 5,3 × 1036). Você precisaria gerar 1 bilhão de UUIDs por segundo durante 85 anos para ter apenas 50% de chance de uma colisão.
Qual versão de UUID devo usar?
Use UUID v4 na maioria dos casos - é simples, seguro e amplamente suportado. Use UUID v1 se precisar de ordenação cronológica ou rastreamento temporal. Use UUID v5 se precisar de determinismo (mesmo input sempre gera mesmo UUID).
UUIDs são seguros para uso como tokens de segurança?
UUID v4 pode ser usado para tokens de sessão de curta duração, mas não é ideal para tokens de
segurança críticos. Para autenticação e autorização, prefira JWT (JSON Web Tokens) ou tokens
gerados com algoritmos criptográficos específicos como o crypto.randomBytes()
.
Posso usar UUID como chave primária no MySQL/PostgreSQL?
Sim! Ambos suportam UUIDs nativamente. No PostgreSQL, use o tipo UUID
. No MySQL
8.0+, use BINARY(16)
ou CHAR(36)
. Considere usar UUID v1 ou ordenar
UUIDs v4 para melhor performance em índices B-tree. Alguns bancos oferecem tipos otimizados como UUID_TO_BIN()
no MySQL.
Como armazenar UUIDs de forma eficiente no banco?
Armazene como binário (16 bytes) em vez de string (36 bytes) para economizar espaço
e melhorar performance. Use funções de conversão como UUID_TO_BIN()
e
BIN_TO_UUID()
no MySQL, ou o tipo nativo UUID
no PostgreSQL.
Dicas de Performance com UUIDs
- Evite fragmentação de índice: UUIDs v4 aleatórios podem causar fragmentação em índices B-tree. Considere UUID v1 ou ULID (Universally Unique Lexicographically Sortable Identifier).
- Use armazenamento binário: Sempre armazene UUIDs como BINARY(16) em vez de VARCHAR(36) para economizar 55% de espaço.
- Indexe apenas quando necessário: UUIDs como chave primária já são indexados. Evite índices secundários desnecessários em colunas UUID.
- Considere alternativas modernas: Para novos projetos, avalie ULID, KSUID ou Snowflake IDs que oferecem ordenação cronológica com tamanho compacto.