ULID Generator
Understand ULID Generator
Gera ULIDs — identificadores de 26 caracteres cujos primeiros caracteres codificam o horário de criação, então eles se ordenam cronologicamente como texto puro.
How it works
Um ULID tem 128 bits: um timestamp de 48 bits em milissegundos seguido de 80 bits aleatórios, escritos em Crockford Base32 como 10 caracteres de timestamp e 16 aleatórios. Como essa codificação preserva a ordenação, ordenar as strings ordena por horário de criação, e é isso que torna os ULIDs baratos como chaves de banco de dados — linhas novas entram no fim do índice em vez de se espalharem por ele. O alfabeto omite I, L, O e U para manter a transcrição sem ambiguidade.
When to use it
- Chaves primárias de uma tabela em que você quer ordenação por tempo sem uma sequência central.
- IDs de eventos, logs ou mensagens que você depois vai querer varrer por faixa de tempo.
- IDs gerados de forma independente em vários serviços que ainda assim precisam se ordenar juntos.
- Qualquer lugar onde você usaria UUID v4 mas se importa com a localidade do índice.
- Identificadores que uma pessoa pode precisar ler de uma tela, onde o alfabeto restrito ajuda.
Watch out for
- A ordenação vale só até onde o relógio vale. O modo monotônico mantém um lote ordenado dentro de um mesmo milissegundo incrementando o componente aleatório, mas dois ULIDs gerados em máquinas diferentes são ordenados pelos relógios dessas máquinas — alguns milissegundos de desvio já os reordenam.
- O horário de criação é público. Os 10 primeiros caracteres decodificam direto de volta para um timestamp em milissegundos, então qualquer um com um ULID sabe quando o registro foi criado.
- O Crockford Base32 não distingue maiúsculas no papel, mas um índice de banco que compara bytes brutos distingue. Esta ferramenta sempre emite em maiúsculas; armazene uma única caixa de forma consistente ou a ordenação e a igualdade vão surpreender você.
- O componente aleatório tem 80 bits contra os 122 de um UUID v4, o que só importa dentro de um mesmo milissegundo — mas significa, sim, que o ULID é uma escolha mais fraca que o UUID v4 onde o id precisa ser impossível de adivinhar.
Frequently Asked Questions
Por que o ULID é melhor que o UUID v4 como chave primária de banco de dados?
O UUID v4 é aleatório, o que causa inserções aleatórias no índice B-tree e fragmentação severa em escala. O ULID é ordenado por tempo — registros novos sempre entram no fim do índice, como inteiros auto-incrementais, mas globalmente únicos.
O que é o modo monotônico no ULID?
Quando vários ULIDs caem no mesmo milissegundo, o modo monotônico incrementa em um o componente aleatório anterior em vez de sortear bits novos. Isso garante ordem lexicográfica estrita dentro de um milissegundo, o que ULIDs puramente aleatórios não conseguem. Este gerador usa o modo monotônico por padrão quando você pede um lote.
O ULID diferencia maiúsculas de minúsculas?
Não — o ULID usa o Crockford Base32 (0-9, A-Z sem I, L, O, U), que por desenho não distingue maiúsculas. 01AN4Z07BY é o mesmo que 01an4z07by. O alfabeto também evita caracteres visualmente confusos.
How to Use ULID Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.