O que são UUIDs?
UUID (Identificador Universalmente Único) é um formato de identificador padronizado projetado para ser globalmente único no espaço e no tempo. UUIDs são valores de 128 bits tipicamente representados como 32 dígitos hexadecimais, exibidos em cinco grupos separados por hífens: 123e4567-e89b-12d3-a456-426614174000
.
UUIDs são definidos pelo padrão RFC 9562 (que substitui o anterior RFC 4122) e são usados em plataformas computacionais para identificar informações sem exigir registro ou coordenação centralizada.
Formato do UUID
Todos os UUIDs compartilham um formato comum consistindo de 36 caracteres (32 dígitos hexadecimais mais 4 hífens) organizados no padrão:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Onde:
x
é qualquer dígito hexadecimal (0-9, a-f)M
indica a versão do UUID (1-7)N
indica a variante do UUID (tipicamente 8, 9, A ou B para UUIDs modernos)
Comparação das Versões de UUID
Version | Name | Método de Geração | Time-ordered | Casos de Uso |
---|---|---|---|---|
UUID v1 | Timestamp | Timestamp atual + ID do nó (MAC) | Sim (parcialmente) | Registro, sistemas distribuídos |
UUID v3 | Baseado em nome (MD5) | Hash MD5 do namespace + nome | No | IDs consistentes para a mesma entrada |
UUID v4 | Random | Números aleatórios ou pseudoaleatórios | No | Uso geral, o mais comum |
UUID v5 | Baseado em nome (SHA-1) | Hash SHA-1 do namespace + nome | No | IDs consistentes com hash mais forte |
UUID v6 | Timestamp reordenado | Timestamp (ordenado para classificação) | Yes | Chaves de banco de dados, registros ordenáveis por tempo |
UUID v7 | Timestamp Unix Epoch | Timestamp Unix + dados aleatórios | Yes | Identificadores modernos ordenáveis |
UUID Nulo | UUID Zero | Todos zeros | N/A | Valor especial, marcador não inicializado |
Vantagens dos UUIDs
- Nenhuma Coordenação Necessária: Gerar IDs sem coordenação central
- Unicidade Global: Probabilidade extremamente baixa de colisão
- Comprimento Fixo: Representação consistente de string com 36 caracteres
- Cross-Platform: Suportado em praticamente todas as linguagens de programação
- Versatile: Diferentes versões para diferentes casos de uso
Alternativas Não-Padrão para UUID
Tipo de ID | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Implementação da Microsoft do UUID | Funcionalmente equivalente ao UUID | Algumas diferenças de implementação em sistemas antigos |
ULID | Identificador Universalmente Único Lexicograficamente Ordenável | Ordenável lexicograficamente, timestamp primeiro, insensível a maiúsculas | Mais novo, adoção menos difundida |
ID Snowflake | Sistema de ID distribuído do Twitter | Ordenável por tempo, compacto (64 bits) | Requer coordenação central |
CUID/CUID2 | IDs resistentes a colisão | Curto, adequado para geração no lado do cliente | Não é um padrão oficial |
Nano ID | Gerador de ID único pequeno, seguro e amigável para URLs | Menor que UUID, alfabeto configurável | Não padronizado |
UUID Curto | Codificação mais curta dos UUIDs padrão | Representação mais compacta | Requer conversão para/de UUID padrão |
UUID Nulo | UUID com todos os bits zerados | Significado semântico especial | Não único (usado como valor especial) |
UUID do Minecraft | UUIDs com ou sem hífens | Compatível com UUIDs padrão | Apenas diferenças de formatação |
Aplicações Práticas
- Chaves Primárias de Banco de Dados: Especialmente em bancos de dados distribuídos ou replicados
- Sistemas Distribuídos: Identificar entidades em múltiplos sistemas
- Aplicações Web: Identificadores de sessão, rastreamento de usuários anônimos
- Gerenciamento de Conteúdo: Identificadores de documentos e mídia
- APIs: Identificadores de requisição e transação para rastreamento e depuração
- Internet das Coisas: Identificação de dispositivos sem registro central
- Sincronização de Dados: Identificação de registros em múltiplos armazenamentos de dados
- Licenciamento de Software: Chaves únicas de produto ou licença