Liigu sisu juurde

KSUID Generaator - Looge sorteeritavad unikaalsed identifikaatorid

Genereerige veebis K-sorteeritavaid unikaalseid identifikaatoreid (KSUID). Looge koheselt ajas sorteeritavad, kokkupõrget vältivad ID-d hajussüsteemidele ja andmebaasidele.

KSUID generaator

Laadimiskalkulaator...
📚

Dokumentatsioon

KSUID-generaator

KSUID (K-sortitav unikaalne identifikaator) on 27 märgi pikkune kood, mida kasutatakse kirjete, näiteks andmebaasi ridade, logikirjete või API-päringute tähistamiseks. See ühendab ajatembli juhuslike andmetega, mistõttu hiljem loodud ID-d sorteeruvad alati varem loodutest hiljem, kuigi igaüks neist on endiselt praktiliselt unikaalne. See tööriist genereerib brauseris ühe KSUID-i ja võimaldab kasutajal selle kopeerida.

Millest KSUID koosneb?

KSUID on 20 baiti pikk ja jaguneb kaheks osaks:

  • Ajatempel (4 baiti): sekundite arv kindlast alguspunktist, mida nimetatakse KSUID-i epohhiks.
  • Juhuslik andmekoormus (16 baiti): brauseri krüptograafilise juhuarvugeneraatori loodud andmed.

Need 20 baiti teisendatakse seejärel tekstiks base62-kodeeringu abil. See süsteem kasutab arvude esitamiseks 62 märki: numbreid 0-9, suurtähti A–Z ja väiketähti a–z. Tulemusele lisatakse alati täitemärgid, kuni pikkus on täpselt 27 märki, näiteks 0qjBBlJIfbVLKwnJn4xpLGDr00e.

Kuna ajatempel paikneb esimesena, sorteeruvad ühe sekundi vahega loodud KSUID-id tavaliselt lihttekstina võrreldes samas järjekorras nagu nende loomise ajad. Kuna viimased 16 baiti on juhuslikud, on samal sekundil loodud kaks KSUID-i siiski peaaegu kindlasti erinevad.

KSUID-i epohh

Enamik arvutisüsteeme loendab aega sekundites alates kuupäevast 1. jaanuar 1970 („Unixi epohh“). KSUID-id kasutavad teistsugust alguspunkti, KSUID-i epohhi: 1 400 000 000 sekundit pärast Unixi epohhi, mis on 13. mai 2014 kell 16:53:20 UTC.

Hilisem alguspunkt võimaldab 4-baidisel ajatempliväljal hõlmata rohkem kasulikke aastaid, enne kui selle maht ammendub. 4-baidine (32-bitine) loendur mahutab kõige rohkem 4 294 967 295 sekundit. KSUID-i epohhist loendades saab see ajavahemik läbi umbes 19. juuni 2150.

KSUID-i valem

KSUID-i string moodustatakse kolme sammuga.

  1. Leia ajatempli väärtus:

    T = floor(current_unix_time_in_seconds) − 1,400,000,000

  2. Genereeri 16 juhuslikku baiti R, kasutades krüptograafiliselt turvalist juhuarvugeneraatorit.

  3. Ühenda 4-baidine ajatempel ja 16 juhuslikku baiti üheks 20-baidiseks plokiks ning kodeeri see plokk base62-vormingusse, täites tulemuse pikkuse 27 märgini:

    KSUID = Base62( T ‖ R )

Siin tähendab ‖ „üksteise järel asetama“. Ajatempli baidid on alati esimesed, mistõttu lõplik string sorteerub aja järgi õigesti.

Läbiarvutatud näide

Oletame, et KSUID-i ajatempli osa on 100000000. Kuna KSUID-i epohh on 1 400 000 000 sekundit pärast Unixi epohhi, tähistab see ajatempel aega 14. juuli 2017 kell 02:40:00 UTC.

Kui sellele ajatemplile lisada 16-baidine jada 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 (siin ainult näite korratavuse tagamiseks; tegelik generaator kasutab juhuslikke baite), annab base62-kodeering tulemuseks:

0qjBBlJIfbVLKwnJn4xpLGDr00e

See string on 27 märgi pikkune, koosneb ainult numbritest ja tähtedest ning seda võib otse kasutada URL-is või failinimes.

