🛠️

Whiz Tools

Build • Create • Innovate

Generátor K-sortovatelných unikátních identifikátorů KSUID

Generujte K-sortovatelné unikátní identifikátory (KSUID) pro použití v distribuovaných systémech, databázích a aplikacích vyžadujících unikátní, časově tříděné klíče. KSUID kombinují časovou značku s náhodnými daty, aby vytvořily kolizím odolné, tříděné identifikátory.

Generátor KSUID

📚

Dokumentace

Generátor KSUID

Úvod

KSUID (K-Sortable Unique IDentifier) je formát jedinečného identifikátoru, který nabízí několik výhod oproti tradičnímu UUID (Universally Unique Identifier) a dalším systémům identifikátorů. Tento nástroj vám umožňuje rychle a snadno generovat KSUIDy.

Co je KSUID?

KSUID je 20-bajtový třídící identifikátor, který se skládá z:

  1. 32-bitového časového razítka (4 bajty)
  2. 16 bajtů náhodnosti

Při reprezentaci jako řetězec je KSUID kódován v base62 a má délku 27 znaků.

Struktura KSUID

Struktura KSUID může být rozdělena následovně:

  1. Časové razítko (4 bajty): Toto představuje počet sekund od Unix epochy (1. ledna 1970, 00:00 UTC). Časové razítko umožňuje, aby byly KSUIDy přibližně tříděny podle času generace.

  2. Náhodná složka (16 bajtů): Toto je kryptograficky bezpečné náhodné číslo, které zajišťuje jedinečnost i při generaci více KSUIDů ve stejné sekundě.

  3. Base62 kódování: Kombinovaných 20 bajtů (časové razítko + náhodné) je poté kódováno pomocí base62 (A-Z, a-z, 0-9), aby se vytvořil konečný 27-znakový řetězec.

KSUID vzorec

KSUID může být matematicky reprezentováno jako:

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

Kde:

  • TT je 32-bitové časové razítko
  • RR je 128-bitová náhodná složka
  • || označuje spojení

Časové razítko TT se vypočítá jako:

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

Kde KSUID_epoch je 1400000000 (2014-05-13T16:53:20Z).

Diagram struktury KSUID

Časové razítko (4 bajty) Náhodná složka (16 bajtů)

Případy použití KSUID

KSUIDy jsou obzvlášť užitečné v následujících scénářích:

  1. Distribuované systémy: Když potřebujete jedinečné identifikátory napříč více servery nebo službami bez koordinace.

  2. Třídění podle času: Když chcete třídit data podle času vytvoření bez ukládání samostatného časového razítka.

  3. Klíče databáze: Jako primární klíče v databázích, zejména v distribuovaných databázích, kde auto-incrementing celá čísla nejsou vhodná.

  4. URL-bezpečné identifikátory: Pro vytváření krátkých, jedinečných, URL-bezpečných identifikátorů pro zdroje v webových aplikacích.

  5. Korelace logů: Pro korelování záznamů logů napříč různými službami v architektuře mikroservis.

Výhody KSUID

KSUIDy nabízejí několik výhod oproti jiným systémům identifikátorů:

  1. Třídění: Na rozdíl od UUID mohou být KSUIDy chronologicky tříděny, což je užitečné pro indexaci databází a analýzu logů.

  2. Není potřeba koordinace: Na rozdíl od auto-incrementing ID mohou být KSUIDy generovány nezávisle různými servery bez rizika kolizí.

  3. Kompaktní reprezentace: Při 27 znacích jsou KSUIDy kompaktnější než UUID při reprezentaci jako řetězce.

  4. Vložené časové razítko: Vložené časové razítko umožňuje třídění a filtrování na základě času bez potřeby samostatného pole pro časové razítko.

  5. URL-bezpečné: Base62 kódování činí KSUIDy bezpečnými pro použití v URL bez dalšího kódování.

  6. Snížená pravděpodobnost kolize: 16-bajtová náhodná složka činí kolize extrémně nepravděpodobné, i při vysokých rychlostech generace.

Jak používat tento generátor

  1. Zadejte jakékoli další parametry, pokud jsou vyžadovány (např. vlastní časové razítko).
  2. Klikněte na tlačítko "Generovat KSUID" pro vytvoření nového KSUID.
  3. Vygenerovaný KSUID se zobrazí v poli výstupu.
  4. Můžete generovat více KSUIDů opakováním kroků 1-3.
  5. Použijte tlačítko "Kopírovat" vedle každého KSUID pro jeho zkopírování do schránky.
  6. Volitelně použijte funkci "Export" pro stažení seznamu vygenerovaných KSUIDů.

Pamatujte, že každý KSUID je jedinečný a měl by být použit pouze jednou. Generujte nový KSUID pokaždé, když potřebujete jedinečný identifikátor.

Příklady kódu

Zde jsou příklady generování KSUIDů v různých programovacích jazycích:

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

Odkazy

  1. GitHub repozitář Segmentu KSUID: https://github.com/segmentio/ksuid
  2. "Generování dobrých jedinečných identifikátorů" od Petera Bourgona: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. Specifikace KSUID: https://github.com/segmentio/ksuid/blob/master/README.md