🛠️

Whiz Tools

Build • Create • Innovate

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:

  1. 32-bitového časového odtlačku (4 bajty)
  2. 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:

  1. Č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.

  2. 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.

  3. 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:

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

Kde:

  • TT je 32-bitový časový odtlačok
  • RR je 128-bitová náhodná zložka
  • || označuje zreťazenie

Časový odtlačok TT 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

Časový odtlačok (4 bajty) Náhodná zložka (16 bajtov)

Prípady použitia KSUID

KSUIDy sú obzvlášť užitočné v nasledujúcich scenároch:

  1. Distribuované systémy: Keď potrebujete jedinečné identifikátory naprieč viacerými servermi alebo službami bez koordinácie.

  2. Časovo usporiadateľné dáta: Keď chcete usporiadať dáta podľa času vytvorenia bez ukladania samostatného časového odtlačku.

  3. 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.

  4. 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.

  5. 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:

  1. 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.

  2. 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í.

  3. Kompaktné zastúpenie: Pri 27 znakoch sú KSUIDy kompaktnejšie ako UUID, keď sú reprezentované ako reťazce.

  4. 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.

  5. URL-bezpečné: Kódovanie base62 robí KSUIDy bezpečné na použitie v URL bez ďalšieho kódovania.

  6. 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

  1. Zadajte akékoľvek ďalšie parametre, ak sú potrebné (napr. vlastný časový odtlačok).
  2. Kliknite na tlačidlo "Generovať KSUID", aby ste vytvorili nový KSUID.
  3. Vygenerovaný KSUID sa zobrazí v poli výstupu.
  4. Môžete generovať viacero KSUIDov opakovaním krokov 1-3.
  5. Použite tlačidlo "Kopírovať" vedľa každého KSUIDu, aby ste ho skopírovali do schránky.
  6. 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

Odkazy

  1. GitHub repozitár KSUID od Segmentu: https://github.com/segmentio/ksuid
  2. "Generovanie dobrých jedinečných identifikátorov" od Petra Bourgona: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Špecifikácia KSUID: https://github.com/segmentio/ksuid/blob/master/README.md