O que é Nil UUID?
Nil UUID é uma forma especial de UUID onde todos os 128 bits são definidos como zero. É representado como:
00000000-0000-0000-0000-000000000000
O Nil UUID serve como um valor reservado especial no ecossistema UUID, definido na RFC 4122. Tem um significado semântico específico como um identificador "vazio" ou "nulo" quando um UUID é necessário, mas nenhum identificador real é apropriado.
Como o Nil UUID funciona
- É uma constante predefinida com todos os 128 bits definidos como zero
- Tecnicamente segue o formato UUID de 32 dígitos hexadecimais com hífens no padrão 8-4-4-4-12
- Não possui bits de versão ou variante porque todos os bits são zeros
- É explicitamente identificado na RFC 4122 como um UUID especial
- Pode ser usado como um valor sentinela ou marcador de posição em sistemas que trabalham com UUIDs
Vantagens e Considerações
Advantages | Considerations |
---|---|
|
|
Estrutura do Nil UUID
Bits | Content |
---|---|
0-127 | Todos zeros (0x00000000000000000000000000000000) |
Ao contrário dos UUIDs padrão que têm bits específicos de versão e variante definidos, o Nil UUID tem todos os bits definidos como zero, incluindo o que normalmente seriam os bits de versão e variante.
Nil UUID vs. outras versões
Version | Baseado em | Caso de uso | Uniqueness |
---|---|---|---|
Nil UUID | Constante (todos zeros) | Valor especial, marcador de posição | ❌ Não único (por design) |
UUID v1 | Tempo + MAC | IDs ordenados por tempo | ✅ Globalmente único |
UUID v3 | Namespace + MD5 | IDs determinísticos | ✅ Único por entrada |
UUID v4 | Random | IDs aleatórios seguros | ✅ Estatisticamente único |
UUID v5 | Namespace + SHA-1 | IDs determinísticos | ✅ Único por entrada |
UUID v6 | Tempo (reordenado) | IDs ordenáveis | ✅ Globalmente único |
UUID v7 | Tempo + aleatório | IDs ordenáveis | ✅ Globalmente único |
Casos de Uso Comuns
- Valores padrão: Estado inicial antes de um UUID real ser atribuído
- Valores sentinela: Marcador especial em sistemas que requerem UUIDs
- Detecção de erros: Indicador de UUID não inicializado ou ausente
- Marcadores de banco de dados: Quando um UUID real está pendente ou não aplicável
- Objetos raiz: Relações pai-filho onde a raiz não tem pai
- Funções especiais: Operações do sistema que precisam de um valor UUID conhecido
- Testing: Valor marcador de posição em ambientes de teste
Perguntas Frequentes
O Nil UUID é um UUID válido?
Sim. O Nil UUID é explicitamente definido na RFC 4122 como um UUID especial. Embora não siga as regras normais de versão/variante, é um valor UUID reconhecido com semântica especial.
Posso usar o Nil UUID como identificador?
Não. Você nunca deve usar o Nil UUID como um identificador real. É um valor reservado especial destinado a representar a ausência de um UUID ou um estado padrão. Usá-lo como um identificador comum violaria seu propósito especial.
Como verifico se um UUID é o Nil UUID?
Basta comparar o UUID com a string "00000000-0000-0000-0000-000000000000" ou verificar se todos os bits são zero. A maioria das bibliotecas UUID fornece uma função específica para verificar o Nil UUID.
Todos os sistemas reconhecem o Nil UUID como especial?
Nem sempre. Embora esteja definido na RFC, nem todos os sistemas podem tratá-lo de forma especial. Alguns bancos de dados podem permitir como um valor válido, enquanto outros podem rejeitá-lo ou atribuir semânticas especiais.
Existe diferença entre Nil UUID e um UUID vazio?
Em sistemas corretamente implementados, "Nil UUID" e "UUID vazio" devem se referir ao mesmo conceito: o UUID com todos os zeros. No entanto, alguns sistemas podem ter representações diferentes para "vazio" vs. "nil", então é importante verificar a implementação específica.