Cara menggunakan generator UUID
- Pilih versinya: v4 (acak) atau v7 (berurutan menurut waktu).
- Tentukan berapa banyak UUID yang Anda perlukan, dari satu hingga daftar massal.
- Jika perlu, ubah ke huruf kapital atau hapus tanda hubungnya.
- Salin satu nilai atau seluruh daftar.
UUID dibuat di browser Anda menggunakan generator angka acak yang aman secara kriptografis. UUID tidak pernah dikirim ke atau disimpan di server kami, sehingga tidak ada orang lain yang tahu pengenal mana yang Anda buat.
Apa itu UUID?
UUID (Universally Unique Identifier) adalah nilai 128-bit yang dapat dibuat secara mandiri di mesin mana pun dengan peluang bentrok dengan UUID lain yang sangat kecil hingga bisa diabaikan. Tidak diperlukan registri pusat atau bolak-balik ke database, sehingga UUID ideal untuk sistem terdistribusi, klien offline, dan penggabungan data dari beberapa sumber. UUID juga umum dipakai sebagai request ID dan untuk klaim jti di dalam token yang dapat Anda periksa dengan JWT decoder. GUID (Globally Unique Identifier) adalah nama yang dipakai Microsoft untuk hal yang sama.
UUID ditulis sebagai 32 digit heksadesimal dalam lima kelompok yang dipisahkan tanda hubung, dengan pola 8-4-4-4-12 (total 36 karakter):
f47ac10b-58cc-4372-a567-0e02b2c3d479
^ ^
| varian (8, 9, a atau b)
versi (4)
Digit pertama dari kelompok ketiga adalah versi; digit pertama dari kelompok keempat menyandikan varian. Spesifikasi yang berlaku saat ini adalah RFC 9562 (2024), yang menggantikan RFC 4122 dan menambahkan versi 6, 7, dan 8.
UUID versi 4 vs versi 7
| UUID v4 | UUID v7 | |
|---|---|---|
| Isi | 122 bit acak (6 bit tetap untuk versi dan varian) | Timestamp Unix 48-bit dalam milidetik, lalu bit acak |
| Urutan sortir | Acak | Kurang lebih kronologis |
| Mengungkap | Tidak ada | Waktu pembuatannya |
| Paling cocok untuk | Token, ID publik, penggunaan umum | Primary key database, log peristiwa |
Mengapa v7 lebih baik untuk indeks database
Primary key biasanya disimpan dalam indeks B-tree. Nilai v4 yang acak masuk di posisi acak, sehingga setiap insert menyentuh halaman yang berbeda, yang menyebabkan page split, lokalitas cache yang buruk, dan indeks yang membengkak pada tabel besar. Karena UUID v7 diawali dengan timestamp, nilai baru ditambahkan di dekat akhir indeks, mirip bilangan bulat auto-increment, sambil tetap mempertahankan keunggulan ID yang unik secara global dan dibuat di sisi klien.
Kesalahan umum
- Menyimpan UUID sebagai teks. String 36 karakter memakan lebih dari dua kali ruang 16 byte mentah. Gunakan tipe
uuidbawaan (PostgreSQL) atauBINARY(16)(MySQL). - Memakai UUID sebagai rahasia. Nilai v4 sulit ditebak, tetapi itu adalah pengenal, bukan kredensial. Nilai v7 mengungkap waktu pembuatannya dan sebagian bisa diprediksi. Gunakan token acak khusus untuk reset kata sandi dan API key.
- Perbandingan yang peka huruf besar-kecil. RFC 9562 menetapkan output dalam huruf kecil, tetapi mewajibkan input diterima dalam huruf besar maupun kecil. Normalisasikan dulu sebelum membandingkan string.
- Sumber acak yang lemah. Membuat UUID v4 dengan
Math.random()merusak keunikannya. Gunakan generator yang aman secara kriptografis.
Membuat UUID dalam kode
// JavaScript (browser dan Node.js)
crypto.randomUUID(); // v4
# Python
import uuid
uuid.uuid4()
uuid.uuid7() # Python 3.14+
-- PostgreSQL
SELECT gen_random_uuid(); -- v4 (PostgreSQL 13+)
SELECT uuidv7(); -- PostgreSQL 18+
// Java
java.util.UUID.randomUUID();
// C# / .NET
Guid.NewGuid(); // v4
Guid.CreateVersion7(); // .NET 9+
# Shell (Linux, macOS)
uuidgen
Pertanyaan yang sering diajukan
Apakah dua UUID bisa sama?
Secara teori bisa; dalam praktiknya tidak. Dengan 122 bit acak, jumlah kemungkinan nilai v4 begitu besar sehingga Anda harus membuat miliaran UUID setiap detik selama puluhan tahun sebelum satu duplikat saja mungkin muncul. Bentrokan di sistem nyata hampir selalu berasal dari generator angka acak yang rusak atau data hasil salinan, bukan dari kebetulan.
Apa bedanya UUID dan GUID?
Dalam praktiknya tidak ada. GUID adalah istilah yang dipakai dalam teknologi Microsoft; format dan ukurannya sama.
Sebaiknya pakai v4 atau v7?
Gunakan v7 untuk primary key database dan apa pun yang ingin Anda urutkan menurut waktu pembuatan. Gunakan v4 jika ID tidak boleh mengungkap apa pun, misalnya pengenal yang terlihat di URL publik.
Apakah nil UUID valid?
Ya. 00000000-0000-0000-0000-000000000000 adalah nil UUID khusus, dan RFC 9562 juga mendefinisikan max UUID yang seluruhnya berisi digit f. Keduanya sering dipakai sebagai placeholder.
Diperbarui