Generator UUID
UUID yang Dihasilkan
UUID Generator
Introduction
Pengidentifikasi Unik Universal (UUID) adalah angka 128-bit yang digunakan untuk mengidentifikasi informasi dalam sistem komputer. UUID distandarisasi oleh Open Software Foundation (OSF) sebagai bagian dari Lingkungan Komputasi Terdistribusi (DCE). Identifikasi ini dirancang untuk unik di seluruh ruang dan waktu, menjadikannya ideal untuk berbagai aplikasi dalam sistem terdistribusi dan seterusnya.
Alat pembangkit UUID ini memungkinkan Anda untuk membuat UUID versi 1 (berbasis waktu) dan versi 4 (acak). Identifikasi ini berguna dalam berbagai skenario di mana identifikasi unik diperlukan, seperti kunci basis data, sistem terdistribusi, dan protokol jaringan.
Cara Kerja UUID
Struktur UUID
UUID biasanya direpresentasikan sebagai 32 digit heksadesimal, ditampilkan dalam lima grup yang dipisahkan oleh tanda hubung, dalam bentuk 8-4-4-4-12 untuk total 36 karakter (32 karakter alfanumerik dan 4 tanda hubung). Sebagai contoh:
550e8400-e29b-41d4-a716-446655440000
128 bit dari UUID dibagi menjadi bidang tertentu, masing-masing membawa informasi yang berbeda tergantung pada versi UUID:
- 32 bit untuk bidang time_low
- 16 bit untuk bidang time_mid
- 16 bit untuk bidang time_hi_and_version
- 8 bit untuk bidang clock_seq_hi_and_reserved
- 8 bit untuk bidang clock_seq_low
- 48 bit untuk bidang node
Berikut adalah diagram yang menggambarkan struktur UUID:
Versi UUID
Ada beberapa versi UUID, masing-masing dengan metode generasi yang berbeda:
- Versi 1 (Berbasis Waktu): Menggunakan cap waktu saat ini dan alamat MAC dari komputer.
- Versi 2 (Keamanan DCE): Mirip dengan versi 1, tetapi menyertakan pengidentifikasi domain lokal.
- Versi 3 (Berbasis Nama, MD5): Dihasilkan dengan menghash pengidentifikasi ruang nama dan nama.
- Versi 4 (Acak): Dihasilkan menggunakan nomor acak atau pseudo-random.
- Versi 5 (Berbasis Nama, SHA-1): Mirip dengan versi 3, tetapi menggunakan hashing SHA-1.
Alat ini fokus pada menghasilkan UUID Versi 1 dan Versi 4.
Formula
Generasi UUID Versi 1
UUID versi 1 dihasilkan menggunakan komponen berikut:
- Cap waktu: Nilai 60-bit yang mewakili jumlah interval 100-nanodetik sejak 15 Oktober 1582 (tanggal reformasi Gregorian terhadap kalender Kristen).
- Urutan jam: Nilai 14-bit yang digunakan untuk menghindari duplikasi jika jam disetel mundur.
- Node: Nilai 48-bit, biasanya berasal dari alamat MAC komputer.
Formula untuk menghasilkan UUID Versi 1 dapat dinyatakan sebagai:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
Generasi UUID Versi 4
UUID versi 4 dihasilkan menggunakan generator nomor acak yang kuat secara kriptografis. Formula ini sederhana:
UUID = random_128_bit_number
Dengan bit tertentu diatur untuk menunjukkan versi (4) dan varian.
Kasus Penggunaan
UUID memiliki banyak aplikasi di berbagai domain ilmu komputer dan rekayasa perangkat lunak:
-
Kunci Basis Data: UUID sering digunakan sebagai kunci utama dalam basis data, terutama dalam sistem terdistribusi di mana beberapa node mungkin menghasilkan catatan secara bersamaan.
-
Sistem Terdistribusi: Dalam sistem terdistribusi berskala besar, UUID membantu dalam mengidentifikasi sumber daya, transaksi, atau peristiwa secara unik di berbagai node atau pusat data.
-
Alamat Konten: UUID dapat digunakan untuk membuat pengidentifikasi unik untuk konten dalam sistem penyimpanan yang dapat diakses berdasarkan konten.
-
Manajemen Sesi: Aplikasi web sering menggunakan UUID untuk mengelola sesi pengguna, memastikan setiap sesi memiliki pengidentifikasi unik.
-
Identifikasi Perangkat IoT: Dalam aplikasi Internet of Things (IoT), UUID dapat digunakan untuk mengidentifikasi perangkat individu secara unik dalam jaringan.
Alternatif
Meskipun UUID banyak digunakan, ada pendekatan alternatif untuk menghasilkan pengidentifikasi unik:
-
ID yang Meningkat Secara Otomatis: Sederhana dan umum digunakan dalam sistem basis data tunggal, tetapi tidak cocok untuk lingkungan terdistribusi.
-
ID Berbasis Waktu: Dapat berguna untuk data yang terurut berdasarkan waktu tetapi mungkin menghadapi masalah tabrakan dalam skenario dengan banyak koneksi.
-
ID Snowflake: Dikembangkan oleh Twitter, ID ini menggabungkan cap waktu dan nomor pekerja untuk menghasilkan ID unik dalam sistem terdistribusi.
-
ULID (Pengidentifikasi Unik Secara Universal yang Dapat Diurutkan Secara Lexicographically): Alternatif yang lebih baru yang bertujuan untuk lebih ramah manusia dan dapat diurutkan dibandingkan UUID.
Sejarah
Konsep UUID pertama kali diperkenalkan dalam Sistem Komputasi Jaringan Apollo dan kemudian distandarisasi oleh Open Software Foundation (OSF) sebagai bagian dari Lingkungan Komputasi Terdistribusi (DCE) pada tahun 1990-an. Spesifikasi awal diterbitkan pada tahun 1997 sebagai ISO/IEC 11578:1996 dan kemudian direvisi pada tahun 2005 sebagai bagian dari ISO/IEC 9834-8:2005.
Tonggak sejarah kunci dalam sejarah UUID:
- 1980-an: Apollo Computer mengembangkan konsep UUID untuk Sistem Komputasi Jaringan mereka.
- 1997: Spesifikasi UUID pertama diterbitkan sebagai ISO/IEC 11578:1996.
- 2005: Spesifikasi UUID direvisi dan diterbitkan sebagai bagian dari ISO/IEC 9834-8:2005.
- 2009: RFC 4122 mendefinisikan format UUID dan algoritma generasi yang digunakan saat ini.
Seiring waktu, UUID telah menjadi alat penting dalam sistem terdistribusi dan desain basis data, dengan berbagai implementasi dan adaptasi di berbagai bahasa pemrograman dan platform.
Contoh Kode
Berikut adalah contoh menghasilkan UUID dalam berbagai bahasa pemrograman:
import uuid
## Menghasilkan UUID Versi 4 (acak)
random_uuid = uuid.uuid4()
print(f"UUID Versi 4: {random_uuid}")
## Menghasilkan UUID Versi 1 (berbasis waktu)
time_based_uuid = uuid.uuid1()
print(f"UUID Versi 1: {time_based_uuid}")
Referensi
- Leach, P., Mealling, M., & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://tools.ietf.org/html/rfc4122
- International Organization for Standardization. (2005). Information technology – Open Systems Interconnection – Procedures for the operation of OSI Registration Authorities: Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components. ISO/IEC 9834-8:2005. https://www.iso.org/standard/62795.html
- Universally unique identifier. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. (2023). In Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. (n.d.). GitHub. https://github.com/ulid/spec