All Products
Search
Document Center

AnalyticDB:UUID\-OSSP

Last Updated:Mar 28, 2026

Ekstensi uuid-ossp menyediakan fungsi untuk menghasilkan universally unique identifiers (UUID). Di sistem terdistribusi, UUID memberikan jaminan keunikan yang lebih kuat dibandingkan sequence, sehingga menjadi pilihan andal sebagai primary key dan identifier record di berbagai node.

Format UUID

UUID terdiri dari 32 digit heksadesimal yang disusun dalam lima kelompok yang dipisahkan tanda hubung dengan pola 8-4-4-4-12. Contohnya:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

PostgreSQL menerima UUID dalam beberapa format ekuivalen berikut:

FormatContoh
Standard (huruf kecil)a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
Huruf besarA0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
Kurung kurawal{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
Tanpa tanda hubunga0eebc999c0b4ef8bb6d6bb9bd380a11
Tanda hubung setiap 4 digita0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
Campuran{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
Bidang UUID tidak dapat digunakan sebagai kunci distribusi di AnalyticDB for PostgreSQL.

Instal ekstensi

Sebelum menghasilkan UUID, instal ekstensi uuid-ossp dari halaman Extensions instans Anda. Untuk detailnya, lihat Instal, perbarui, dan uninstal ekstensi.

Fungsi pembuatan UUID

Versi 1: berbasis waktu

uuid_generate_v1() menghasilkan UUID berdasarkan timestamp saat ini dan alamat MAC mesin host.

uuid_generate_v1mc() bekerja seperti uuid_generate_v1(), tetapi menggunakan alamat MAC multicast acak alih-alih alamat MAC asli, sehingga menghindari eksposur langsung identifier perangkat keras mesin.

Peringatan

UUID versi 1 menyematkan alamat MAC mesin pembuat dan mencakup komponen waktu, sehingga agak dapat diprediksi. Hindari penggunaan UUID versi 1 pada aplikasi yang sensitif terhadap keamanan.

Versi 3: berbasis nama (MD5)

uuid_generate_v3(namespace uuid, name text) menghasilkan UUID deterministik dengan melakukan hashing name dalam namespace menggunakan MD5.

  • namespace: konstanta yang dikembalikan oleh salah satu fungsi uuid_ns_*() (lihat Konstanta namespace).

  • name: identifier dalam namespace tersebut.

SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');

Input yang sama selalu menghasilkan UUID yang sama. Tidak ada algoritma acak atau lingkungan sistem yang terlibat, sehingga hasilnya sepenuhnya dapat direproduksi.

Versi 4: acak

uuid_generate_v4() menghasilkan UUID berdasarkan bilangan acak.

Versi 5: berbasis nama (SHA-1)

uuid_generate_v5(namespace uuid, name text) bekerja seperti uuid_generate_v3(), tetapi menggunakan SHA-1 alih-alih MD5. SHA-1 lebih aman daripada MD5, sehingga versi 5 lebih disarankan dibandingkan versi 3 bila Anda memerlukan UUID berbasis nama.

Konstanta namespace

Gunakan konstanta berikut sebagai argumen namespace dalam uuid_generate_v3() dan uuid_generate_v5().

FungsiNamespace
uuid_ns_dns()Domain Name System (DNS)
uuid_ns_url()URL
uuid_ns_oid()ISO object identifier (OID) — didefinisikan oleh standar Abstract Syntax Notation One (ASN.1); berbeda dari OID PostgreSQL
uuid_ns_x500()X.500 distinguished name (DN)

uuid_nil() mengembalikan konstanta nil UUID, yang bukan UUID sebenarnya.

Contoh

-- Versi 1 (berbasis waktu)
SELECT uuid_generate_v1();
 uuid_generate_v1
--------------------------------------
 c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
(1 row)
-- Versi 3 (berbasis nama, MD5)
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
 uuid_generate_v3
--------------------------------------
 a0473a67-27a1-3c05-a2d1-5c134639347f
(1 row)
-- Versi 4 (acak)
SELECT uuid_generate_v4();
 uuid_generate_v4
--------------------------------------
 d7a8d47e-58e3-4bd9-9340-8553ac03d144
(1 row)
-- Versi 5 (berbasis nama, SHA-1)
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');
 uuid_generate_v5
--------------------------------------
 a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
(1 row)

Referensi