Gerador ULID

Gere identificadores lexicograficamente ordenáveis com timestamp e aleatoriedade

Experimente estes exemplos:

O que é ULID?

ULID (Identificador Universalmente Único e Lexicograficamente Ordenável) é um formato de identificador de 128 bits projetado para superar limitações dos UUIDs. Consiste em:

  • Timestamp: 48 bits de tempo Unix com precisão em milissegundos
  • Randomness: 80 bits de dados aleatórios criptograficamente seguros
  • Encoding: Representação Base32 (26 caracteres)

Exemplo de formato: 01ARZ3NDEKTSV4RRFFQ69G5FAV

Como o ULID funciona

  1. Gera 48 bits para timestamp (tempo Unix em milissegundos)
  2. Gera 80 bits de dados aleatórios criptograficamente seguros
  3. Combina timestamp (mais significativo) com aleatoriedade (menos significativo)
  4. Codifica o valor completo de 128 bits usando o alfabeto Base32 de Crockford
  5. O resultado é uma string de 26 caracteres (os 10 primeiros são timestamp, os 16 últimos são aleatoriedade)

Vantagens e Considerações

AdvantagesConsiderations
  • Ordenável lexicograficamente
  • Conjunto de caracteres seguro para URL
  • Nenhuma codificação especial necessária
  • Case-insensitive
  • Sem preocupações de privacidade
  • Mais novo, menos utilizado
  • Suporte limitado em bibliotecas
  • Sem compatibilidade com UUID
  • Não pode retroceder antes de 1970

Estrutura ULID

ComponentBitsCharactersDescription
Timestamp48 bits10 caracteresTimestamp Unix (ms) codificado em Base32
Randomness80 bits16 caracteresBytes aleatórios codificados em Base32

Comparação ULID vs. UUID

FeatureULIDUUID v1UUID v4UUID v7
Size128 bits128 bits128 bits128 bits
Comprimento da string26 caracteres36 caracteres36 caracteres36 caracteres
Time-based
Ordenação natural
Seguro para URL
Exposição de endereço MAC
Componente aleatório
Padrão canônico⚠️ Rascunho

Casos de Uso Comuns

  • Chaves primárias de banco de dados: Índices otimizados para desempenho
  • Sistemas distribuídos: Geração sem coordenação
  • APIs: Identificadores limpos e seguros para URL
  • Dados de séries temporais: Ordenação cronológica nativa
  • Sistemas de log: Identificadores de eventos ordenáveis
  • Aplicações modernas: Onde as limitações do UUID são problemáticas

Por que escolher ULID?

  • Sortability: Ordena lexicograficamente pelo tempo de criação
  • Segurança para URL: Nenhuma codificação de URL necessária (ao contrário dos UUIDs com hífens)
  • Compactness: 26 caracteres vs 36 para UUID
  • Insensibilidade a maiúsculas/minúsculas: Reduz erros de entrada do usuário
  • Monotonicity: Ordenação monotônica opcional dentro do mesmo milissegundo
  • Sem caracteres especiais: Formato simples, apenas alfanumérico

Perguntas Frequentes

Como o ULID se compara ao UUID v7?

Ambos usam timestamps Unix para ordenação e possuem componentes aleatórios. As principais diferenças são a codificação (Base32 vs hex), formato (26 caracteres vs 36) e padronização (UUID v7 está em especificação RFC em rascunho).

Posso extrair o tempo de criação de um ULID?

Sim. Os primeiros 10 caracteres representam um timestamp Unix com precisão em milissegundos que pode ser decodificado e convertido para um datetime padrão.

ULIDs são compatíveis com campos UUID em bancos de dados?

Não. ULIDs usam um formato diferente e precisam ser armazenados como strings ou dados binários, em vez de tipos nativos UUID em bancos de dados.

O que é monotonicidade em ULIDs?

Algumas implementações de ULID oferecem uma opção monotônica que garante ordem sequencial mesmo dentro do mesmo milissegundo, incrementando o componente aleatório para ULIDs criados no mesmo timestamp.

Qual conjunto de caracteres o ULID usa?

ULID usa a codificação Base32 de Crockford (0-9, A-Z excluindo I, L, O, U) que é projetada para minimizar confusão e erros de transcrição quando os IDs são lidos ou inseridos manualmente.

Resources

Alfabeto Base32 de Crockford

Valor de CodificaçãoCharacterNotes
0-90-9Dígitos decimais
10-31A-ZExcluindo I, L, O, U para legibilidade

Caracteres: 0123456789ABCDEFGHJKMNPQRSTVWXYZ

Esta codificação é insensível a maiúsculas/minúsculas para decodificação (mas ULIDs são tipicamente gerados em maiúsculas).