Utilia

ULID ir Nano ID generatorius

Generuok ULID (su monotoniškumo pasirinkimu) ar Nano ID su pasirinktine abėcėle ir ilgiu, daug iškart, dekoduok ULID laiko žymą ir tikrink susidūrimo riziką.

ID tipas

Dekoduoti ULID

Kaip generuoti ULID ar Nano ID

  1. Skiltyje ID tipas pasirink ULID (rūšiuojamas) arba Nano ID (trumpas).
  2. Nustatyk Kiekis (nuo 1 iki 1000). Dešimt ID sugeneruojama vos įkėlus puslapį.
  3. ULID atveju palik pažymėtą Monotoniškas (griežtai didėjantis), kad tą pačią milisekundę sukurti ID vis tiek rūšiuotųsi iš eilės, ir pažymėk Mažosios raidės, jei tavo sistema taip pageidauja.
  4. Nano ID atveju pasirink Abėcėlė (arba Pasirinktinė… ir įrašyk savo simbolius) ir Ilgis.
  5. Spustelėk Generuoti, tada Kopijuoti sąrašą arba Atsisiųsti .txt (vienas ID eilutėje).

Norint perskaityti ULID paslėptą datą, įklijuok jį į Dekoduoti ULID arba spustelėk Dekoduoti pirmąjį ID. Įrankis parodo laiko žymą UTC (ISO 8601), tavo vietiniu laiku, kaip Unix milisekundes ir 80 bitų atsitiktinę dalį šešioliktaine forma.

Kas yra ULID?

ULID (Universally Unique Lexicographically Sortable Identifier) yra 128 bitų identifikatorius, užrašytas 26 Crockford Base32 simboliais, pavyzdžiui, 01ARZ3NDEKTSV4RRFFQ69G5FAV. Pirmieji 10 simbolių koduoja 48 bitų laiko žymą milisekundėmis (pakanka iki 10889 metų); paskutiniai 16 simbolių yra 80 atsitiktinių bitų. Crockford Base32 praleidžia I, L, O ir U, kad nebūtų painiavos, o dekoduojant raidžių registras nesvarbus.

Kadangi laikas eina pirmas, ULID abėcėlės tvarka rūšiuojasi pagal sukūrimo tvarką. Todėl jie tinka pirminiams raktams: naujos eilutės pridedamos B-medžio indekso gale, o ne išbarstomos kaip atsitiktiniai UUID, ir gali rūšiuoti pagal ID, o ne pagal atskirą datos stulpelį.

Monotoniškas režimas. Per vieną milisekundę atsitiktiniai ULID rūšiuotųsi atsitiktine tvarka. Su monotoniškumo pasirinkimu įrankis laikosi ULID specifikacijos: kai keli ID sukuriami tą pačią milisekundę, jis palieka laiko žymą ir prie ankstesnės atsitiktinės dalies prideda 1. Jei laikrodis eina atgal, naudojama paskutinė laiko žyma, todėl seka niekada nemažėja.

Atmink, kad ULID atskleidžia, kada buvo sukurtas. Nenaudok jo ten, kur ta informacija jautri.

Kas yra Nano ID?

Nano ID yra kompaktiškas atsitiktinis identifikatorius. Numatytasis yra 21 simbolis iš 64 simbolių saugios URL abėcėlės (A–Z a–z 0–9 _ -), o tai duoda 126 atsitiktinius bitus, panašiai kaip UUID v4 (122 bitai), bet mažiau simbolių. Gali rinktis šešioliktainę abėcėlę, tik skaitmenis, mažąsias raides ir skaitmenis, raides ir skaitmenis, rinkinį be panašių simbolių (be 0/O, 1/l/I, 5/S…) kodams, kuriuos žmonės įveda ranka, arba savo abėcėlę iš 2–256 simbolių. Pasikartojantys simboliai pasirinktinėje abėcėlėje pašalinami, nes dėl jų kai kurie simboliai taptų labiau tikėtini.

Kiekvienas simbolis traukiamas su crypto.getRandomValues naudojant atmetimo atranką, todėl dalybos liekanos nuokrypio nėra.

Susidūrimo tikimybė

Skydelis Susidūrimo tikimybė taiko gimtadienio ribą. Turint dydžio A abėcėlę ir ilgį L, galimų ID yra N = A^L. Po k ID bent vieno dublikato tikimybė yra maždaug 1 − e^(−k²/2N), todėl 1 % rizika pasiekiama po k ≈ √(2N · ln(1/0,99)) ID. Įvesk ID sugeneruojama per valandą, kad pamatytum, kiek tai užtruktų. Su numatytaisiais nustatymais ir 1000 ID per valandą 1 % rizikai prireiktų maždaug 149 milijardų metų; su 8 šešioliktainiais simboliais – vos apie 9300 ID.

Dažnai užduodami klausimai

ULID ar UUID?

Abu yra 128 bitų. ULID trumpiau užrašyti (26 simboliai vietoj 36) ir jis rūšiuojasi pagal laiką. UUID 7 versija dabar siūlo tą pačią laiko tvarką standartiniame UUID formate, kurį duomenų bazės dažnai saugo natūraliai. Rinkis UUID v7, jei tavo technologijų rinkinys jį palaiko, ULID – jei nori kompaktiškos, skaitomos eilutės.

Ar ULID ir Nano ID pakankamai saugūs žetonams?

Nano ID su numatytąja abėcėle ir ilgiu turi 126 atsitiktinius bitus iš kriptografinio generatoriaus, o to pakanka neatspėjamoms nuorodoms. ULID turi tik 80 atsitiktinių bitų, o monotoniškame režime iš eilės einantys ID skiriasi vienetu, todėl ULID nenaudok kaip slaptų reikšmių.

Ar galiu sutrumpinti Nano ID?

Taip, bet susidūrimo rizika auga labai greitai. Prieš pasikliaujant trumpu ID, patikrink reikšmę ID skaičius, kai dublikato tikimybė 1 % savo ilgiui ir abėcėlei.

Kodėl dekoderis atmeta mano ULID?

ULID turi būti lygiai 26 simbolių, naudoti tik Crockford Base32 simbolius ir prasidėti nuo 0 iki 7 (didesnis pirmas simbolis viršytų 128 bitus).

Ar ID kur nors saugomi ar siunčiami?

Ne. Jie sugeneruojami tavo naršyklėje ir dingsta, kai palieki puslapį.