🛠️

Whiz Tools

Build • Create • Innovate

Gerador de Identificadores Únicos K-Sortáveis (KSUIDs)

Gere Identificadores Únicos K-Sortáveis (KSUIDs) para uso em sistemas distribuídos, bancos de dados e aplicativos que requerem chaves únicas e ordenáveis por tempo. KSUIDs combinam um timestamp com dados aleatórios para criar identificadores resistentes a colisões e ordenáveis.

Gerador de KSUID

📚

Documentação

Gerador de KSUID

Introdução

KSUID (Identificador Único K-Sortable) é um formato de identificador único que oferece várias vantagens em relação ao UUID (Identificador Único Universal) e outros sistemas de identificadores. Esta ferramenta permite gerar KSUIDs de forma rápida e fácil.

O que é um KSUID?

Um KSUID é um identificador ordenável de 20 bytes que consiste em:

  1. Um timestamp de 32 bits (4 bytes)
  2. 16 bytes de aleatoriedade

Quando representado como uma string, um KSUID é codificado em base62 e tem 27 caracteres de comprimento.

Estrutura de um KSUID

A estrutura de um KSUID pode ser dividida da seguinte forma:

  1. Timestamp (4 bytes): Isso representa o número de segundos desde a época Unix (1 de janeiro de 1970, às 00:00 UTC). O timestamp permite que os KSUIDs sejam aproximadamente ordenáveis por tempo de geração.

  2. Componente Aleatório (16 bytes): Este é um número aleatório criptograficamente seguro que garante a unicidade mesmo quando múltiplos KSUIDs são gerados no mesmo segundo.

  3. Codificação Base62: Os 20 bytes combinados (timestamp + aleatório) são então codificados usando base62 (A-Z, a-z, 0-9) para produzir a string final de 27 caracteres.

Fórmula do KSUID

Um KSUID pode ser representado matematicamente como:

KSUID=Base62(TR)KSUID = Base62(T || R)

Onde:

  • TT é o timestamp de 32 bits
  • RR é o componente aleatório de 128 bits
  • || denota concatenação

O timestamp TT é calculado como:

T = \text{floor}(\text{current_time} - \text{KSUID_epoch})

Onde KSUID_epoch é 1400000000 (2014-05-13T16:53:20Z).

Diagrama da Estrutura do KSUID

Timestamp (4 bytes) Componente Aleatório (16 bytes)

Casos de Uso para KSUIDs

KSUIDs são particularmente úteis nos seguintes cenários:

  1. Sistemas Distribuídos: Quando você precisa de identificadores únicos em vários servidores ou serviços sem coordenação.

  2. Dados Ordenáveis por Tempo: Quando você deseja ordenar dados por tempo de criação sem armazenar um timestamp separado.

  3. Chaves de Banco de Dados: Como chaves primárias em bancos de dados, especialmente em bancos de dados distribuídos onde inteiros auto-incrementais não são adequados.

  4. Identificadores Seguros para URL: Para criar identificadores curtos, únicos e seguros para URL para recursos em aplicações web.

  5. Correlação de Logs: Para correlacionar entradas de log entre diferentes serviços em uma arquitetura de microserviços.

Vantagens dos KSUIDs

KSUIDs oferecem várias vantagens sobre outros sistemas de identificadores:

  1. Ordenabilidade: Ao contrário dos UUIDs, os KSUIDs podem ser ordenados cronologicamente, o que é útil para indexação de banco de dados e análise de logs.

  2. Nenhuma Coordenação Necessária: Ao contrário dos IDs auto-incrementais, os KSUIDs podem ser gerados independentemente por diferentes servidores sem risco de colisões.

  3. Representação Compacta: Com 27 caracteres, os KSUIDs são mais compactos que os UUIDs quando representados como strings.

  4. Timestamp Embutido: O timestamp embutido permite a ordenação e filtragem baseadas em tempo sem a necessidade de um campo de timestamp separado.

  5. Seguro para URL: A codificação base62 torna os KSUIDs seguros para uso em URLs sem codificação adicional.

  6. Probabilidade de Colisão Reduzida: O componente aleatório de 16 bytes torna as colisões extremamente improváveis, mesmo em altas taxas de geração.

Como Usar Este Gerador

  1. Insira quaisquer parâmetros adicionais, se necessário (por exemplo, timestamp personalizado).
  2. Clique no botão "Gerar KSUID" para criar um novo KSUID.
  3. O KSUID gerado será exibido no campo de saída.
  4. Você pode gerar múltiplos KSUIDs repetindo os passos 1-3.
  5. Use o botão "Copiar" ao lado de cada KSUID para copiá-lo para a área de transferência.
  6. Opcionalmente, use o recurso "Exportar" para baixar uma lista de KSUIDs gerados.

Lembre-se de que cada KSUID é único e deve ser usado apenas uma vez. Gere um novo KSUID sempre que precisar de um identificador único.

Exemplos de Código

Aqui estão exemplos de geração de KSUIDs em várias linguagens de programação:

1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"KSUID Gerado: {new_id}")
6

Referências

  1. Repositório KSUID do Segment: https://github.com/segmentio/ksuid
  2. "Gerando bons identificadores únicos" por Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Especificação do KSUID: https://github.com/segmentio/ksuid/blob/master/README.md