Kuidas kasutada KSUID-i generaatori tööriista

  1. Ava KSUID-i generaatori leht.
  2. Vali nupp „Generate KSUID“.
  3. Tööriist loob praeguse aja ja uute juhuslike baitide põhjal ühe uue KSUID-i ning kuvab selle lehel.
  4. Vali nupp „Copy KSUID“, et väärtus lõikelauale kopeerida.
  5. Vali „Reset“, et tulemus kustutada. Nupp „Reset“ ilmub alles pärast KSUID-i genereerimist.

Iga klõps nupul „Generate KSUID“ loob täpselt ühe identifikaatori. Mitme KSUID-i loomiseks klõpsa nuppu iga uue identifikaatori jaoks eraldi; tööriistal ei ole sisseehitatud pakkrežiimi ega faili eksportimise võimalust.

Generaator kasutab nüüdisaegsetesse brauseritesse sisseehitatud Web Crypto API-t. Kui see API pole saadaval, kuvab tööriist ID loomise asemel vea, sest krüptograafiliselt mitteturvaline juhuarvugeneraator võib luua kergemini äraarvatavaid või kokkupõrkuvaid identifikaatoreid.

KSUID-i võrdlus UUID-ga

UUID (universaalselt unikaalne identifikaator) on levinud alternatiivne identifikaatorivorming. Kõige laialdasemalt kasutatav versioon UUID v4 on 36 märgi pikkune ja koosneb peaaegu täielikult juhuslikest bittidest, mistõttu ei anna kaks UUID-d mingit vihjet selle kohta, kumb loodi varem.

KSUID erineb sellest kolmel viisil:

  • Aja järgi sorteeritav. Alguses paiknevad ajatempli baidid tähendavad, et KSUID-i stringide tavaline tähestikuline sortimine järjestab need ka loomise aja järgi.
  • Lühem. KSUID on 27 märki pikk, standardne UUID aga 36 märki.
  • Eraldajateta. UUID kirjutatakse tavaliselt sidekriipsudega (xxxxxxxx-xxxx-...), KSUID-il neid ei ole.

Mõlemat vormingut saab eri arvutites üksteisest sõltumatult genereerida, ilma keskserveriga ühendust võtmata, mistõttu väldivad mõlemad jagatud andmebaasi automaatselt suureneva loenduri kitsaskohta.

Korduma kippuvad küsimused

Mida KSUID tähendab? K-Sortable Unique Identifier ehk K-sortitav unikaalne identifikaator. „K“ viitab sellele, et identifikaator on sorteeritav („mingil määral sorteeritav“ Segmenti, vormingu loonud ettevõtte, algsetes kavandamismärkmetes).

Kui pikk on KSUID? 27 märki, mis on kodeeritud base62 abil (numbrid 0-9, suurtähed ja väiketähed).

Mis on KSUID-i epohh? 13. mai 2014 kell 16:53:20 UTC, mis on 1 400 000 000 sekundit pärast standardset Unixi epohhi 1. jaanuar 1970.

Kas kaks KSUID-i võivad kokku põrgata? See on äärmiselt ebatõenäoline. Iga KSUID sisaldab 16 juhuslikku baiti (128 bitti), mis genereeritakse krüptograafiliselt turvalise juhuarvugeneraatoriga. Isegi paljude KSUID-ide genereerimisel samal sekundil on kahe juhusliku kokkulangemise tõenäosus astronoomiliselt väike.

Kas KSUID-ist saab loomise aja taastada? Jah. Dekodeeritud väärtuse esimesed 4 baiti sisaldavad ajatemplit. Sellele arvule sekundite lisamisel KSUID-i epohhile saadakse algne loomise aeg.

Kas see tööriist toetab paljude KSUID-ide korraga genereerimist? Ei. Tööriist genereerib iga nupu „Generate KSUID“ klõpsuga ühe KSUID-i. Koguse sisestamise välja, kohandatud ajatempli välja ega eksportimise või allalaadimise funktsiooni ei ole.

Kas KSUID-i võib turvaliselt URL-i panna? Jah. Base62-kodeering kasutab ainult numbreid ja tähti, seega ei vaja KSUID URL-is, failinimes ega andmebaasivõtmes kasutamiseks täiendavat paokäsitlust.

Viited

  1. Segmenti KSUID-i GitHubi repositoorium: https://github.com/segmentio/ksuid
  2. "Generating good unique identifiers", autor Peter Bourgon: https://peter.bourgon.org/blog/2019/05/20/generating-good-unique-ids.html