Butuh pengidentifikasi sing ora bakal bentrok karo sing digawe wong liya, ing mesin sing durung nate mbok rungu, tanpa njaluk idin marang sapa wae? Kuwi fungsine UUID. Iki minangka angka 128-bit, sing ditulis dadi 36 karakter ing pola 8-4-4-4-12 sing wis dikenal, lan kabeh desaine yaiku supaya ora ana rong UUID sing padha sanajan ora ana sing ngoordinasi sapa sing entuk sing endi. Generator gratis iki nggawe UUID langsung ing browser sampeyan: pilih versi ing 'Versi', temtokake pira sing sampeyan butuhake ing 'Cacahe pilihan', lan penet 'Gawe asil'. Kaca iki mbukak ing siji v4, versi sing paling asring dikarepake umume proyek, mula pengidentifikasi pisanan mung kari sak klik wae.
Saben pengidentifikasi digawe dening browser sampeyan liwat Web Crypto API. Versi 4 nggunakake crypto.randomUUID() yen browser nyedhiyakake lan crypto.getRandomValues() yen ora — sumber keacakan sing kuwat sacara kriptografis tinimbang nggunakake fungsi pseudo-acak JavaScript kayata Math.random(). Versi 7 nyelehake stempel wektu milidetik 48-bit ing ngarep, banjur penghitung 12-bit sing mundhak ing milidetik sing padha, banjur 62 bit acak, sing minangka cara pengurutan sing dijelasake ing RFC 9562; penghitung iku sing njalari sewu UUID metu kanthi urut lan ora acak. Versi 1 nggabungake stempel wektu karo pengidentifikasi node acak sing nduweni bit multicast sing disetel, dadi versi iki ora nate nggawa alamat kertu jaringan sampeyan kaya sing ditindakake implementasi asline ing taun 1990-an. Versi 3 lan 5 ora acak babar pisan: kekarone nge-hash namespace bebarengan karo jeneng, nggunakake MD5 lan SHA-1, lan hashing iku uga kedadeyan ing piranti sampeyan. Ora ana sing dikirim menyang server, ora ana sing dicathet, lan sawise kaca dimuat, kaca tetep mlaku sanajan sambungan mati.
'Versi' minangka kolom sing nemtokake kabeh liyane. Versi 4 minangka 122 bit acak lan tanpa struktur — iki minangka default, lan jawaban sing bener yen pengidentifikasi mung kudu unik. Versi 7 njaga 62 bit acak nanging diwiwiti kanthi wektu digawe, supaya sekumpulan UUID iku ngurutake dhewe miturut wektu nggawe; iki sing ndadekake versi iki cocog dipilih yen pengidentifikasi bakal dadi kunci database. Versi 1 minangka skema adhedhasar wektu sing asli, disimpen ing kene kanggo sistem sing isih njaluk. Versi 3 lan 5 minangka pasangan sing aneh: deterministik, sing tegese input sing padha tansah ngasilake pengidentifikasi sing padha, lan mbutuhake rong kolom tambahan — 'Namespace', sing dadi salah siji saka ruang standar DNS, URL, OID lan X.500 utawa ruang 'Kustom' sampeyan dhewe, lan 'Jeneng', yaiku string sing diidentifikasi. Yen sampeyan menehi v5 namespace URL lan https://example.com/a sampeyan bakal entuk UUID sing padha dina iki, sesuk, lan ing mesine wong liya. Amarga iku, 'Cacahe pilihan' ilang yen v3 utawa v5 dipilih: sewu salinan saka nilai deterministik siji mung bakal dadi sewu salinan saka nilai deterministik siji. Kanggo saben versi liyane, 'Cacahe pilihan' mlaku saka 1 tekan 1000.
Papat saklar ngganti wujud output tanpa ngowahi 128 bit ing mburine. 'Aksara gedhe' nyetak digit heksadesimal dadi huruf gedhe, 'Tanpa tandha hubung' menehi wujud ringkes 32 karakter sing luwih disenengi sawetara kolom lan jeneng file, lan 'Kurung kurawal' mbungkus nilai kasebut ing jero tandha { } — wujud sing diarani GUID dening Windows lan donya .NET. Ing ngisor 'Opsi Lanjutan', urn:uuid: nambahake awalan sing ndadekake URN resmi; iki mateni 'Kurung kurawal' lan 'Tanpa tandha hubung' nalika urip, amarga standar mung ngidini siji wujud URN lan kuwi minangka wujud kanonikal sing ana tandha hubunge. 'Format salin' mutusake kepriye sekumpulan UUID digabungake yen sampeyan njupuk: siji saben baris, dipisahake nganggo koma, utawa saben nilai ing jero tandha kutip karo koma ing mburi, sing nempel langsung dadi array ing kode. Ing ngisor asile ana baris sing nglaporake keacakan ing bit — 122 kanggo v4, 62 kanggo v7 — lan, kanggo v7, stempel wektu sing dienkode ing pengidentifikasi pisanan saka kumpulan kasebut, supaya wektu ing jero nilaine katon lan ora mung disiratake. 'Salin Kabeh' lan 'Simpen menyang file' kalorone manut marang 'Format salin'. 'Riwayat' nyimpen 10 batch pungkasan ing browser sampeyan dhewe: klik salah siji kanggo mbukak maneh, salin utawa busak siji entri, utawa busak kabeh. 'Busak' ngosongake asil nanging tetep njaga pangaturan sampeyan, lan sawise 50 pengidentifikasi, daptar kasebut dadi siji blok sing bisa digulir tinimbang seket baris.
Sing paling duwe pangaruh ing kaca iki yaiku bedane v4 lan v7 minangka primary key, lan iki dudu masalah selera. Indeks database yaiku wit sing disimpen miturut urutan sing disortir, lan ing endi kunci anyar mlebu ing urutan kasebut mutusake sepira akehe gawean sing dibutuhake kanggo nindakake sisipan. Kunci v4 kuwi acak, dadi sisipan sing terus-terusan bakal mlebu ing sudhut indeks sing ora ana hubungane: kaca sing sadurunge kebak bakal pecah, perangan wit sing ditahan database ing memori arang banget dadi perangan sing dibutuhake kanggo sisipan sabanjure, lan pungkasane indeks kasebut dadi luwih gedhe lan luwih kapisah-pisah tinimbang mestine. Kunci v7 diwiwiti kanthi milidetik saiki, dadi sisipan sing terus-terusan bakal mlebu ing pinggir tengen wit sacara bebarengan, sing minangka pola sing diasilake dening angka sing mundhak otomatis lan pola sing dadi dhasar struktur indeks. Iku inti saka pertukaran iki: v7 menehi sampeyan prilaku sisipan saka kunci sing berurutan nalika njaga sipat sing biyen nggawe sampeyan milih UUID, yaiku sapa wae bisa nyetak tanpa njaluk marang server. Resikone yaiku wektu nggawe saiki bisa diwaca ing njero pengidentifikasi kasebut, lan apa iku dadi masalah gumantung ing data sampeyan, dudu ing format.
Ora ana sing tau mriksa UUID kanggo mesthekake keunikane; ukurane minangka jaminane. Ora ana registri, ora ana bolak-balik server, ora ana panelusuran — siji generator nggawe angka lan masrahake, lan alesan ngapa ora ana loro sing tabrakan mung amarga ana 2^122 kemungkinan nilai v4, udakara 5,3 × 10^36. Masalah ulang taun minangka cara jujur kanggo ngukur: sampeyan butuh udakara 2,7 × 10^18 pengidentifikasi sadurunge ana kemungkinan 50% kanggo rong UUID kasebut padha, yaiku siji milyar UUID anyar saben detik sajrone 86 taun. Penting kanggo ngerti kanthi pas apa sing dijanjikake lan sing ora dijanjikake. Iki minangka jaminan statistik, dudu aritmatika, lan mung ditrapake yen keacakan ing mburine pancen asli — generator sing dipasangi seed sing ala, utawa mesin virtual sing dikloning bebarengan karo blumbang entropine, bakal ngrusak kanthi cara sing ora bisa dideteksi dening format. Versi 7 luwih ngringkes pitakonan iki: ing sajrone milidetik, siji generator ora bisa mbaleni awake dhewe amarga penghitung mundhak tinimbang ngacak dadu, lan ing antarane generator independen, 62 bit acak sing tumindak.
UUID kuwi pengidentifikasi, dudu sandhi. Versi 4 ora bisa diprediksi, lan iki ndadekake wong-wong nggunakake minangka rahasia — tautan reset sandhi, URL sing ora bisa ditebak, token sesi, kunci API. Ketidakpastian kasebut nyata, nanging wadi minangka sifat saka carane nilai kasebut ditangani, lan pengidentifikasi pancen ditangani kanthi bebas: ana ing URL, sing mlebu ing riwayat browser, log server, header referrer lan analitik, lan asring ditempel menyang pesen obrolan. Versi liyane malah luwih ala. Versi 1 lan versi 7 mbukak wektu digawe, dadi sapa wae sing nduweni ngerti kira-kira kapan UUID kuwi digawe lan bisa mbatesi lingkungan barang sing digawe bareng. Versi 3 lan 5 sengaja digawe deterministik: UUID v5 saka alamat email dudu rahasia sing di-hash, nanging nilai sing bisa diitung sajrone sedetik dening sapa wae sing duwe alamat email sing padha. Gunakake UUID kanggo menehi jeneng sawijining bab. Gunakake generator sandhi, utawa token saka pustaka sing khusus digawe kanggo rahasia, yen nilaine kudu tetep ora dingerteni.
Ngapa milih generator UUID iki?
- Gawe mung ing browser: pengidentifikasi digawe ing piranti sampeyan lan ora tau dikirim menyang ngendi wae
- Keacakan Web Crypto API: aman sacara kriptografis, dudu Math.random()
- Lima versi ing siji panggonan: v1, v3, v4, v5 lan v7, tanpa ganti alat
- v7 sing bener-bener urut: penghitung ing njero milidetik, kaya sing diterangake RFC 9562
- v3 lan v5 sing deterministik karo papat namespace standar utawa sampeyan dhewe
- Nganti 1000 bebarengan, karo daptar sing bisa digulir sawise seket nilai
- Saben wujud sing umum: nganggo tandha hubung, biasa, aksara gedhe, kurung kurawal utawa URN urn:uuid:
- Salin dadi baris, dipisah koma utawa nilai ing kutipan sing ditempel langsung ing kode
- Tanpa wates lan gratis: tanpa pendaftaran, tanpa wates panganggone, ora ana ing server kita
UUID katon ing ngendi wae sawijining bab kudu dijenengi sadurunge ana sing bisa mesthekake yen jeneng kasebut bebas. Kode aplikasi nyetak kanggo baris sing bakal disisipake, supaya obyek kasebut nduweni identitas sadurunge mlebu menyang database lan klien bisa ngrujuk menyang kasebut nalika proses nulis isih mlaku. Sistem sing disebarake luwih gumantung marang UUID: sawetara layanan sing nulis ing tabel siji, klien seluler offline sing nggawe rekaman ing pesawat, antrean sing kudu ngenali pesen sing wis diproses — ora ana sing bisa ngenteni giliran kanggo entuk penghitung bareng. Versi 5 nyakup kabutuhan sing beda, yaiku pengidentifikasi stabil sing asale saka bab sing wis sampeyan duweni: dokumen sing padha, URL sing padha utawa akun sing padha mesthi dipetakan dadi UUID sing padha, saengga impor bisa mlaku kaping pindho tanpa nduplikasi apa wae. Ing papan liya, UUID mung minangka format sing dijaluk dening sawijining sistem — pengidentifikasi korelasi sing dilebokake ing njero log lan trace, jeneng file sing ora bakal tabrakan nalika unggahan saka sewu pangguna teka ing siji bucket, kunci registri Windows, instrumen pangujian sing kudu katon kaya data asli.
Sawetara watesan sing jujur iku pantes diweruhi. Siji batch padha karo siji versi: nilai ing 'Versi' ditrapake kanggo kabeh sing ana ing jerone, dadi kumpulan v4 lan kumpulan v7 minangka rong batch sing beda. Iki minangka generator, dudu inspektur — nempelake UUID kanggo maca versi utawa stempel wektune dudu bab sing ditindakake dening kaca iki. 'Simpen menyang file' nulis dadi file teks biasa lan dudu CSV utawa JSON. Versi 7 kanthi terang-terangan mbukak kapan UUID kasebut digawe, nganti milidetik, sing minangka pertukaran nyata lan dudu kekurangan, lan versi 1 mbocokake wektu kanthi cara sing padha; yen kuwi dadi masalah kanggo data sampeyan, versi 4 minangka versi sing ora ngandhani apa-apa marang sapa wae. Rong nilai khusus saka standar kasebut dudu versi lan amarga iku dudu pilihan ing 'Versi', nanging sampeyan bisa nyalin saka kene: UUID nil, 00000000-0000-0000-0000-000000000000, lan UUID max, ffffffff-ffff-ffff-ffff-ffffffffffff. Kabeh ing kaca iki tindak RFC 9562, spesifikasi sing ngganti RFC 4122 ing taun 2024, saengga outpute ditampa dening pustaka, database utawa API sing nangani UUID babar pisan. Ing watesan kasebut jaminane kuwat banget: saben pengidentifikasi digawe miturut standar, saka keacakan sing aman sacara kriptografis, ing mesin sampeyan dhewe, lan ora ana wong liya sing bisa ndeleng.