O que é UUID? Guia Completo com Exemplos e Boas Práticas
O UUID (Universally Unique Identifier) é um identificador único universal utilizado para identificar registros, objetos, usuários, arquivos e diversos outros recursos em sistemas computacionais.
Seu principal objetivo é gerar identificadores com uma probabilidade extremamente baixa de colisão, permitindo que diferentes sistemas criem IDs únicos sem precisar consultar um servidor central.
Atualmente, UUIDs são amplamente utilizados em APIs, bancos de dados, microsserviços, aplicações distribuídas e armazenamento em nuvem.
Índice
- Como funciona
- Estrutura
- Versões do UUID
- UUID v4
- UUID v7
- UUID x GUID
- Onde é utilizado
- Exemplos de código
- Vantagens
- Limitações
- Erros comuns
- Boas práticas
- Perguntas frequentes
- Experimente nossa ferramenta
Como funciona um UUID?
Um UUID possui 128 bits, normalmente representados por 32 caracteres hexadecimais, divididos em cinco grupos.
Exemplo:
550e8400-e29b-41d4-a716-446655440000
Esse formato facilita a leitura humana sem alterar o valor do identificador.
Estrutura
Um UUID é composto por cinco blocos:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Onde:
- M representa a versão do UUID (1, 3, 4, 5, 7)
- N indica a variante utilizada
| Bloco | Tamanho | Descrição | |-------|---------|-----------| | 1º | 8 chars | time-low | | 2º | 4 chars | time-mid | | 3º | 4 chars | time-high + versão | | 4º | 4 chars | clock-seq + variante | | 5º | 12 chars | node |
Versões do UUID
Existem diferentes versões, cada uma com um objetivo específico.
UUID v1
Baseado em:
- Data e hora
- Endereço MAC da máquina
Vantagens: Ordenação temporal. Desvantagens: Pode expor informações da máquina.
UUID v3
Gerado utilizando:
- Namespace
- Nome
- Hash MD5
Sempre gera o mesmo UUID para a mesma entrada (determinístico).
UUID v4
É a versão mais utilizada atualmente. Quase todos os seus bits são gerados aleatoriamente.
Exemplo:
7d444840-9dc0-41d1-b245-5ffdce74fad2
É ideal para:
- APIs
- Bancos de dados
- Identificadores públicos
- Sistemas distribuídos
UUID v5
Semelhante ao v3, porém utiliza SHA-1 em vez de MD5. Também é determinístico.
UUID v7
O UUID v7 é uma versão mais recente que combina:
- Timestamp (milissegundos Unix)
- Aleatoriedade
Ele foi projetado para melhorar a ordenação em bancos de dados e reduzir fragmentação de índices. Por isso, vem sendo adotado por diversos projetos modernos.
Comparativo
| Versão | Base | Determinístico | Ordenável | |--------|------|----------------|-----------| | v1 | Tempo + MAC | Não | Sim | | v3 | Namespace + MD5 | Sim | Não | | v4 | Aleatório | Não | Não | | v5 | Namespace + SHA-1 | Sim | Não | | v7 | Tempo + Aleatório | Não | Sim |
UUID x GUID
Na prática, UUID e GUID representam o mesmo conceito.
A diferença é apenas histórica:
- UUID é o termo definido pelo padrão (RFC 4122)
- GUID foi o nome adotado pela Microsoft
Hoje, ambos costumam ser usados como sinônimos.
Onde o UUID é utilizado?
Você encontrará UUID em praticamente qualquer sistema moderno:
- APIs REST
- Microsserviços
- Bancos de dados
- Arquivos e objetos na nuvem
- Aplicações mobile
- Sistemas distribuídos
- Filas de processamento
- Eventos e logs
Exemplos de código
JavaScript (navegador)
Os navegadores modernos possuem suporte nativo:
const id = crypto.randomUUID();
console.log(id);
// Resultado: 3f5d74fd-26a7-4a3e-a09d-85b6d5d8c0f1
Node.js
import { randomUUID } from "crypto";
const id = randomUUID();
console.log(id);
Python
import uuid
id = uuid.uuid4()
print(id)
PostgreSQL
CREATE TABLE usuarios (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
nome TEXT NOT NULL
);
INSERT INTO usuarios (id, nome) VALUES (gen_random_uuid(), 'João');
Vantagens
- Identificadores praticamente únicos
- Não depende de sequência numérica
- Pode ser gerado em qualquer servidor
- Excelente para sistemas distribuídos
- Evita conflitos entre múltiplas aplicações
- Ideal para sincronização entre bancos
- Suportado nativamente pela maioria dos bancos e linguagens
Limitações
- Ocupa mais espaço que um inteiro (16 bytes vs 4-8 bytes)
- Pode impactar índices dependendo da versão utilizada (v4 é aleatório, causa fragmentação)
- É menos legível para humanos
- Nem sempre é a melhor escolha para tabelas muito grandes com alta leitura sequencial
Erros comuns
Utilizar UUID sem necessidade
Para sistemas simples e locais, um identificador numérico pode ser suficiente. UUID é mais indicado quando há necessidade de unicidade global ou geração distribuída.
Escolher a versão errada
Nem todo UUID serve para o mesmo cenário:
- v4 → aleatoriedade pura
- v7 → ordenação temporal (melhor para índices)
- v5 → identificadores determinísticos (mesmo input → mesmo UUID)
Expor IDs internos sem planejamento
Embora UUID dificulte adivinhações em comparação com IDs sequenciais, ele não substitui mecanismos de autorização. Sempre valide as permissões do usuário antes de fornecer acesso a um recurso.
Boas práticas
✔ Utilize UUID v4 para identificadores aleatórios
✔ Considere UUID v7 quando precisar de melhor ordenação em bancos de dados
✔ Gere UUIDs utilizando bibliotecas confiáveis ou APIs nativas (crypto.randomUUID())
✔ Não tente criar UUIDs manualmente
✔ Utilize o tipo UUID nativo do banco de dados quando disponível
✔ Para URLs públicas, considere UUIDs curtos (Base62 encoding) se legibilidade importar
✔ Indexe colunas UUID corretamente no banco de dados
Perguntas Frequentes
UUID pode se repetir?
Na teoria, sim. Na prática, a probabilidade é extremamente baixa (2¹²² combinações possíveis para v4), tornando colisões praticamente irrelevantes para aplicações comuns.
UUID é criptografado?
Não. Ele é apenas um identificador. Não deve ser utilizado para proteger informações.
UUID é mais seguro que ID sequencial?
Ele dificulta a adivinhação de identificadores (não é possível prever o próximo UUID), mas não substitui autenticação ou controle de acesso.
Qual UUID devo utilizar?
Na maioria dos projetos: UUID v4 é uma excelente escolha. Se precisar de melhor desempenho em índices e ordenação temporal: UUID v7.
UUID ocupa mais espaço?
Sim. Um UUID possui 128 bits (16 bytes), enquanto um INT ocupa 4 bytes e um BIGINT ocupa 8 bytes. Em tabelas com milhões de registros, isso pode impactar o armazenamento.
Posso usar UUID como chave primária?
Sim. É uma prática comum. Use o tipo nativo UUID do banco (PostgreSQL, MySQL 8+) e considere UUID v7 para melhor performance de escrita sequencial.
Conclusão
O UUID tornou-se um dos padrões mais importantes para identificação de recursos em aplicações modernas.
Sua capacidade de gerar identificadores praticamente únicos sem depender de um servidor central faz dele uma excelente escolha para APIs, microsserviços, bancos de dados distribuídos e aplicações escaláveis.
Escolher a versão adequada e seguir boas práticas ajuda a obter melhor desempenho e organização do sistema.
Experimente nossa ferramenta
Precisa gerar um UUID rapidamente?
Utilize gratuitamente o Gerador de UUID do Toolbox Brasil:
- Gere identificadores válidos instantaneamente
- Suporte a geração em lote (até 100 UUIDs)
- Funciona diretamente no navegador
- Sem necessidade de instalar qualquer software