Paket standar di ekosistem Node.js untuk menghasilkan Universal Unique Identifier versi 7 (UUID v7) adalah pustaka uuid versi 9.0.0 ke atas. Berbeda dengan UUID v4 yang murni acak, UUID v7 menggabungkan komponen waktu (timestamp) berbasis milidetik dengan bit acak, menghasilkan ID yang dapat diurutkan secara kronologis (sortable) dan sangat efisien untuk pengindeksan basis data.
Implementasi UUID v7 mengacu pada standar RFC 9562. Struktur bitnya dirancang agar nilai ID yang dihasilkan semakin besar seiring berjalannya waktu, mengatasi masalah performa b-tree indexing yang biasa terjadi pada UUID v4 acak.
Instalasi Paket UUID di Node.js
Untuk mulai menggunakan UUID v7 pada proyek Node.js Anda, instal pustaka resmi uuid melalui manajer paket npm:
npm install uuid
Pastikan versi yang terpasang di dalam berkas package.json Anda adalah versi 9.0.0 atau yang lebih baru, karena dukungan resmi untuk UUID v7 baru ditambahkan mulai versi tersebut.
Contoh Kode Implementasi UUID v7
Berikut adalah contoh kode penggunaan modul uuid untuk menghasilkan UUID v7 di dalam lingkungan Node.js menggunakan sintaks ES Module (ESM) maupun CommonJS.
// Menggunakan ES Module (ESM)
import { v7 as uuidv7 } from 'uuid';
// Menghasilkan string UUID v7
const myId = uuidv7();
console.log(myId);
// Contoh output: 018f9d3b-4170-7112-9832-73a45c21b9e8
// Menghasilkan UUID dalam bentuk byte array (Buffer)
const buf = uuidv7(null, Buffer.alloc(16));
console.log(buf);
Perbandingan UUID v4 vs UUID v7
Pemilihan versi UUID sangat memengaruhi performa sistem penyimpanan data, terutama pada operasi tulis (write) dan pengindeksan di basis data relasional maupun NoSQL.
| Parameter | UUID v4 | UUID v7 |
|---|---|---|
| Basis Pembuatan | Angka acak kriptografis (Cryptographically secure random) | Timestamp Unix milidetik + Angka acak |
| Keterurutan (Sortable) | Tidak (Random, menyebabkan fragmentasi index) | Ya (Urut berdasarkan waktu pembuatan) |
| Performa Database Index | Lambat pada skala besar (B-Tree page splits) | Cepat dan efisien (Append-friendly) |
| Standar RFC | RFC 4122 / RFC 9562 | RFC 9562 |
Tips Implementasi di Produksi
Saat menggunakan UUID v7 pada aplikasi skala besar, perhatikan beberapa hal teknis berikut:
- Clock Drift: Pastikan jam sistem (NTP) pada server sinkron untuk menghindari duplikasi atau ketidakurutan waktu yang ekstrem.
- Kompatibilitas Database: Simpan UUID v7 sebagai tipe data
UUIDasli (jika didukung PostgreSQL atau MySQL) atau sebagaiBINARY(16)untuk efisiensi penyimpanan ketimbang menyimpannya sebagaiVARCHAR(36). - Ketergantungan Modul: Hindari modul pihak ketiga yang tidak resmi demi keamanan dan kepatuhan terhadap spesifikasi bit RFC 9562.