Buat Pengenal UUID v4 Acak
Buat sebanyak mungkin UUID v4 acak yang Anda butuhkan untuk database dan kode, secara instan.
Nilainya tak pernah meninggalkan perangkat Anda
Tak ada yang dicatat di mana pun
Keacakan setingkat platform
Jalan di semua browser modern
Cara kerjanya
- 1
Pilih versinya
v4, kecuali pengenalnya akan masuk ke indeks basis data — dalam hal itu pertimbangkan v7.
- 2
Pilih jumlahnya
Satu untuk uji cepat, atau sekelompok untuk data seed dan fixture.
- 3
Salin hasilnya
Bawa ke sebuah skema, permintaan, berkas konfigurasi, atau pengujian.
Mengapa memakai alat ini
Versi 4 dan versi 7
Acak untuk penggunaan umum, atau terurut menurut cap waktu ketika nilainya menjadi kunci primer.
Keacakan kriptografis
Dihasilkan dari sumber acak aman milik browser, bukan dari fungsi pseudoacak yang bisa ditebak.
Pembangkitan massal
Satu pengenal atau seribu, dihasilkan dalam satu langkah dan siap ditempel ke berkas seed.
Dengan atau tanpa tanda hubung
Bentuk kanonis 36 karakter atau bentuk telanjang 32 karakter, mana pun yang diharapkan tujuannya.
Tidak ada yang dikirimkan
Nilainya dihasilkan di browser Anda, jadi tak ada pihak ketiga yang tahu pengenal mana yang Anda pakai.
Gratis tanpa akun
Tanpa pendaftaran, tanpa watermark, dan tanpa batas berapa banyak yang Anda hasilkan.
Versinya lebih penting daripada yang disadari kebanyakan orang
Orang berkata UUID dan memaksudkan versi 4, yaitu 122 bit acak dan tak ada yang lain. Itu bawaan yang tepat, tetapi ia bukan satu-satunya versi dan perbedaannya berkonsekuensi. Versi 1 membangun pengenalnya dari sebuah cap waktu dan alamat perangkat keras jaringan mesinnya, yang berarti UUID v1 diam-diam mengungkapkan kapan ia dibuat dan, secara historis, mesin mana yang membuatnya — tak masalah di dalam sebuah sistem, canggung pada apa pun yang bisa dilihat pelanggan. Versi 7, yang baru-baru ini distandarkan, mempertahankan keacakannya tetapi menaruh cap waktu milidetik di bit terdepan, sehingga nilainya terurut secara kronologis. Kalau Anda pernah menghasilkan UUID tanpa memikirkan jenisnya, itu hampir pasti v4, dan untuk sebagian besar penggunaan itulah jawaban yang benar. Pengecualiannya ada di bawah ini.
Pengenal acak berat bagi indeks basis data
Inilah fakta praktis paling berkonsekuensi tentang UUID dan ia mengejutkan orang yang beralih dari bilangan bulat. Indeks basis data adalah struktur terurut, dan struktur terurut menyukai nilai yang datang berurutan. Deretan bilangan bulat menempel di ujung indeks, menyentuh satu halaman berulang-ulang dan menahannya di memori. Aliran UUID v4 acak menurut rancangannya, jadi tiap penyisipan mendarat di tempat berbeda, memaksa indeksnya menulis ke halaman yang berserakan, membelahnya, dan menahan jauh lebih banyak strukturnya di cache agar bisa mengejar. Pada tabel besar perbedaannya terukur, dan gejalanya adalah kisah akrab tentang sistem yang melambat setelah mengadopsi kunci UUID. Versi 7 ada justru untuk ini: cap waktu terdepan membuat nilai baru terurut berdekatan, jadi penyisipannya kembali lokal sementara pengenalnya tetap tak bisa ditebak.
UUID bukan rahasia, kecuali Anda sengaja menjadikannya rahasia
Dua klaim tercampur di sini dan keduanya penting. Yang pertama, UUID v4 benar-benar tak bisa ditebak — 122 bit acak jauh di luar jangkauan tebakan paksa — tetapi hanya kalau keacakannya kriptografis. Banyak kode menghasilkan UUID dari fungsi acak serba guna yang cepat dan dapat diramalkan, dan pengenal dari sumber yang dapat diramalkan bisa didaftar habis oleh siapa pun yang memecahkan benihnya. Periksa apa yang dipakai pembangkit Anda. Yang kedua, bahkan v4 yang sempurna adalah pengenal dan bukan otorisasi. Memakai UUID tak tertebak sebagai tautan berbagi memang berhasil, dan itu berarti URL-nya adalah kata sandinya: ia akan duduk di riwayat browser, di header perujuk, di log obrolan, dan di tiap surel yang meneruskannya. Itu rancangan yang bisa diterima untuk tautan dokumen dan tak bisa diterima untuk apa pun yang perlu dicabut.
Apa yang sebenarnya dikatakan jaminan tabrakan
Alasan UUID bekerja tanpa koordinasi adalah sebuah argumen probabilitas, dan angkanya layak diketahui supaya Anda berhenti mengkhawatirkannya. Dengan 122 bit acak, Anda perlu menghasilkan kira-kira 2,7 kuintiliun UUID versi 4 sebelum ada peluang 50 persen bahwa dua di antaranya cocok. Pada laju sejuta per detik itu puluhan ribu tahun, dan itulah sebabnya sistem di dua ujung dunia bisa mencetak pengenal tanpa daftar pusat dan tanpa pernah berkoordinasi. Yang sepenuhnya menjadi sandaran jaminan itu adalah kualitas keacakannya. Pembangkit yang lemah atau berbenih buruk meruntuhkan angka itu tanpa peringatan apa pun, dan UUID kembar di produksi hampir selalu berpangkal pada sumber yang cacat alih-alih nasib buruk — beberapa insiden terkenal melibatkan perangkat yang memberi benih identik pada sumber acaknya saat menyala.
Menyimpannya lebih mahal daripada dugaan Anda
UUID berukuran 128 bit — 16 bita — tetapi bentuk yang biasanya Anda lihat adalah 36 karakter teks, karena representasi kanonisnya menulis tiap bita sebagai dua digit heksadesimal dan menambahkan empat tanda hubung. Simpan itu sebagai string dan Anda memakai 36 bita per baris alih-alih 16, ditambah apa pun yang ditambahkan basis data Anda untuk kolom berpanjang variabel, dan tiap indeks pada kolom itu membawa penggembungan yang sama. Pada tabel beberapa ribu baris tak seorang pun memperhatikan. Pada tabel seratus juta baris, di sebuah indeks yang harus tetap di memori, itu perbedaan antara muat dan tak muat. Kebanyakan basis data punya tipe asli 16 bita persis karena alasan ini, dan memakainya biasanya keputusan yang tepat. Rincian pemformatan kecil saja dibandingkan itu: tanda hubung bersifat konvensional bukan wajib, perbandingannya tak peka huruf besar-kecil, dan huruf kecil adalah keluaran kanonisnya.
Kenapa membangkitkan secara lokal penting bahkan untuk nilai acak
Wajar menanyakan apa hubungan privasi dengan sebuah angka acak, dan jawabannya adalah bahwa angka itu berhenti anonim begitu ia terikat pada sesuatu. Pembangkit yang dihosting melihat tiap pengenal yang ia keluarkan dan bisa mencatatnya berikut alamat peminta dan waktunya. Kalau UUID itu kemudian menjadi nomor pesanan, tautan berbagi, kunci API, atau pengenal basis data di sistem Anda, ada orang lain yang memegang daftar nilai yang sah dan gambaran bagus tentang milik apa nilai-nilai itu. Itu risiko kecil dan sepenuhnya tak perlu, karena membangkitkan secara lokal menghapusnya sama sekali: browser Anda punya sumber acak kriptografis bawaan, nilainya tak pernah meninggalkan halaman, dan Anda bisa memastikan tak ada permintaan yang dibuat di tab Network pada developer tools.
Kesalahan umum yang sebaiknya dihindari
- Memakai UUID v4 sebagai kunci primer pada tabel besar. Nilai acak menyerakkan penulisan indeks dan memfragmentasi strukturnya — pakai v7, yang cap waktu terdepannya menjaga penyisipan tetap lokal sekaligus tak tertebak.
- Menghasilkan UUID dari fungsi acak serba guna. Hanya sumber kriptografis yang membuatnya tak tertebak; benih yang dapat diramalkan berarti penyerang bisa mendaftar habis pengenalnya.
- Memperlakukan UUID tak tertebak sebagai otorisasi. Tautan berbagi yang dibangun darinya berarti URL-nya adalah kata sandinya, dan URL berakhir di riwayat, header perujuk, dan surel yang diteruskan.
- Menyimpan UUID sebagai string 36 karakter dalam skala besar. Nilainya 16 bita; bentuk teksnya lebih dari melipatgandakan itu di tiap baris dan tiap indeks — kebanyakan basis data punya tipe asli.
- Memakai v1 pada apa pun yang dilihat pelanggan. Ia mengodekan waktu pembuatan dan secara historis alamat perangkat keras jaringan mesinnya, lebih banyak daripada yang perlu diungkap sebuah pengenal.
Perbandingan
| Aspek | Alat ini | Pembangkit daring | Pemanggilan pustaka |
|---|---|---|---|
| Nilai dikirim atau dicatat | Tidak pernah | Mungkin | Tidak |
| v7 tersedia | Ya | Jarang | Tergantung pustakanya |
| Keacakan kriptografis | Ya | Umumnya tak dinyatakan | Umumnya ya |
| Pembangkitan massal | Ya | Kadang | Ya |
| Jalan tanpa membuka proyek | Ya | Ya | Tidak |
| Harga | Gratis | Gratis / paket berbayar | Gratis |
Fitur
UUID v4
Versi 122 bit acak yang dimaksud kebanyakan sistem ketika mereka menyebut UUID.
UUID v7
Berawalan cap waktu dan karenanya bisa diurutkan, yang memang diinginkan indeks basis data.
Huruf besar atau kecil
Bentuk kanonisnya huruf kecil; sebagian sistem bersikeras huruf besar, dan keduanya ada di sini.
Membangkitkan massal
Ratusan sekaligus, satu per baris, siap untuk skrip seed atau kolom lembar sebar.
Memakai CSPRNG platform
Nilainya datang dari pembangkit kriptografis browser alih-alih pembangkit serba guna.
Seketika, tanpa permintaan
Tak ada yang diambil, jadi pembangkitannya langsung dan berjalan dengan tab yang sudah termuat.
Tanpa instalasi
Tanpa pustaka, tanpa runtime, tanpa dependensi — jalan di halaman web.
Ramah Arab dan RTL
Antarmuka lengkap dalam delapan bahasa, termasuk Arab kanan-ke-kiri.
Aman secara bawaan
Disajikan lewat HTTPS, tanpa pelacakan dan tanpa permintaan ke pihak ketiga.
Siapa yang memakainya
Pengembang
Mendapat pengenal yang sah untuk sebuah fixture atau baris basis data manual tanpa membuka konsol.
Insinyur basis data
Menghasilkan nilai v7 ketika sebuah tabel butuh kunci tak tertebak yang tetap terindeks dengan baik.
Insinyur QA
Membangkitkan sekelompok pengenal unik untuk data uji dalam satu langkah.
Integrator API
Membuat kunci idempotensi atau pengenal korelasi untuk sebuah permintaan.
Pertanyaan yang Sering Diajukan
Tidak. Semuanya berjalan lokal di browser Anda — teks Anda tidak pernah diunggah, disimpan, atau dibagikan.
Ya — sepenuhnya gratis, tanpa akun dan tanpa batas.