alltools.one
Development
2025-07-03
7 min
alltools.one Team
UUIDIdentifierDatabaseAPIDevelopment

Panduan UUID: Versi, Format, dan Praktik Terbaik

UUID (Universally Unique Identifier) adalah pengidentifikasi 128-bit yang dirancang untuk unik di seluruh ruang dan waktu tanpa otoritas pusat. UUID merupakan pilihan standar untuk sistem terdistribusi di mana pembuatan ID secara independen — tanpa koordinasi — sangat penting.

Format UUID

UUID adalah angka 128-bit yang ditampilkan sebagai 32 digit heksadesimal dalam lima kelompok yang dipisahkan oleh tanda hubung:

550e8400-e29b-41d4-a716-446655440000
^^^^^^^^ ^^^^ ^^^^ ^^^^ ^^^^^^^^^^^^
time-low  mid  hi   clk   node
               +ver  +var
  • Total: 128 bit (16 byte)
  • Panjang string: 36 karakter (32 hex + 4 tanda hubung)
  • Versi: Dikodekan pada karakter ke-13 (nibble "hi")
  • Varian: Dikodekan pada karakter ke-17

Buat UUID secara instan dengan Generator UUID kami.

Versi UUID

UUID v1: Berbasis Waktu

Dihasilkan dari timestamp saat ini dan alamat MAC mesin.

// Structure: timestamp (60 bits) + clock sequence (14 bits) + node (48 bits)
6ba7b810-9dad-11d1-80b4-00c04fd430c8

Kelebihan: Dapat diurutkan secara alami berdasarkan waktu pembuatan, keunikan dijamin per mesin. Kekurangan: Mengekspos alamat MAC (masalah privasi), dapat mengungkapkan waktu pembuatan. Gunakan ketika: Anda memerlukan pengurutan waktu dan berada di lingkungan yang terkontrol.

UUID v4: Acak

Dihasilkan dari angka acak yang aman secara kriptografi. Ini adalah versi yang paling banyak digunakan.

// 122 random bits (6 bits reserved for version and variant)
f47ac10b-58cc-4372-a567-0e02b2c3d479

Kelebihan: Sederhana, tidak ada kebocoran informasi, tidak perlu koordinasi. Kekurangan: Tidak dapat diurutkan, performa indeks basis data sedikit lebih buruk dibandingkan ID sekuensial. Gunakan ketika: Keperluan umum — ini adalah pilihan default untuk sebagian besar aplikasi.

UUID v7: Acak Berurutan Waktu (Standar Baru)

Versi terbaru (RFC 9562, 2024), menggabungkan timestamp Unix dengan data acak.

// Structure: timestamp (48 bits) + random (74 bits)
018e7b50-4a00-7000-8000-000000000001

Kelebihan: Diurutkan secara alami berdasarkan waktu, performa indeks basis data yang sangat baik, tidak ada kebocoran informasi di luar presisi milidetik. Kekurangan: Lebih baru, beberapa pustaka mungkin belum mendukungnya. Gunakan ketika: Anda memerlukan ID unik yang diurutkan secara kronologis — ideal untuk primary key basis data.

Versi Lainnya

  • UUID v3: Hash MD5 dari namespace dan nama. Deterministik.
  • UUID v5: Hash SHA-1 dari namespace dan nama. Deterministik dan lebih direkomendasikan daripada v3.
  • UUID v6: v1 yang diurutkan ulang untuk kemampuan pengurutan yang lebih baik. Digantikan oleh v7.
  • Nil UUID: Semua nol (00000000-0000-0000-0000-000000000000). Digunakan sebagai nilai sentinel.

Probabilitas Tabrakan

Seberapa besar kemungkinan dua UUID (v4) yang dihasilkan secara acak bertabrakan? Dengan 122 bit acak:

  • Setelah menghasilkan 1 miliar UUID: probabilitas ≈ 1 dari 10^18
  • Untuk memiliki peluang tabrakan 50%: Anda memerlukan sekitar 2,7 × 10^18 UUID
  • Pada 1 miliar UUID per detik: akan memakan waktu sekitar 86 tahun

