Utilia

ULID ja Nano ID generaator

Loo ULID-e (monotoonse valikuga) või Nano ID-sid oma tähestiku ja pikkusega hulgi, dekodeeri ULID-i ajatempel ja kontrolli kokkulangemise riski.

ID tüüp

Dekodeeri ULID

Kuidas ULID-e või Nano ID-sid luua

  1. Vali jaotises ID tüüp ULID (sorditav) või Nano ID (lühike).
  2. Määra Mitu (1 kuni 1000). Kümme ID-d luuakse kohe lehe laadimisel.
  3. ULID-ide puhul jäta märgituks Monotoonne (rangelt kasvav), et samal millisekundil loodud ID-d sorditaks siiski õiges järjekorras, ja märgi Väiketähed, kui su süsteem seda eelistab.
  4. Nano ID-de puhul vali Tähestik (või Oma… ja kirjuta oma märgid) ning Pikkus.
  5. Klõpsa Loo, seejärel Kopeeri loend või Laadi alla .txt (üks ID rea kohta).

ULID-i peidetud kuupäeva lugemiseks kleebi see jaotisse Dekodeeri ULID või klõpsa Dekodeeri esimene ID. Tööriist näitab ajatemplit UTC-s (ISO 8601), sinu kohalikus ajas, Unixi millisekunditena ja 80-bitist juhuslikku osa heksina.

Mis on ULID?

ULID (Universally Unique Lexicographically Sortable Identifier) on 128-bitine identifikaator, mis kirjutatakse 26 märgina Crockfordi Base32-s, näiteks 01ARZ3NDEKTSV4RRFFQ69G5FAV. Esimesed 10 märki kodeerivad 48-bitise ajatempli millisekundites (piisab aastani 10889); viimased 16 märki on 80 juhuslikku bitti. Crockfordi Base32 jätab segaduse vältimiseks välja I, L, O ja U ning dekodeerimine ei erista suur- ja väiketähti.

Kuna aeg tuleb esimesena, sorteeruvad ULID-id tähestikulises järjekorras loomise järgi. See teeb neist head primaarvõtmed: uued read lisatakse B-puu indeksi lõppu, mitte ei hajutata nagu juhuslikud UUID-d, ja sorteerida saab ID järgi, mitte eraldi kuupäevaveeru järgi.

Monotoonne režiim. Ühe millisekundi sees sorteeruksid juhuslikud ULID-id juhuslikus järjekorras. Monotoonse valikuga järgib tööriist ULID-i spetsifikatsiooni: kui mitu ID-d luuakse samal millisekundil, säilitab see ajatempli ja lisab eelmisele juhuslikule osale 1. Kui kell läheb tagurpidi, säilitab see viimase ajatempli, nii et jada ei vähene kunagi.

Pea meeles, et ULID reedab, millal see loodi. Ära kasuta seda seal, kus see teave on tundlik.

Mis on Nano ID?

Nano ID on kompaktne juhuslik identifikaator. Vaikimisi on see 21 märki 64-märgilisest URL-ohutust tähestikust (A–Z a–z 0–9 _ -), mis annab 126 juhuslikku bitti, sarnaselt UUID v4-ga (122 bitti), aga vähemate märkidega. Saad valida kuueteistkümnendsüsteemi, ainult numbrid, väiketähed ja numbrid, tähtnumbrilise tähestiku, sarnaste märkideta komplekti (ilma 0/O, 1/l/I, 5/S…) koodide jaoks, mida inimesed sisestavad, või oma 2–256 märgi pikkuse tähestiku. Oma tähestiku korduvad märgid eemaldatakse, sest need muudaksid mõned märgid tõenäolisemaks.

Iga märk valitakse funktsiooniga crypto.getRandomValues tagasilükkava valimiga, seega modulo-kallutatust pole.

Kokkulangemise tõenäosus

Paneel Kokkulangemise tõenäosus rakendab sünnipäevaparadoksi hinnangut. Tähestiku suuruse A ja pikkuse L korral on võimalikke ID-sid N = A^L. Pärast k ID-d on vähemalt ühe kordumise tõenäosus ligikaudu 1 − e^(−k²/2N), seega jõutakse 1% riskini pärast k ≈ √(2N · ln(1/0,99)) ID-d. Sisesta ID-sid loodud tunnis, et näha, kui kaua see aega võtaks. Vaikeseadetega ja 1000 ID-ga tunnis kulub 1% riskini jõudmiseks umbes 149 miljardit aastat; 8 kuueteistkümnendmärgi korral piisab vaid umbes 9300 ID-st.

Korduma kippuvad küsimused

ULID või UUID?

Mõlemad on 128-bitised. ULID on lühem kirjutada (26 märki 36 asemel) ja see sorteerub aja järgi. UUID versioon 7 pakub nüüd sama ajalist järjestust standardses UUID vormingus, mida andmebaasid sageli natiivselt salvestavad. Vali UUID v7, kui su tehnoloogiapakk seda toetab, ja ULID, kui tahad kompaktset ja loetavat stringi.

Kas ULID-id ja Nano ID-d on tokenite jaoks piisavalt turvalised?

Nano ID-del vaiketähestiku ja -pikkusega on 126 juhuslikku bitti krüptograafilisest generaatorist, mis piisab ära arvamatute linkide jaoks. ULID-idel on ainult 80 juhuslikku bitti ja monotoonses režiimis erinevad järjestikused ID-d ühe võrra, seega ära kasuta ULID-e saladustena.

Kas Nano ID-d saab lühendada?

Jah, kuid kokkulangemise risk kasvab väga kiiresti. Kontrolli enne lühikesele ID-le toetumist väärtust ID-sid 1% kordumisvõimaluseni oma pikkuse ja tähestiku jaoks.

Miks dekooder mu ULID-i tagasi lükkab?

ULID-il peab olema täpselt 26 märki, see võib kasutada ainult Crockfordi Base32 märke ja peab algama märgiga 0 kuni 7 (suurem esimene märk ületaks 128 bitti).

Kas ID-sid salvestatakse või saadetakse kuhugi?

Ei. Need luuakse sinu brauseris ja kaovad, kui lehelt lahkud.