KSUID Generator for Unique and Sortable Identifiers
Generujte K-sortovateľné unikátne identifikátory (KSUID) na použitie v distribuovaných systémoch, databázach a aplikáciách vyžadujúcich unikátne, časovo sortovateľné kľúče. KSUID kombinujú časovú pečiatku s náhodnými údajmi na vytvorenie identifikátorov odolných voči kolíziám a sortovateľných.
Generátor KSUID
Dokumentácia
Generátor KSUID
Úvod
KSUID (K-Sortable Unique IDentifier) je formát jedinečného identifikátora, ktorý ponúka niekoľko výhod oproti tradičnému UUID (Universally Unique Identifier) a iným systémom identifikátorov. Tento nástroj vám umožňuje rýchlo a jednoducho generovať KSUID.
Čo je KSUID?
KSUID je 20-bajtový usporiadateľný identifikátor, ktorý pozostáva z:
- 32-bitového časového odtlačku (4 bajty)
- 16 bajtov náhodnosti
Keď je reprezentovaný ako reťazec, KSUID je kódovaný v base62 a má 27 znakov.
Štruktúra KSUID
Štruktúra KSUID môže byť rozdelená nasledovne:
-
Časový odtlačok (4 bajty): Tento odtlačok predstavuje počet sekúnd od Unix epochy (1. január 1970, 00:00 UTC). Časový odtlačok umožňuje, aby boli KSUIDy približne usporiadateľné podľa času generovania.
-
Náhodná zložka (16 bajtov): Toto je kryptograficky bezpečné náhodné číslo, ktoré zabezpečuje jedinečnosť, aj keď sú generované viaceré KSUIDy v tej istej sekunde.
-
Kódovanie base62: Kombinovaných 20 bajtov (časový odtlačok + náhodný) sú potom kódované pomocou base62 (A-Z, a-z, 0-9), aby sa vytvoril konečný 27-znakový reťazec.
Formula KSUID
KSUID môže byť matematicky reprezentovaný ako:
Kde:
- je 32-bitový časový odtlačok
- je 128-bitová náhodná zložka
- označuje zreťazenie
Časový odtlačok sa vypočíta ako:
T = \text{floor}(\text{current_time} - \text{KSUID_epoch})
Kde KSUID_epoch je 1400000000 (2014-05-13T16:53:20Z).
Diagram štruktúry KSUID
Prípady použitia KSUID
KSUIDy sú obzvlášť užitočné v nasledujúcich scenároch:
-
Distribuované systémy: Keď potrebujete jedinečné identifikátory naprieč viacerými servermi alebo službami bez koordinácie.
-
Časovo usporiadateľné dáta: Keď chcete usporiadať dáta podľa času vytvorenia bez ukladania samostatného časového odtlačku.
-
Kľúče databázy: Ako primárne kľúče v databázach, najmä v distribuovaných databázach, kde nie sú vhodné automaticky zvyšujúce sa celé čísla.
-
URL-bezpečné identifikátory: Na vytváranie krátkych, jedinečných, URL-bezpečných identifikátorov pre zdroje vo webových aplikáciách.
-
Korelácia protokolov: Na koreláciu záznamov protokolov naprieč rôznymi službami v architektúre mikroservisov.
Výhody KSUID
KSUIDy ponúkajú niekoľko výhod oproti iným systémom identifikátorov:
-
Usporiadateľnosť: Na rozdiel od UUID, KSUIDy môžu byť chronologicky usporiadané, čo je užitočné pre indexovanie databáz a analýzu protokolov.
-
Nie je potrebná koordinácia: Na rozdiel od automaticky zvyšujúcich sa ID, KSUIDy môžu byť generované nezávisle rôznymi servermi bez rizika kolízií.
-
Kompaktné zastúpenie: Pri 27 znakoch sú KSUIDy kompaktnejšie ako UUID, keď sú reprezentované ako reťazce.
-
Vložený časový odtlačok: Vložený časový odtlačok umožňuje časové usporiadanie a filtrovanie bez potreby samostatného poľa časového odtlačku.
-
URL-bezpečné: Kódovanie base62 robí KSUIDy bezpečné na použitie v URL bez ďalšieho kódovania.
-
Znížená pravdepodobnosť kolízií: 16-bajtová náhodná zložka robí kolízie extrémne nepravdepodobné, aj pri vysokých rýchlostiach generovania.
Ako používať tento generátor
- Zadajte akékoľvek ďalšie parametre, ak sú potrebné (napr. vlastný časový odtlačok).
- Kliknite na tlačidlo "Generovať KSUID", aby ste vytvorili nový KSUID.
- Vygenerovaný KSUID sa zobrazí v poli výstupu.
- Môžete generovať viacero KSUIDov opakovaním krokov 1-3.
- Použite tlačidlo "Kopírovať" vedľa každého KSUIDu, aby ste ho skopírovali do schránky.
- Voliteľne použite funkciu "Export", aby ste si stiahli zoznam vygenerovaných KSUIDov.
Pamätajte, že každý KSUID je jedinečný a mal by sa používať len raz. Generujte nový KSUID zakaždým, keď potrebujete jedinečný identifikátor.
Príklady kódu
Tu sú príklady generovania KSUIDov v rôznych programovacích jazykoch:
1## Python
2import ksuid
3
4new_id = ksuid.ksuid()
5print(f"Vygenerovaný KSUID: {new_id}")
6
1// JavaScript
2const { ksuid } = require('ksuid')
3
4const newId = ksuid()
5console.log(`Vygenerovaný KSUID: ${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("Vygenerovaný KSUID: " + 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 << "Vygenerovaný KSUID: " << newId.string() << std::endl;
8 return 0;
9}
10
1## Ruby
2require 'ksuid'
3
4new_id = KSUID.new
5puts "Vygenerovaný KSUID: #{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 "Vygenerovaný KSUID: " . $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("Vygenerovaný KSUID: %s\n", newId.String())
12}
13
1// Swift
2import KSUID
3
4let newId = KSUID()
5print("Vygenerovaný KSUID: \(newId)")
6
Odkazy
- GitHub repozitár KSUID od Segmentu: https://github.com/segmentio/ksuid
- "Generovanie dobrých jedinečných identifikátorov" od Petra Bourgona: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
- Špecifikácia KSUID: https://github.com/segmentio/ksuid/blob/master/README.md
Spätná väzba
Kliknite na toast so spätnou väzbou, aby ste začali dávať spätnú väzbu o tomto nástroji
Súvisiace nástroje
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre váš pracovný tok