Lewati ke konten

Generator UUID Gratis - Buat UUID V1 & V4 Secara Instan

Hasilkan pengidentifikasi unik secara instan dengan generator UUID gratis kami. Buat UUID Versi 1 (berbasis waktu) dan Versi 4 (acak) untuk basis data, API, dan sistem terdistribusi.

Generator UUID

Versi UUID
UUID yang Dihasilkan
Kalkulator pemuatan...
📚

Dokumentasi

Generator UUID

Penghasil UUID adalah alat untuk membuat Pengidentifikasi Unik Universal, atau UUID: kode 128 bit yang digunakan untuk memberi label pada suatu data sehingga hampir tidak mungkin ada item lain di mana pun yang memiliki label sama. Halaman ini menghasilkan UUID Versi 1 (berbasis waktu) dan Versi 4 (acak).

Apa itu UUID?

UUID adalah bilangan 128 bit yang ditulis sebagai 32 digit heksadesimal (karakter 0–9 dan a–f). Bilangan ini dibagi menjadi lima kelompok yang dipisahkan dengan tanda hubung, dengan pola 8-4-4-4-12, sehingga totalnya 36 karakter. Contoh UUID tampak seperti ini:

1550e8400-e29b-41d4-a716-446655440000
2

UUID didefinisikan dalam RFC 9562, yang diterbitkan oleh Internet Engineering Task Force pada Mei 2024 dan menggantikan RFC 4122 yang lebih lama dari 2005. Kedua dokumen tersebut menjelaskan format 128 bit yang sama. Perangkat lunak menggunakannya untuk mengidentifikasi baris basis data, berkas, sesi pengguna, dan catatan lain tanpa memerlukan otoritas pusat untuk membagikan angka. Karena ruang UUID yang mungkin sangat besar, dua komputer dapat membuat UUID secara independen pada saat yang sama dan hampir tidak pernah menghasilkan UUID yang sama.

Format dan struktur UUID

Sebanyak 128 bit dalam UUID dibagi menjadi beberapa bidang bernama. Setiap bidang menempati jumlah bit yang tetap:

  • time_low – 32 bit
  • time_mid – 16 bit
  • time_hi_and_version – 16 bit
  • clock_seq_hi_and_reserved – 8 bit
  • clock_seq_low – 8 bit
  • node – 48 bit
Tata letak bidang UUID time_low time_mid time_hi seq_hi seq_lo node time_low: 32 bits time_mid: 16 bits time_hi_and_version: 16 bits clock_seq_hi_and_reserved: 8 bits clock_seq_low: 8 bits node: 48 bits

Empat bit di dalam time_hi_and_version menyimpan nomor versi UUID, dan dua bit di dalam clock_seq_hi_and_reserved menyimpan varian, yang memberi tahu perangkat lunak cara membaca bidang lainnya. Delapan versi telah ditetapkan.

Nama bidang di atas berasal dari Versi 1, yang memang menyimpan nilai waktu dan node. Versi lain mempertahankan tata letak 8-4-4-4-12 yang sama dan batas bidang yang sama, tetapi mengisi sebagian besar bit dengan data acak. Dalam UUID Versi 4, kelompok berlabel time_low bersifat acak, bukan waktu.

Cara membuat UUID dengan alat ini

  1. Pilih versi: Versi 1 (berbasis waktu) atau Versi 4 (acak).
  2. Baca UUID dari kotak hasil. UUID baru muncul segera setelah halaman dimuat atau versinya berubah.
  3. Pilih “Generate” untuk membuat yang lain.
  4. Pilih “Copy” untuk menyalin hasil ke clipboard, lalu tempelkan ke kode, basis data, atau berkas konfigurasi.

Panel di bawah hasil membagi UUID menjadi lima bidang dan memberi nama pada masing-masing bidang, sehingga digit versi dan digit varian mudah ditemukan.

Versi 4 cocok untuk sebagian besar kebutuhan, termasuk kunci basis data dan token sesi, karena tidak memuat informasi tentang kapan atau di mana UUID dibuat. Versi 1 cocok untuk catatan yang waktu pembuatannya perlu dapat dipulihkan dari pengidentifikasi itu sendiri, seperti entri log.

UUID versi 1 vs. versi 4

Versi 1 menyandikan stempel waktu saat ini, ditambah urutan jam dan nilai node yang dipilih secara acak. Standar mengizinkan nilai node berupa alamat jaringan (MAC) nyata komputer, tetapi juga mengizinkan nilai node yang dibuat secara acak sebagai alternatif yang menjaga privasi. Alat ini selalu menggunakan opsi acak: UUID Versi 1 yang dihasilkannya tidak pernah membaca atau mengekspos alamat MAC nyata. Standar juga mengharuskan bit terendah dari byte pertama bidang node diatur ke 1 pada nilai node acak, dan alat ini mengaturnya. Kartu jaringan nyata tidak pernah memiliki bit tersebut, sehingga node acak tidak mungkin disalahartikan sebagai node nyata. Karena itu, digit heksadesimal kedua dari kelompok kelima selalu ganjil dalam UUID Versi 1 dari halaman ini: 1, 3, 5, 7, 9, b, d, atau f.

