Você conhece o ULID?

Ao contrário do UUID, que é baseado em números aleatórios ou baseados em data/hora, o ULID é levemente parecido com o SnowFlake, sendo fortemente baseado em data/hora e em números aleatórios.

O ULID foi projetado para resolver os problemas do UUID em determinados cenários e fornecer vantagens adicionais.

Isso torna o ULID muito útil em cenários que exigem classificação, mantendo a exclusividade global, como classificação de logs, chaves primárias de banco de dados, etc., em sistemas distribuídos.

O ULID é composto de duas partes principais:

  • Carimbo de Data/Hora: Os primeiros 48 bits de um ULID são dedicados ao carimbo de data/hora, medido em milissegundos desde a era Unix (1º de janeiro de 1970). Esta precisão em milissegundos permite que o ULID ordene os identificadores de forma cronológica, proporcionando uma visão temporal clara de quando cada identificador foi gerado.
  • Componente Aleatório: Após o carimbo de data/hora, os próximos 80 bits são preenchidos com números aleatórios. Esta grande espaço de números (1,21e+24 possíveis combinações por milissegundo) garante que cada ULID seja único, mesmo que múltiplos ULIDs sejam gerados no mesmo milissegundo.

O ULID é composto por 26 caracteres e utiliza o esquema de codificação Base32 de Crockford, que exclui alguns caracteres facilmente confundidos, como “l” minúsculo e o número “1”, “O” maiúsculo e o número “0”, tornando o ULID mais fácil de distinguir visualmente, e diminui as chances de erros ao digitar manualmente, e suficientemente curto para ser convenientemente armazenado e exibido em logs e bancos de dados.

Os ULIDs são notavelmente exclusivos graças à sua combinação de uma assinatura precisa de data/hora e números aleatórios, o que elimina duplicações, mesmo quando vários são gerados no mesmo milissegundo.

Sua assinatura de data/hora possui precisão de milissegundos, refletindo exatamente o momento de sua geração. Isso não apenas os torna temporais, mas também facilita a classificação e recuperação de entidades.

Além disso, o processo de geração de ULIDs é autônoma, não requerendo acesso à rede.

O ULID e UUID têm o mesmo tamanho de 128 bits e são compatíveis com o padrão UUID existente, garantindo interoperabilidade em diversos sistemas.

Utiliza-lo como um identificador globalmente exclusivo, aumenta a classificação e ao mesmo tempo garante a exclusividade, Tornando-o ideal para aplicações modernas que exigem identificadores exclusivos de alto desempenho.

À medida que os sistemas distribuídos e as arquiteturas de microsserviços se tornam mais populares, o ULID se tornará ainda mais popular.

Sobre Nicolau 33 Artigos
Fuçando o desenvolvimento de software desde 2013, sou da turma do código aberto, vivo pesquisando e garimpando a segurança na web. Sommelier de sucos e chocólatra de carteirinha. Hic svnt dracones.

Seja o primeiro a comentar

Faça um comentário

Seu e-mail não será divulgado.


*