Prabédan Utama Kaca Iki karo Format Liyané
Kaca iki ngasilaké ULID, yaiku format identifier sing luwih cendhèk tinimbang UUID (26 karakter lawan 36) lan mung nganggo aksara Crockford base32 — dadi ora mbédakaké huruf gedhé/cilik (case‑insensitive) lan tanpa tanda hubung. ULID bisa diurutaké sacara leksikografis miturut wektu digawéné merga 10 karakter pisanan ngandhut timestamp kanthi presisi milidetik. Identifier iki uga aman kanggo URL tanpa perlu escaping. Ora ana pilihan kanggo huruf gedhé/cilik utawa tanda hubung ing kaca iki, amarga ULID pancèn wis tanpa hyphens lan case‑insensitive. Saben ID sing digawé dawa 26 karakter, siap disalin siji‑siji utawa kabèh bebarengan.
Kaca iki minangka bagéan saka alat online gratis. Sampeyan milih ULID minangka format, nemtokaké cacahé ID sing dikarepaké (antara 1 nganti 100), banjur alat iki enggal ngasilaké dhaftar ULID sing unik lan bisa diurutaké miturut wektu. Saben ID katon minangka string 26 karakter sing bisa langsung disalin.
Struktur Internal ULID: 128 Bit kanggo Wektu lan Acak
ULID nduwèni dhasar 128 bit, padha karo UUID. Nanging pamérangané béda. 48 bit pisanan minangka timestamp sing ngukir wektu ana ing milidetik (millisecond precision). Timestamp iki dienkode dadi 10 karakter pisanan nganggo aksara Crockford base32. 80 bit sisané minangka komponèn acak (random component) sing dienkode dadi 16 karakter pungkasan. Dadi total 26 karakter.
Aksara Crockford base32 iku alfabèt angka 0–9 lan huruf A–Z kajaba I, L, O, U. Mangkono, karakter sing bisa mbingungaké kaya I/1, O/0, L/1 ora ana, lan huruf gedhé/cilik dianggep padha. Contoné, ULID "01ARZ3NDEKTSV4RRFFQ69G5FAV" bisa ditulis nganggo huruf cilik "01arz3ndektsv4rrffq69g5fav" lan isih bener.
Proses encoding timestamp 48 bit dadi 10 karakter base32 mirib karo sistem Unix epoch, nanging nganggo basis 32 dudu basis 10. Timestamp kasebut wiwit saka epoch Unix (1 Januari 1970) lan bisa nganti saklawasé 10.000 taun luwih.
Cara Ngurutaké (Sorting) lan Watesané
Merga timestamp minangka bagéyan ngarep, ULID sacara leksikografis bisa diurutaké miturut wektu digawéné. Iki migunani banget nalika digunakake minangka primary key ing basis data B‑tree, amarga ID anyar sing digawé terus bakal ditambahaké ing akhir indeks, ora nyebar acak kaya UUID v4. Mangkono, kinerja insert dadi luwih apik.
Nanging ana watesan: yen loro utawa luwih ULID digawé ana ing milidetik sing padha, urutan antarane ora dijamin. Amarga komponèn acak 80 bit tetep acak ing saben générasi. Dadi yen sampeyan butuh urutan ketat ing milidetik sing padha, kudu nganggo mekanisme tambahan (contone, nambah nomer urut ing sawijining bit liyané). Nanging kanggo akèh aplikasi, iki ora dadi masalah.
Perbandhingan karo UUID v4 lan UUID v7
| Fitur | ULID | UUID v4 | UUID v7 |
|---|---|---|---|
| Dawa karakter | 26 | 36 | 36 |
| Tanda hubung | Ora ana | Ana (4) | Ana (4) |
| Case‑sensitive | Ora (case‑insensitive) | Ora (case‑insensitive) | Ora (case‑insensitive) |
| Timestamp bisa diurut | Ya (48‑bit, milidetik) | Ora (acak kabèh) | Ya (48‑bit, milidetik) |
| Komponèn acak | 80 bit | 122 bit | 74 bit (sawisé timestamp + version bits) |
| Alfabèt | Crockford base32 | heksadesimal | heksadesimal |
| Aman URL tanpa escaping | Ya | Ya (sawisé ngilangaké tanda hubung) | Ya (sawisé ngilangaké tanda hubung) |
ULID luwih cendhèk tinimbang UUID kanthi 10 karakter lan tanpa tanda hubung, dadi luwih gampang ditulis manual, disimpen ing kolom database, utawa ditampilaké ing URL. Dene UUID v7 uga nduwèni timestamp, nanging dawa 36 karakter lan nganggo tanda hubung.
Probabilitas Tabrakan (Collision) lan Keamanan
Probabilitas tabrakan (collision) ULID gumantung marang komponèn acak 80 bit. Iki tegesé ana 2^80 (kira‑kira 1,2×10^24) kemungkinan kanggo saben generasi. Yen sampeyan ngasilaké 1 milyar ULID saben milidetik, dibutuhaké kira‑kira 1,5×10^7 taun kanggo tabrakan saben 50% probabilitas (miturut paradoks ulang tahun). Dadi kanggo aplikasi umum, tabrakan pancèn meh ora mungkin.
Générési acak ing kaca iki nggunakake crypto.getRandomValues() sing ana ing browser sampeyan. Iki minangka sumber acak kriptografi sing kuwat. Ora ana data sing dikirim menyang server; kabèh diproses lokal. Mula, ora ana risiko data bocor utawa disimpen ing papan liya.
Kanggé Sapa Kaca Iki Migunani?
Kaca iki dirancang kanggo para pangembang lan profesional sing butuh identifier unik, cendhèk, lan bisa diurutaké miturut wektu.
- Pangembang web lan mobile sing pengin identifier luwih cendhèk tinimbang UUID, aman kanggo URL, lan bisa diurutaké tanpa kolom timestamp kapisah.
- Administrator basis data sing ngrancang primary key kanggo tabel B‑tree, supaya insert anyar tetep monotonik lan ningkataké kinerja indeks.
- Arsitek sistem distribusi sing butuh identifier unik ing antarané akèh simpul (nodes) nanging isih bisa diurutaké lan kompak.
- Perancang API sing pengin public‑facing ID sing angel ditebak nanging gampang diwaca manungsa (ora ana huruf campuran gedhé/cilik, ora ana hyphens sing bisa mbingungaké).
- Sapa waé sing uwis bosen karo UUID sing dawa banget lan butuh alternatif kanggo tetep duwé ruang 128 bit nanging perwakilané luwih cendhèk.
Pitakonan sing Sering Ditakokaké (FAQ)
Apa ULID bisa diurutaké kanthi wektu?
Ya, 10 karakter pisanan minangka timestamp milidetik, dadi yen diurutaké sacara leksikografis, urutané bakal miturut wektu digawéné. Nanging yen ana ID sing digawé ing milidetik sing padha, urutan antarane ora dijamin.
Apa ULID aman kanggo URL?
Aman. Kabèh karakter ing ULID (0–9, A–Z kajaba I, L, O, U) kalebu karakter unreserved miturut RFC 3986, dadi ora perlu percent‑encoding.
Pira dawa ULID?
26 karakter. Iki luwih cendhèk 10 karakter tinimbang UUID 36 karakter (kalebu 4 hyphens).
Apa ULID padha karo UUID?
Ora persis. ULID uga 128 bit, nanging pamérangané lan cara encodingé béda. ULID luwih cendhèk, tanpa hyphens, lan nggunakake Crockford base32. Dene UUID biasane ditulis ing heksadesimal lan nduweni tanda hubung.
Apa kaca iki nyimpen data ID sing digawé?
Ora. Kabèh générasi ID kedadeyan ing browser sampeyan nganggo crypto.getRandomValues(). Ora ana data sing dikirim menyang server. Status "Generated." lan "Copied all!" mung muncul sacara lokal.
Kena apa ora ana pilihan huruf gedhé/cilik utawa hyphens ing kaca iki?
Amarga ULID pancèn wis case‑insensitive lan tanpa hyphens. Pilihan kasebut ora perlu amarga formaté wis tetep. Sampeyan bisa nyalin ID langsung tanpa kuwatir babagan kapital utawa tanda hubung.
Kaca iki nyedhiyakake cara gampang lan cepet kanggo ngasilake ULID ing antarane 1 nganti 100. Kanthi mangerteni struktur lan watesane, sampeyan bisa milih nggunakake ULID ing proyek sing mbutuhake identifier unik, cendhèk, lan bisa diurutaké miturut wektu.