Stempel waktu di dalam UUID Versi 1 dapat dibaca kembali, sehingga catatan dapat diurutkan berdasarkan waktu pembuatan. Mengurutkan teks UUID itu sendiri tidak menghasilkan urutan tersebut, karena kelompok pertama menyimpan 32 bit terendah dari stempel waktu, yang berputar kira-kira setiap 7 menit. Versi 6, yang ditambahkan dalam RFC 9562, menyimpan stempel waktu yang sama dengan bit tertinggi di awal sehingga pengurutan teks biasa dapat digunakan.

Versi 4 dibuat dari bit acak, dengan beberapa bit ditetapkan untuk menandai versi dan varian. Versi ini tidak membawa stempel waktu maupun data khusus mesin, sehingga tidak mengungkapkan kapan atau di mana UUID dibuat. Versi ini tidak dapat diurutkan berdasarkan waktu pembuatan.

Enam versi lain ada dalam standar, tetapi tidak dibuat oleh alat ini: Versi 2 (DCE Security, jarang digunakan); Versi 3 dan Versi 5, yang dibuat dengan melakukan hashing namespace dan nama menggunakan MD5 atau SHA-1, sehingga input yang sama selalu menghasilkan UUID yang sama; serta Versi 6, 7, dan 8, yang ditambahkan oleh RFC 9562 pada (24.300 cm) 2024 untuk pengidentifikasi yang dapat diurutkan dan khusus.

Cara menghitung UUID (rumus)

Versi 4:

  1. Buat 128 bit acak.
  2. Tetapkan empat bit versi, yaitu digit heksadesimal pertama dari kelompok ketiga, menjadi 0100 (heksadesimal 4).
  3. Tetapkan dua bit teratas dari kelompok keempat menjadi 10 (sehingga digit heksadesimal pertama kelompok itu adalah 8, 9, a, atau b).

Hanya 122 dari 128 bit yang benar-benar acak, karena 6 bit ditetapkan oleh langkah 2 dan 3. Ini menghasilkan 2^122, atau sekitar 5,3 × 10^36, UUID Versi 4 yang mungkin.

Versi 1:

  1. Ambil waktu saat ini sebagai hitungan interval 100 nanodetik sejak 15 Oktober 1582, tanggal reformasi kalender Gregorian. Dalam praktiknya, nilainya adalah waktu Unix biasa dalam milidetik ditambah 12.219.292.800.000, lalu seluruhnya dikalikan dengan 10.000.
  2. Bagi hitungan 60 bit itu ke dalam tiga bidang: 32 bit terendah ditempatkan di time_low, 16 bit berikutnya di time_mid, dan 12 bit teratas di time_hi_and_version.
  3. Buat urutan jam 14 bit yang digunakan untuk menghindari benturan jika jam sistem diatur mundur.
  4. Buat nilai node 48 bit dengan bit terendah dari byte pertamanya ditetapkan ke 1.
  5. Tetapkan bit versi ke 0001 dan bit varian ke 10.

Di seluruh versi UUID, ruang 128 bit penuh memuat 2^128, atau sekitar 3,4 × 10^38, nilai yang mungkin. Jumlah ini begitu besar sehingga benturan acak bukan masalah dalam praktik.

Contoh perhitungan

Membaca UUID Versi 4. Ambil contoh sebelumnya: 550e8400-e29b-41d4-a716-446655440000.

  • Kelompok ketiga, 41d4: digit pertama adalah 4, yang menandainya sebagai UUID Versi 4.
  • Kelompok keempat, a716: digit pertama, a (biner 1010), diawali dengan 10, yaitu bit varian yang diwajibkan.
  • Digit heksadesimal yang tersisa adalah data acak.

Program yang membaca UUID ini memeriksa pola 4 dan 10 untuk mengonfirmasi format, lalu memperlakukan sisanya sebagai nilai acak yang tidak ditafsirkan.

Membuat UUID Versi 1. Misalkan jam menunjukkan 1.700.000.000.000 milidetik waktu Unix, yaitu 14 November 2023, 22:13:20 UTC.

  1. Tambahkan offset: 1.700.000.000.000 + 12.219.292.800.000 = 13.919.292.800.000 md.
  2. Kalikan dengan 10.000 untuk memperoleh interval 100 nanodetik: 139,192,928,000,000,000. Dalam heksadesimal, nilainya adalah 01EE833B04AFC000.
  3. Pecah nilainya: time_low = 04AFC000 (8 digit heksadesimal terendah), time_mid = 833B (4 digit berikutnya), dan 12 bit teratas adalah 1EE.
  4. Letakkan digit versi 1 di depan 1EE, sehingga time_hi_and_version = 11EE.

UUID tersebut kemudian berbunyi 04afc000-833b-11ee- diikuti urutan jam dan nilai node. Perangkat lunak dapat membalikkan keempat langkah ini untuk memulihkan 14 November 2023 dari pengidentifikasi tersebut.

