Gerador de ULID
Gere em lote ULIDs, identificadores ordenáveis cronologicamente que funcionam como alternativa aos UUID.
Dicas de uso
- Os primeiros 10 caracteres de um ULID codificam um timestamp (o momento da criação), enquanto os 16 restantes são aleatórios. Exceto quando dois ULIDs são gerados no mesmo milissegundo, basta ordenar como texto para obter a ordem cronológica de criação.
- Usar um UUID v4 totalmente aleatório como chave primária de banco de dados tende a fragmentar os índices B-tree, já que novas linhas são inseridas em posições aleatórias. Como os ULIDs seguem aproximadamente a ordem do tempo, as novas linhas tendem a ser inseridas perto do fim do índice, o que ajuda a mitigar esse problema.
- Um ULID é representado por 26 caracteres em Base32 de Crockford (o alfabeto de 32 caracteres `0`-`9` e `A`-`Z` sem as letras I, L, O e U, facilmente confundíveis), o que o torna mais curto que um UUID (36 caracteres incluindo hífens) e seguro para uso em ambientes que não diferenciam maiúsculas de minúsculas.
- Para comparar formatos com o Nano ID e o UUID v4, consulte a tabela comparativa disponível na ferramenta irmã, a página do Gerador de Nano ID.
Perguntas frequentes
Curiosidade — como o ULID trouxe a ordem cronológica para o mundo dos identificadores
A especificação do ULID foi publicada em 2016 por Alizain Feerasta. Na época, o UUID já era o método padrão para gerar identificadores únicos em sistemas distribuídos, mas sua natureza totalmente aleatória — que impedia a ordenação — era vista como inconveniente para a eficiência de índices de bancos de dados e para a análise temporal de logs. O ULID surgiu justamente para resolver esse problema.
Na verdade, o UUID também tem variantes baseadas em tempo: a versão 1 (endereço MAC mais timestamp) e a versão 7 (padronizada em 2024, combinando timestamp e valores aleatórios). Contudo, o ULID é uma especificação independente, distinta do padrão UUID (RFC 4122), e se destaca por buscar um design mais simples aliado a uma representação compacta em Base32.
Hoje em dia existem bibliotecas de implementação do ULID em praticamente todas as principais linguagens de programação, e ele é amplamente adotado em cenários em que preservar a ordem de criação importa: IDs de eventos em sistemas distribuídos, IDs de rastreamento em logs e chaves primárias de bancos de dados, entre outros. Sua filosofia de design coincide bastante com a do UUID v7, que surgiu na mesma época, e ambos coexistem como abordagens diferentes para o mesmo objetivo: um identificador ordenável semelhante ao UUID.