Penjana UUID
UUID yang Dijana
Penjana UUID
Pengenalan
Pengenal Unik Secara Universal (UUID) adalah nombor 128-bit yang digunakan untuk mengenal pasti maklumat dalam sistem komputer. UUID telah distandardkan oleh Open Software Foundation (OSF) sebagai sebahagian daripada Persekitaran Pengkomputeran Teragih (DCE). Pengenal ini direka untuk menjadi unik merentasi ruang dan masa, menjadikannya ideal untuk pelbagai aplikasi dalam sistem teragih dan lebih lagi.
Alat penjana UUID ini membolehkan anda mencipta UUID versi 1 (berdasarkan masa) dan versi 4 (rawak). Pengenal ini berguna dalam pelbagai senario di mana pengenalan unik diperlukan, seperti kunci pangkalan data, sistem teragih, dan protokol rangkaian.
Cara UUID Berfungsi
Struktur UUID
UUID biasanya diwakili sebagai 32 digit heksadesimal, dipaparkan dalam lima kumpulan yang dipisahkan oleh tanda hubung, dalam bentuk 8-4-4-4-12 untuk jumlah 36 watak (32 watak alfanumerik dan 4 tanda hubung). Contohnya:
550e8400-e29b-41d4-a716-446655440000
128 bit UUID dibahagikan kepada bidang tertentu, masing-masing membawa maklumat yang berbeza bergantung kepada 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
Terdapat beberapa versi UUID, masing-masing dengan kaedah penjanaan tersendiri:
- Versi 1 (Berdasarkan masa): Menggunakan cap waktu semasa dan alamat MAC komputer.
- Versi 2 (Keselamatan DCE): Serupa dengan versi 1, tetapi termasuk pengenalan domain tempatan.
- Versi 3 (Berdasarkan nama, MD5): Dihasilkan dengan menghash pengenalan ruang nama dan nama.
- Versi 4 (Rawak): Dihasilkan menggunakan nombor rawak atau pseudo-rawak.
- Versi 5 (Berdasarkan nama, SHA-1): Serupa dengan versi 3, tetapi menggunakan penghashan SHA-1.
Alat ini memberi tumpuan kepada penjanaan UUID Versi 1 dan Versi 4.
Formula
Penjanaan UUID Versi 1
UUID Versi 1 dijana menggunakan komponen berikut:
- Cap waktu: Nilai 60-bit yang mewakili bilangan selang 100-nanodetik sejak 15 Oktober 1582 (tarikh reformasi Gregorian kepada kalendar Kristian).
- Urutan jam: Nilai 14-bit yang digunakan untuk mengelakkan duplikasi sekiranya jam diset semula ke belakang.
- Node: Nilai 48-bit, biasanya diperoleh daripada alamat MAC komputer.
Formula untuk menjana UUID Versi 1 boleh dinyatakan sebagai:
UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
Penjanaan UUID Versi 4
UUID Versi 4 dijana menggunakan penjana nombor rawak yang kuat secara kriptografi. Formula adalah semata-mata:
UUID = random_128_bit_number
Dengan bit tertentu ditetapkan untuk menunjukkan versi (4) dan varian.
Kes Penggunaan
UUID mempunyai pelbagai aplikasi di pelbagai domain sains komputer dan kejuruteraan perisian:
-
Kunci Pangkalan Data: UUID sering digunakan sebagai kunci utama dalam pangkalan data, terutamanya dalam sistem teragih di mana beberapa nod mungkin menghasilkan rekod secara serentak.
-
Sistem Teragih: Dalam sistem teragih berskala besar, UUID membantu dalam mengenal pasti sumber, transaksi, atau peristiwa dengan unik merentasi pelbagai nod atau pusat data.
-
Pengalamatan Kandungan: UUID boleh digunakan untuk mencipta pengenalan unik untuk kandungan dalam sistem penyimpanan yang boleh diakses melalui kandungan.
-
Pengurusan Sesi: Aplikasi web sering menggunakan UUID untuk mengurus sesi pengguna, memastikan setiap sesi mempunyai pengenalan unik.
-
Pengenalan Peranti IoT: Dalam aplikasi Internet of Things (IoT), UUID boleh digunakan untuk mengenal pasti peranti individu dalam rangkaian dengan unik.
Alternatif
Walaupun UUID digunakan secara meluas, terdapat pendekatan alternatif untuk menjana pengenalan unik:
-
ID auto-bertambah: Mudah dan biasa digunakan dalam sistem pangkalan data tunggal, tetapi tidak sesuai untuk persekitaran teragih.
-
ID berdasarkan cap waktu: Boleh berguna untuk data yang diatur mengikut masa tetapi mungkin menghadapi isu perlanggaran dalam senario keserentakan tinggi.
-
ID Snowflake: Dibangunkan oleh Twitter, ID ini menggabungkan cap waktu dan nombor pekerja untuk menjana ID unik dalam sistem teragih.
-
ULID (Pengenal Unik Secara Universal yang Boleh Diatur Secara Lexicographically): Alternatif yang lebih baru yang bertujuan untuk lebih mesra manusia dan boleh diatur berbanding UUID.
Sejarah
Konsep UUID pertama kali diperkenalkan dalam Sistem Pengkomputeran Rangkaian Apollo dan kemudiannya distandardkan oleh Open Software Foundation (OSF) sebagai sebahagian daripada Persekitaran Pengkomputeran Teragih (DCE) pada tahun 1990-an. Spesifikasi awal diterbitkan pada tahun 1997 sebagai ISO/IEC 11578:1996 dan kemudiannya disemak pada tahun 2005 sebagai sebahagian daripada ISO/IEC 9834-8:2005.
Pencapaian utama dalam sejarah UUID:
- 1980-an: Apollo Computer membangunkan konsep UUID untuk Sistem Pengkomputeran Rangkaian mereka.
- 1997: Spesifikasi UUID pertama diterbitkan sebagai ISO/IEC 11578:1996.
- 2005: Spesifikasi UUID disemak dan diterbitkan sebagai sebahagian daripada ISO/IEC 9834-8:2005.
- 2009: RFC 4122 mendefinisikan format UUID dan algoritma penjanaan yang digunakan hari ini.
Dari semasa ke semasa, UUID telah menjadi alat penting dalam sistem teragih dan reka bentuk pangkalan data, dengan pelbagai pelaksanaan dan penyesuaian di pelbagai bahasa pengaturcaraan dan platform.
Contoh Kod
Berikut adalah contoh menjana UUID dalam pelbagai bahasa pengaturcaraan:
import uuid
## Hasilkan UUID Versi 4 (rawak)
random_uuid = uuid.uuid4()
print(f"UUID Versi 4: {random_uuid}")
## Hasilkan UUID Versi 1 (berdasarkan masa)
time_based_uuid = uuid.uuid1()
print(f"UUID Versi 1: {time_based_uuid}")
Rujukan
- 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
- Pengenal unik secara universal. (2023). Dalam Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
- ID Snowflake. (2023). Dalam Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
- Spesifikasi ULID. (n.d.). GitHub. https://github.com/ulid/spec