Penggunaan umum UUID

  • Kunci utama dalam basis data, terutama ketika beberapa server membuat catatan pada saat yang sama tanpa saling berkoordinasi.
  • Token sesi dan kunci API, biasanya Versi 4 karena perlindungan privasinya.
  • Pengidentifikasi untuk berkas, peristiwa, dan sumber daya dalam sistem terdistribusi seperti layanan mikro.
  • ID perangkat dalam jaringan IoT besar, yang memungkinkan setiap perangkat membuat ID-nya sendiri secara luring.

Pertukaran utama adalah ukuran: UUID memerlukan 16 byte penyimpanan, dibandingkan dengan 4 atau 8 byte untuk pencacah bilangan bulat sederhana, dan beberapa basis data mengindeks UUID lebih lambat daripada bilangan bulat berurutan.

Alternatif untuk UUID

Bilangan bulat yang bertambah otomatis lebih kecil dan sederhana, tetapi tidak bekerja dengan baik ketika lebih dari satu server perlu menerbitkan ID secara independen. ID Snowflake, yang dikembangkan di Twitter, menggabungkan stempel waktu dengan ID pekerja untuk menghasilkan ID ringkas yang dapat diurutkan dalam sistem terdistribusi. ULID (Universally Unique Lexicographically Sortable Identifiers) adalah format yang lebih baru, dirancang agar acak sekaligus dapat diurutkan berdasarkan waktu pembuatan, tidak seperti UUID Versi 4 standar.

Sejarah standar UUID

Konsep UUID dimulai pada 1980-an di Apollo Computer sebagai bagian dari Network Computing System. Open Software Foundation kemudian mengadopsi format tersebut untuk Distributed Computing Environment. Internet Engineering Task Force menerbitkan RFC 4122 pada (10.500 cm) 2005, lalu menggantinya dengan RFC 9562 pada Mei 2024. RFC 9562 mempertahankan semua versi sebelumnya agar tetap berfungsi tanpa perubahan dan menambahkan Versi 6, 7, dan 8.

Pertanyaan yang sering diajukan

Untuk apa generator UUID digunakan? Generator ini membuat pengidentifikasi unik untuk basis data, sistem terdistribusi, token sesi, kunci API, dan ID perangkat, sehingga tidak ada dua catatan yang perlu berbagi pengidentifikasi yang sama.

Apa perbedaan antara UUID v1 dan v4? Versi 1 menyandikan stempel waktu yang dapat dibaca kembali oleh perangkat lunak untuk memulihkan waktu pembuatan. Versi 4 sepenuhnya acak dan tidak membawa stempel waktu. Output Versi 1 dari alat ini menggunakan nilai node yang dibuat secara acak, bukan alamat MAC nyata, sehingga juga tidak mengekspos informasi pengenal mesin.

Apakah Versi 1 mengekspos alamat MAC saya? Tidak dengan alat ini. Standar mengizinkan bidang node UUID Versi 1 menyimpan alamat MAC nyata, tetapi generator ini selalu mengisi bidang tersebut dengan bit acak dan menetapkan bit yang menandai nilai itu bukan alamat jaringan nyata.

Apakah UUID dijamin unik? Tidak ada skema pengidentifikasi yang dapat menjamin keunikan mutlak, tetapi ruang 128 bit memuat sekitar 3,4 × 10^38 nilai yang mungkin, dan UUID Versi 4 memiliki sekitar 5,3 × 10^36 nilai acak yang mungkin. Kemungkinan duplikatnya cukup kecil untuk diabaikan dalam hampir semua penggunaan praktis.

Dapatkah UUID digunakan sebagai kunci utama basis data? Ya. UUID bekerja dengan baik sebagai kunci utama dalam sistem terdistribusi karena node mana pun dapat membuatnya tanpa berkomunikasi dengan server pusat. Biayanya adalah 16 byte penyimpanan per kunci, lebih besar daripada bilangan bulat biasa, serta kemungkinan kinerja indeks yang lebih lambat pada tabel yang sangat besar.

Apakah UUID sama dengan GUID? Ya. GUID (Globally Unique Identifier) adalah nama Microsoft untuk konsep yang sama seperti yang ditetapkan RFC 4122 sebagai UUID.

Dapatkah UUID Versi 4 diurutkan berdasarkan waktu pembuatan? Tidak. UUID Versi 4 bersifat acak, sehingga tidak membawa catatan kapan UUID dibuat. UUID Versi 1 memang membawa informasi tersebut, tetapi harus didekodekan terlebih dahulu; pengurutan teks tidak menghasilkan urutan pembuatan. Versi 6, Versi 7, dan ULID dirancang agar dapat langsung diurutkan sebagai teks.

Referensi

  1. Davis, K., Peabody, B., & Leach, P. (2024). Universally Unique IDentifiers (UUIDs). RFC 9562. https://www.rfc-editor.org/rfc/rfc9562
  2. Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://www.rfc-editor.org/rfc/rfc4122
  3. Pengidentifikasi unik universal. Dalam Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
  4. ID Snowflake. Dalam Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
  5. Spesifikasi ULID. GitHub. https://github.com/ulid/spec