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:
- Um timestamp de 32 bits (4 bytes)
- 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:
-
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.
-
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.
-
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:
Onde:
- é o timestamp de 32 bits
- é o componente aleatório de 128 bits
- denota concatenação
O timestamp é 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
Casos de Uso para KSUIDs
KSUIDs são particularmente úteis nos seguintes cenários:
-
Sistemas Distribuídos: Quando você precisa de identificadores únicos em vários servidores ou serviços sem coordenação.
-
Dados Ordenáveis por Tempo: Quando você deseja ordenar dados por tempo de criação sem armazenar um timestamp separado.
-
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.
-
Identificadores Seguros para URL: Para criar identificadores curtos, únicos e seguros para URL para recursos em aplicações web.
-
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:
-
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.
-
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.
-
Representação Compacta: Com 27 caracteres, os KSUIDs são mais compactos que os UUIDs quando representados como strings.
-
Timestamp Embutido: O timestamp embutido permite a ordenação e filtragem baseadas em tempo sem a necessidade de um campo de timestamp separado.
-
Seguro para URL: A codificação base62 torna os KSUIDs seguros para uso em URLs sem codificação adicional.
-
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
- Insira quaisquer parâmetros adicionais, se necessário (por exemplo, timestamp personalizado).
- Clique no botão "Gerar KSUID" para criar um novo KSUID.
- O KSUID gerado será exibido no campo de saída.
- Você pode gerar múltiplos KSUIDs repetindo os passos 1-3.
- Use o botão "Copiar" ao lado de cada KSUID para copiá-lo para a área de transferência.
- 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
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`KSUID Gerado: ${newId}`)
6
1// Java
2import com.github.ksuid.KsuidGenerator;
3
4public class KsuidExample {
5 public static void main(String[] args) {
6 String newId = KsuidGenerator.generate();
7 System.out.println("KSUID Gerado: " + newId);
8 }
9}
10
1// C++
2#include <iostream>
3#include <ksuid/ksuid.hpp>
4
5int main() {
6 ksuid::Ksuid newId = ksuid::Ksuid::generate();
7 std::cout << "KSUID Gerado: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "KSUID Gerado: #{new_id}"
6
1// PHP
2<?php
3require_once 'vendor/autoload.php';
4
5use Tuupola\KsuidFactory;
6
7$factory = new KsuidFactory();
8$newId = $factory->create();
9echo "KSUID Gerado: " . $newId . "\n";
10?>
11
1// Go
2package main
3
4import (
5 "fmt"
6 "github.com/segmentio/ksuid"
7)
8
9func main() {
10 newId := ksuid.New()
11 fmt.Printf("KSUID Gerado: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("KSUID Gerado: \(newId)")
6
Referências
- Repositório KSUID do Segment: https://github.com/segmentio/ksuid
- "Gerando bons identificadores únicos" por Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- Especificação do KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
Feedback
Clique no aviso de feedback para começar a dar feedback sobre esta ferramenta
Ferramentas Relacionadas
Descubra mais ferramentas que podem ser úteis para seu fluxo de trabalho