Evolusi UUID: Memahami Versi 1, 6, dan 7
Universally Unique Identifiers (UUID) telah menjadi landasan sistem terdistribusi selama dekade, menyediakan cara yang andal untuk menghasilkan kunci unik tanpa koordinasi terpusat. Meskipun UUID versi 4 (yang murni mengandalkan angka acak) bisa dibilang merupakan varian yang paling terkenal dan paling banyak digunakan, ia memiliki keterbatasan mendasar saat digunakan sebagai kunci utama dalam sistem manajemen basis data relasional (RDBMS). Keacakan sangat bagus untuk ketidakpastian, tetapi sangat buruk untuk pengindeksan basis data. Ketika Anda memasukkan UUID acak ke dalam indeks B-tree, ini menyebabkan pemisahan halaman (page split) besar-besaran dan fragmentasi indeks, yang mengarah pada penurunan kinerja penulisan seiring waktu. Di sinilah UUID berbasis waktu—khususnya versi 1, 6, dan 7—berperan, menawarkan alternatif terstruktur yang menghormati keunikan dan urutan kronologis.
UUID versi 1 adalah upaya awal untuk menggabungkan keunikan dengan waktu. Ini menghasilkan pengidentifikasi menggunakan stempel waktu saat ini, urutan jam (clock sequence), dan alamat MAC simpul. Pencantuman alamat MAC menjamin keunikan spasial di berbagai mesin, sementara stempel waktu menjamin keunikan temporal. Namun, UUID v1 memiliki kelemahan kritis untuk pengindeksan basis data: stempel waktunya distrukturkan dengan bit paling signifikan mewakili granulitas waktu terendah. Dalam istilah sederhana, seiring berjalannya waktu, awal dari string UUID berubah dengan cepat dan tidak menentu, menghancurkan potensi pengurutan sekuensial. Selain itu, mengekspos alamat MAC menimbulkan masalah privasi dan keamanan yang signifikan, menyebabkan banyak pengembang meninggalkan v1 sepenuhnya.
Untuk menyelesaikan masalah ini, komunitas rekayasa memperkenalkan UUID versi 6 dan versi 7. UUID v6 pada dasarnya adalah UUID v1 yang diatur ulang. Ini mengambil komponen stempel waktu v1 dan menyusunnya kembali sehingga bit paling signifikan mewakili granulitas waktu tertinggi (tahun, bulan, hari). Penataan ulang yang sederhana ini memastikan bahwa nilai UUID v6 dapat diurutkan secara leksikografis berdasarkan waktu. Jika Anda membuat UUID v6 hari ini dan satu lagi besok, UUID besok akan diurutkan setelah hari ini, sangat cocok dengan ekspektasi B-tree basis data. Ini menghilangkan fragmentasi indeks yang terkait dengan v4 dan ketidakmungkinan pengurutan v1.
UUID versi 7 membawa optimasi ini lebih jauh dan mewakili standar emas modern untuk kunci utama basis data. Alih-alih mengandalkan zaman Gregorian lama yang digunakan oleh v1 dan v6, UUID v7 menggunakan stempel waktu Epoch Unix standar (milidetik sejak 1 Jan 1970 UTC). Stempel waktu ini menempati 48 bit pertama dari pengidentifikasi. Bit sisanya diisi dengan data acak yang kuat secara kriptografis. Pendekatan hibrida ini memberikan yang terbaik dari kedua dunia: pengurutan sekuensial yang kuat yang diperlukan untuk penyisipan basis data berkinerja tinggi, dikombinasikan dengan keamanan dan privasi generasi data acak. Dengan menggunakan generator UUID dalam browser kami yang 100% gratis dan privat, Anda dapat langsung membuat pengidentifikasi modern ini tanpa mempertaruhkan data Anda karena tanpa unggahan server.