Utilia

Gjenerues ULID dhe Nano ID

Gjenero ULID (me opsion monoton) ose Nano ID me alfabet e gjatësi të personalizuar, në masë, dekodo timestamp-in e një ULID dhe kontrollo rrezikun e përplasjes.

Lloji i ID

Dekodo një ULID

Si të gjenerosh ULID ose Nano ID

  1. Te Lloji i ID, zgjidh ULID (i renditshëm) ose Nano ID (i shkurtër).
  2. Vendos Sa (1 deri 1 000). Dhjetë ID gjenerohen sapo ngarkohet faqja.
  3. Për ULID, lëre të shënuar Monoton (rritje strikte) që ID-të e krijuara në të njëjtën milisekondë të renditen prapë saktë, dhe shëno Shkronja të vogla nëse sistemi yt e preferon.
  4. Për Nano ID, zgjidh një Alfabet (ose Personalizuar… dhe shkruaj karakteret e tua) dhe një Gjatësi.
  5. Kliko Gjenero, pastaj Kopjo listën ose Shkarko .txt (një ID për rresht).

Për të lexuar datën e fshehur në një ULID, ngjite te Dekodo një ULID ose kliko Dekodo ID e parë. Mjeti tregon timestamp-in në UTC (ISO 8601), në orën tënde lokale, si milisekonda Unix, dhe pjesën e rastësishme 80-bitëshe në hex.

Çfarë është një ULID?

Një ULID (Universally Unique Lexicographically Sortable Identifier) është një identifikues 128-bitësh i shkruar me 26 karaktere Crockford Base32, për shembull 01ARZ3NDEKTSV4RRFFQ69G5FAV. 10 karakteret e para kodojnë një timestamp 48-bitësh në milisekonda (mjaftueshëm deri në vitin 10889); 16 karakteret e fundit janë 80 bite të rastësishëm. Crockford Base32 lë jashtë I, L, O dhe U për të shmangur ngatërresat, dhe dekodimi nuk dallon shkronjat e mëdha nga të vogla.

Meqë koha vjen e para, ULID renditen alfabetikisht sipas rendit të krijimit. Kjo i bën çelësa primarë të mirë: rreshtat e rinj shtohen në fund të indeksit B-tree në vend që të shpërndahen si UUID të rastësishme, dhe mund të rendisësh sipas ID në vend të një kolone të veçantë date.

Modaliteti monoton. Brenda një milisekonde, ULID të rastësishme do të renditeshin rastësisht. Me opsionin monoton, mjeti ndjek specifikimin ULID: kur disa ID krijohen në të njëjtën milisekondë, e mban timestamp-in dhe i shton 1 pjesës së mëparshme të rastësishme. Nëse ora shkon prapa, mban timestamp-in e fundit, ndaj sekuenca nuk zvogëlohet kurrë.

Mos harro që një ULID zbulon kur është krijuar. Mos e përdor atje ku ajo informacion është e ndjeshme.

Çfarë është një Nano ID?

Nano ID është një identifikues kompakt i rastësishëm. Parazgjedhja është 21 karaktere nga një alfabet 64-karakterësh i sigurt për URL (A–Z a–z 0–9 _ -), që jep 126 bite të rastësishëm, të ngjashëm me UUID v4 (122 bite) por me më pak karaktere. Mund të zgjedhësh heksadecimal, vetëm shifra, shkronja të vogla dhe shifra, alfanumerik, një bashkësi pa karaktere të ngjashme (pa 0/O, 1/l/I, 5/S…) për kode që i shkruajnë njerëzit, ose alfabetin tënd me 2 deri 256 karaktere. Karakteret e dyfishta në një alfabet të personalizuar hiqen, sepse do ta bënin disa karaktere më të mundshme.

Çdo karakter nxirret me crypto.getRandomValues duke përdorur rejection sampling, ndaj nuk ka anim modulo.

Gjasat e përplasjes

Paneli Gjasat e përplasjes aplikon kufirin e ditëlindjes. Me një alfabet me madhësi A dhe gjatësi L, ka N = A^L ID të mundshme. Pas k ID-ve, gjasa e të paktën një dublikati është afërsisht 1 − e^(−k²/2N), ndaj një rrezik 1% arrihet pas k ≈ √(2N · ln(1/0,99)) ID-ve. Shkruaj ID të gjeneruara në orë për të parë sa kohë do të duhej. Me cilësimet e parazgjedhura dhe 1 000 ID në orë, një rrezik 1% kërkon rreth 149 miliardë vjet; me 8 karaktere heksadecimale kërkon vetëm rreth 9 300 ID.

Pyetje të shpeshta

ULID apo UUID?

Të dyja janë 128 bite. Një ULID është më e shkurtër për t’u shkruar (26 karaktere në vend të 36) dhe renditet sipas kohës. UUID versioni 7 tani ofron të njëjtin renditje kohore në formatin standard UUID, që bazat e të dhënave shpesh e ruajnë natyrshëm. Zgjidh UUID v7 nëse stack-u yt e mbështet, ULID nëse do një varg kompakt e të lexueshëm.

A janë ULID dhe Nano ID mjaftueshëm të sigurta për tokenë?

Nano ID me alfabetin dhe gjatësinë e parazgjedhur kanë 126 bite të rastësishëm nga një gjenerator kriptografik, që mjafton për lidhje të pamundura për t’u hamendur. ULID kanë vetëm 80 bite të rastësishëm, dhe në modalitetin monoton ID-të e njëpasnjëshme ndryshojnë me një, ndaj mos i përdor ULID si sekrete.

A mund ta shkurtoj një Nano ID?

Po, por rreziku i përplasjes rritet shumë shpejt. Kontrollo vlerën ID për 1% gjasa dublikimi për gjatësinë dhe alfabetin tënd para se të mbështetesh te një ID e shkurtër.

Pse dekoduesi e refuzon ULID-in tim?

Një ULID duhet të ketë saktësisht 26 karaktere, të përdorë vetëm karaktere Crockford Base32 dhe të fillojë me 0 deri 7 (një karakter i parë më i madh do të kalonte 128 bite).

A ruhen ose dërgohen diku ID-të?

Jo. Gjenerohen në shfletuesin tënd dhe zhduken kur e braktis faqen.