Untuk semua keperluan praktis, tabrakan UUID v4 tidak akan terjadi. Anda jauh lebih mungkin mengalami kegagalan perangkat keras.

UUID vs Format ID Lainnya

FormatPanjangDapat DiurutkanUnikAman untuk URL
UUID v436 karakterTidakYaYa
UUID v736 karakterYaYaYa
ULID26 karakterYaYaYa
nanoid21 karakterTidakKemungkinanYa
Auto-incrementBervariasiYaPer-tabelYa
Snowflake ID18-19 karakterYaPer-sistemYa

ULID (Universally Unique Lexicographically Sortable Identifier)

ULID adalah alternatif yang ringkas: timestamp 48-bit + acak 80-bit, dikodekan sebagai 26 karakter Crockford Base32. Mereka diurutkan secara leksikografis berdasarkan waktu pembuatan.

Kapan Menggunakan ID Auto-Increment

ID sekuensial lebih sederhana dan lebih efisien untuk aplikasi basis data tunggal. Gunakan UUID ketika Anda memerlukan:

  • ID yang dihasilkan oleh beberapa sistem secara independen
  • ID yang tidak mengungkapkan urutan penyisipan kepada pengguna eksternal
  • ID yang ramah penggabungan untuk basis data terdistribusi

Pertimbangan Performa Basis Data

UUID acak (v4) menyebabkan fragmentasi indeks B-tree karena penyisipan terjadi di posisi acak. Ini dapat menurunkan performa penulisan 2-5x dibandingkan ID sekuensial pada tabel besar.

Solusi:

  1. Gunakan UUID v7: UUID berurutan waktu menyisipkan secara sekuensial, menyamai performa auto-increment
  2. Simpan sebagai binary: Gunakan BINARY(16) alih-alih CHAR(36) untuk menghemat 55% penyimpanan
  3. Gunakan ULID: Dapat diurutkan dan lebih ringkas dari UUID
-- PostgreSQL: native UUID type (16 bytes, efficient)
CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL
);

-- MySQL: store as BINARY(16) for performance
CREATE TABLE users (
  id BINARY(16) PRIMARY KEY,
  name VARCHAR(255) NOT NULL
);

Membuat UUID

Command Line

# macOS/Linux
uuidgen

# Python one-liner
python3 -c "import uuid; print(uuid.uuid4())"

JavaScript

// Built-in (Node.js 19+, modern browsers)
crypto.randomUUID();

// For UUID v7 (using uuid package)
import { v7 } from 'uuid';
const id = v7();

Python

import uuid
uuid.uuid4()  # Random
uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')  # Name-based

Untuk pembuatan cepat tanpa kode, Generator UUID kami membuat UUID v4 secara instan di browser Anda.

FAQ

Haruskah saya menggunakan UUID atau integer auto-increment untuk primary key basis data saya?

Untuk aplikasi basis data tunggal, integer auto-increment lebih sederhana dan lebih cepat. Untuk sistem terdistribusi, layanan mikro, atau ketika Anda perlu membuat ID di sisi klien sebelum penyisipan ke basis data, UUID (sebaiknya v7) adalah pilihan yang lebih baik. Jika Anda menggunakan PostgreSQL, dukungan UUID bawaan membuat perbedaan performa dapat diabaikan.

Dapatkah UUID digunakan sebagai token keamanan?

UUID v4 menggunakan 122 bit keacakan dari sumber kriptografi, yang memberikan entropi yang baik. Namun, untuk token keamanan (API key, session ID), lebih baik menggunakan format token yang dirancang khusus dengan properti tambahan seperti checksum, pengkodean kedaluwarsa, atau identifikasi prefiks. UUID untuk identitas, bukan autentikasi.

Sumber Terkait

Published on 2025-07-03
UUID Guide: Versions, Formats, and Best Practices | alltools.one