🛠️

Whiz Tools

Build • Create • Innovate

KSUID Generator for Unique, Time-Sortable Identifiers

Generuokite K-sortinius unikalius identifikatorius (KSUID) naudoti paskirstytose sistemose, duomenų bazėse ir programose, kurioms reikalingi unikalūs, laiko rūšiuojami raktai. KSUID derina laiko žymą su atsitiktiniais duomenimis, kad sukurtų kolizijoms atsparius, rūšiuojamus identifikatorius.

KSUID generatorius

📚

Dokumentacija

KSUID Generator

Įvadas

KSUID (K-sortable Unique IDentifier) yra unikalus identifikatoriaus formatas, siūlantis kelias pranašumus prieš tradicinius UUID (Universally Unique Identifier) ir kitus identifikatorių sistemas. Šis įrankis leidžia greitai ir lengvai generuoti KSUID.

Kas yra KSUID?

KSUID yra 20 baitų rūšiuojamas identifikatorius, kuris susideda iš:

  1. 32 bitų laiko žymės (4 baitai)
  2. 16 baitų atsitiktinumo

Kai KSUID yra atvaizduojamas kaip eilutė, jis koduojamas base62 ir yra 27 simbolių ilgio.

KSUID struktūra

KSUID struktūrą galima suskaidyti taip:

  1. Laiko žymė (4 baitai): Tai atspindi sekundžių skaičių nuo Unix epochos (1970 m. sausio 1 d. 00:00 UTC). Laiko žymė leidžia KSUID būti apytiksliai rūšiuojamais pagal generavimo laiką.

  2. Atsitiktinė komponentė (16 baitų): Tai yra kriptografiškai saugus atsitiktinis skaičius, užtikrinantis unikalumą, net kai keli KSUID yra generuojami tą pačią sekundę.

  3. Base62 kodavimas: Sujungti 20 baitų (laiko žymė + atsitiktinė) tada koduojami naudojant base62 (A-Z, a-z, 0-9), kad būtų gauta galutinė 27 simbolių eilutė.

KSUID formulė

KSUID gali būti matematiškai atvaizduojamas kaip:

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

Kur:

  • TT yra 32 bitų laiko žymė
  • RR yra 128 bitų atsitiktinė komponentė
  • || žymi sujungimą

Laiko žymė TT apskaičiuojama kaip:

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

Kur KSUID_epoch yra 1400000000 (2014-05-13T16:53:20Z).

KSUID struktūros diagrama

Laiko žymė (4 baitai) Atsitiktinė komponentė (16 baitų)

KSUID naudojimo atvejai

KSUID yra ypač naudingi šiose situacijose:

  1. Išskirstytos sistemos: Kai reikia unikalių identifikatorių tarp kelių serverių ar paslaugų be koordinacijos.

  2. Laiko rūšiuojami duomenys: Kai norite rūšiuoti duomenis pagal kūrimo laiką, nesaugodami atskiros laiko žymės.

  3. Duomenų bazės raktai: Kaip pirminiai raktai duomenų bazėse, ypač išskirstytose duomenų bazėse, kur automatiškai didinami sveikieji skaičiai nėra tinkami.

  4. URL saugūs identifikatoriai: Sukuriant trumpus, unikalius, URL saugius identifikatorius ištekliams internetinėse programose.

  5. Žurnalo koreliacija: Koreliuoti žurnalo įrašus tarp skirtingų paslaugų mikroservisų architektūroje.

KSUID pranašumai

KSUID siūlo kelis pranašumus prieš kitas identifikatorių sistemas:

  1. Rūšiuojamumas: Skirtingai nuo UUID, KSUID gali būti rūšiuojami chronologiškai, kas yra naudinga duomenų bazės indeksavimui ir žurnalo analizei.

  2. Koordinacijos nereikia: Skirtingai nuo automatiškai didinamų ID, KSUID gali būti generuojami nepriklausomai skirtingų serverių be rizikos dėl susidūrimų.

  3. Kompaktiška reprezentacija: Būdami 27 simbolių, KSUID yra kompaktiškesni nei UUID, kai atvaizduojami kaip eilutės.

  4. Laiko žymė įtraukta: Įtraukta laiko žymė leidžia rūšiuoti ir filtruoti pagal laiką be atskiros laiko žymės lauko.

  5. URL saugūs: Base62 kodavimas daro KSUID saugius naudoti URL be jokio papildomo kodavimo.

  6. Sumažinta susidūrimo tikimybė: 16 baitų atsitiktinė komponentė daro susidūrimus labai neįtikėtinais, net esant dideliems generavimo tempams.

Kaip naudoti šį generatorių

  1. Įveskite bet kokius papildomus parametrus, jei reikia (pvz., pasirinktine laiko žyme).
  2. Paspauskite mygtuką "Generuoti KSUID", kad sukurtumėte naują KSUID.
  3. Sugeneruotas KSUID bus rodomas išvesties lauke.
  4. Galite generuoti kelis KSUID, pakartodami 1-3 žingsnius.
  5. Naudokite "Kopijuoti" mygtuką šalia kiekvieno KSUID, kad nukopijuotumėte jį į savo iškarpinę.
  6. Pasirinktinai naudokite "Eksportuoti" funkciją, kad atsisiųstumėte sugeneruotų KSUID sąrašą.

Atminkite, kad kiekvienas KSUID yra unikalus ir turėtų būti naudojamas tik kartą. Kiekvieną kartą, kai jums reikia unikalaus identifikatoriaus, generuokite naują KSUID.

Kodo pavyzdžiai

Štai pavyzdžiai, kaip generuoti KSUID įvairiose programavimo kalbose:

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

Nuorodos

  1. Segmento KSUID GitHub saugykla: https://github.com/segmentio/ksuid
  2. "Gera unikalių identifikatorių generacija" Peter Bourgon: 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