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ą.
Susidūrimo tikimybė
- Abėcėlės dydis
- —
- Entropija vienam ID
- —
- Galimų ID skaičius
- —
- ID skaičius, kai dublikato tikimybė 1 %
- —
- Laikas iki 1 % rizikos
- —
Dekoduoti ULID
- Laiko žyma (UTC, ISO 8601)
- Vietinė data ir laikas
- Unix laikas (ms)
- Atsitiktinė dalis (80 bitų, šešioliktainė)
Kaip generuoti ULID ar Nano ID
- Skiltyje ID tipas pasirink ULID (rūšiuojamas) arba Nano ID (trumpas).
- Nustatyk Kiekis (nuo 1 iki 1000). Dešimt ID sugeneruojama vos įkėlus puslapį.
- 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.
- Nano ID atveju pasirink Abėcėlė (arba Pasirinktinė… ir įrašyk savo simbolius) ir Ilgis.
- 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į.
Susiję įrankiai
- UUID generatorius Nemokamas UUID generatorius v4 ir v7 versijoms. Sukurk iki 1000 iškart, didžiosiomis raidėmis ar be brūkšnelių, tada nukopijuok arba atsisiųsk kaip .txt.
- Slaptažodžių generatorius Nemokamas slaptažodžių generatorius kuria stiprius atsitiktinius 4–128 simbolių slaptažodžius tavo naršyklėje su saugiu RNG. Niekas nesaugoma ir nesiunčiama.
- Unix laiko žymos keitiklis Konvertuok Unix laiko žymas sekundėmis ar milisekundėmis į skaitomas datas vietiniu laiku, UTC ir ISO 8601 formatu ir atgal į epoch laiką.