Utilia

ULID un Nano ID ģenerators

Ģenerējiet ULID (ar monotonu režīmu) vai Nano ID ar pielāgotu alfabētu un garumu, atkodējiet ULID laika zīmogu un pārbaudiet sadursmes risku.

ID veids

Atkodēt ULID

Kā ģenerēt ULID vai Nano ID

  1. Sadaļā ID veids izvēlieties ULID (kārtojams) vai Nano ID (īss).
  2. Iestatiet Cik daudz (no 1 līdz 1000). Desmit ID tiek ģenerēti, tiklīdz lapa ielādējas.
  3. ULID gadījumā atstājiet atzīmētu Monotons (stingri augošs), lai tajā pašā milisekundē izveidotie ID tāpat kārtotos secībā, un atzīmējiet Mazie burti, ja jūsu sistēma dod priekšroku mazajiem burtiem.
  4. Nano ID gadījumā izvēlieties Alfabēts (vai Pielāgots… un ierakstiet savas rakstzīmes) un Garums.
  5. Noklikšķiniet uz Ģenerēt, tad Kopēt sarakstu vai Lejupielādēt (viens ID rindā).

Lai izlasītu ULID slēpto datumu, ielīmējiet to sadaļā Atkodēt ULID vai noklikšķiniet uz Atkodēt pirmo ID. Rīks parāda laika zīmogu UTC (ISO 8601), jūsu vietējā laikā, kā Unix milisekundes un 80 bitu nejaušo daļu heksadecimāli.

Kas ir ULID?

ULID (Universally Unique Lexicographically Sortable Identifier) ir 128 bitu identifikators, uzrakstīts kā 26 Crockford Base32 rakstzīmes, piemēram, 01ARZ3NDEKTSV4RRFFQ69G5FAV. Pirmās 10 rakstzīmes kodē 48 bitu laika zīmogu milisekundēs (pietiek līdz 10889. gadam); pēdējās 16 rakstzīmes ir 80 nejauši biti. Crockford Base32 izlaiž I, L, O un U, lai izvairītos no neskaidrībām, un atkodēšana nešķiro reģistrus.

Tā kā laiks ir pirmais, ULID alfabētiski kārtojas izveides secībā. Tas padara tos par labām primārajām atslēgām: jaunas rindas tiek pievienotas B koka indeksa beigās, nevis izkaisītas kā nejauši UUID, un varat kārtot pēc ID, nevis pēc atsevišķas datuma kolonnas.

Monotonais režīms. Vienas milisekundes ietvaros nejauši ULID kārtotos nejaušā secībā. Ar monotono iespēju rīks seko ULID specifikācijai: kad vairāki ID tiek izveidoti vienā milisekundē, tas saglabā laika zīmogu un iepriekšējai nejaušajai daļai pieskaita 1. Ja pulkstenis iet atpakaļ, tas saglabā pēdējo laika zīmogu, tāpēc secība nekad nesamazinās.

Paturiet prātā, ka ULID atklāj tā izveides laiku. Neizmantojiet to, ja šī informācija ir jutīga.

Kas ir Nano ID?

Nano ID ir kompakts nejaušs identifikators. Noklusējums ir 21 rakstzīme no 64 rakstzīmju alfabēta, kas droša URL (A–Z a–z 0–9 _ -), kas dod 126 nejaušus bitus, līdzīgi UUID v4 (122 biti), bet ar mazāk rakstzīmēm. Varat izvēlēties heksadecimālu, tikai ciparus, mazos burtus un ciparus, burtciparu, kopu bez līdzīgām rakstzīmēm (bez 0/O, 1/l/I, 5/S…) kodiem, ko cilvēki raksta, vai savu alfabētu no 2 līdz 256 rakstzīmēm. Dublētas rakstzīmes pielāgotā alfabētā tiek noņemtas, jo tās padarītu dažas rakstzīmes iespējamākas.

Katra rakstzīme tiek izvilkta ar crypto.getRandomValues, izmantojot noraidīšanas izlasi, tāpēc moduļa nobīdes nav.

Sadursmes varbūtība

Panelis Sadursmes varbūtība piemēro dzimšanas dienas robežu. Ar alfabēta izmēru A un garumu L ir N = A^L iespējamo ID. Pēc k ID vismaz viena dublikāta iespējamība ir aptuveni 1 − e^(−k²/2N), tāpēc 1 % risks tiek sasniegts pēc k ≈ √(2N · ln(1/0,99)) ID. Ievadiet ID stundā, lai redzētu, cik ilgi tas prasītu. Ar noklusējuma iestatījumiem un 1000 ID stundā 1 % risks prasa aptuveni 149 miljardus gadu; ar 8 heksadecimālām rakstzīmēm – tikai aptuveni 9300 ID.

Biežāk uzdotie jautājumi

ULID vai UUID?

Abi ir 128 biti. ULID ir īsāks pierakstā (26 rakstzīmes, nevis 36) un kārtojas pēc laika. UUID versija 7 tagad piedāvā to pašu laika secību standarta UUID formātā, ko datubāzes bieži glabā nativi. Izvēlieties UUID v7, ja to atbalsta jūsu steks, un ULID, ja vēlaties kompaktu, lasāmu virkni.

Vai ULID un Nano ID ir pietiekami droši žetoniem?

Nano ID ar noklusējuma alfabētu un garumu ir 126 nejauši biti no kriptogrāfiska ģeneratora, un tas ir pietiekami neuzminamām saitēm. ULID ir tikai 80 nejauši biti, un monotonajā režīmā secīgi ID atšķiras par vienu, tāpēc neizmantojiet ULID kā noslēpumus.

Vai Nano ID var saīsināt?

Jā, taču sadursmes risks aug ļoti ātri. Pirms paļaujaties uz īsu ID, pārbaudiet vērtību ID skaits 1 % dublikāta iespējamībai savam garumam un alfabētam.

Kāpēc atkodētājs noraida manu ULID?

ULID jābūt tieši 26 rakstzīmēm, jāizmanto tikai Crockford Base32 rakstzīmes un jāsākas ar 0 līdz 7 (lielāka pirmā rakstzīme pārsniegtu 128 bitus).

Vai ID tiek kaut kur glabāti vai sūtīti?

Nē. Tie tiek ģenerēti jūsu pārlūkprogrammā un pazūd, kad atstājat lapu.