🛠️

Whiz Tools

Build • Create • Innovate

KSUID Generator for Unique Time-Sortable Identifiers

Generirajte K-sortabilne jedinstvene identifikatore (KSUID) za korištenje u distribuiranim sustavima, bazama podataka i aplikacijama koje zahtijevaju jedinstvene, vremenski sortabilne ključeve. KSUID kombinira vremensku oznaku s nasumičnim podacima kako bi stvorio identifikatore otporne na sudare i sortabilne.

Generator KSUID-a

📚

Dokumentacija

KSUID Generator

Uvod

KSUID (K-Sortable Unique IDentifier) je format jedinstvenog identifikatora koji nudi nekoliko prednosti u odnosu na tradicionalni UUID (Universally Unique Identifier) i druge sustave identifikacije. Ovaj alat vam omogućuje brzo i jednostavno generiranje KSUID-ova.

Što je KSUID?

KSUID je jedinstveni identifikator od 20 bajtova koji se sastoji od:

  1. 32-bitnog vremenskog oznaka (4 bajta)
  2. 16 bajtova nasumičnosti

Kada se prikazuje kao niz, KSUID se kodira u base62 i dug je 27 znakova.

Struktura KSUID-a

Struktura KSUID-a može se razložiti na sljedeći način:

  1. Vremenska oznaka (4 bajta): Ovo predstavlja broj sekundi od Unix epohe (1. siječnja 1970. u 00:00 UTC). Vremenska oznaka omogućuje da se KSUID-ovi otprilike sortiraju prema vremenu generiranja.

  2. Nasumična komponenta (16 bajtova): Ovo je kriptografski siguran nasumični broj koji osigurava jedinstvenost čak i kada se više KSUID-ova generira u istoj sekundi.

  3. Base62 kodiranje: Kombiniranih 20 bajtova (vremenska oznaka + nasumično) se zatim kodira koristeći base62 (A-Z, a-z, 0-9) kako bi se dobio konačni niz od 27 znakova.

KSUID Formula

KSUID se može matematički predstaviti kao:

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

Gdje:

  • TT je 32-bitna vremenska oznaka
  • RR je 128-bitna nasumična komponenta
  • || označava spajanje

Vremenska oznaka TT se izračunava kao:

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

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

Dijagram strukture KSUID-a

Vremenska oznaka (4 bajta) Nasumična komponenta (16 bajtova)

Upotreba KSUID-ova

KSUID-ovi su posebno korisni u sljedećim scenarijima:

  1. Distribuirani sustavi: Kada su vam potrebni jedinstveni identifikatori na više poslužitelja ili usluga bez koordinacije.

  2. Sortabilni podaci po vremenu: Kada želite sortirati podatke prema vremenu stvaranja bez pohranjivanja zasebne vremenske oznake.

  3. Ključevi baze podataka: Kao primarni ključevi u bazama podataka, posebno u distribuiranim bazama podataka gdje auto-incrementing cijeli brojevi nisu prikladni.

  4. URL-sigurni identifikatori: Za stvaranje kratkih, jedinstvenih, URL-sigurnih identifikatora za resurse u web aplikacijama.

  5. Korelacija logova: Za korelaciju unosa logova među različitim uslugama u mikroservisnoj arhitekturi.

Prednosti KSUID-ova

KSUID-ovi nude nekoliko prednosti u odnosu na druge sustave identifikacije:

  1. Sortabilnost: Za razliku od UUID-ova, KSUID-ovi se mogu sortirati kronološki, što je korisno za indeksiranje baza podataka i analizu logova.

  2. Nema potrebne koordinacije: Za razliku od auto-incrementing ID-ova, KSUID-ovi se mogu generirati neovisno od različitih poslužitelja bez rizika od sudara.

  3. Kompaktna reprezentacija: Sa 27 znakova, KSUID-ovi su kompaktniji od UUID-ova kada se prikazuju kao nizovi.

  4. Ugrađena vremenska oznaka: Ugrađena vremenska oznaka omogućuje vremenski temeljeno sortiranje i filtriranje bez potrebe za zasebnim poljem vremenske oznake.

  5. URL-sigurno: Base62 kodiranje čini KSUID-ove sigurnima za upotrebu u URL-ovima bez dodatnog kodiranja.

  6. Smanjena vjerojatnost sudara: 16-bajtna nasumična komponenta čini sudare izuzetno malo vjerojatnima, čak i pri visokim stopama generiranja.

Kako koristiti ovaj generator

  1. Unesite sve dodatne parametre ako je potrebno (npr. prilagođena vremenska oznaka).
  2. Kliknite gumb "Generiraj KSUID" za stvaranje novog KSUID-a.
  3. Generirani KSUID će se prikazati u izlaznom polju.
  4. Možete generirati više KSUID-ova ponavljanjem koraka 1-3.
  5. Koristite gumb "Kopiraj" pored svakog KSUID-a za kopiranje u međuspremnik.
  6. Opcionalno, koristite značajku "Izvezi" za preuzimanje popisa generiranih KSUID-ova.

Zapamtite da je svaki KSUID jedinstven i treba se koristiti samo jednom. Generirajte novi KSUID svaki put kada vam je potreban jedinstveni identifikator.

Primjeri koda

Evo primjera generiranja KSUID-ova na raznim programskim jezicima:

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

Reference

  1. Segmentova KSUID GitHub repozitorij: https://github.com/segmentio/ksuid
  2. "Generiranje dobrih jedinstvenih identifikatora" autora Petera Bourgona: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html
  3. KSUID specifikacija: https://github.com/segmentio/ksuid/blob/master/README.md