uuid-ossp eklentisi, evrensel benzersiz tanımlayıcılar (UUID) oluşturmak için işlevler sağlar. Dağıtık sistemlerde UUID'ler, dizilere kıyasla daha güçlü benzersizlik garantileri sunar; bu nedenle düğümler arasında birincil anahtarlar ve kayıt tanımlayıcıları için güvenilir bir seçimdir.
UUID biçimi
Bir UUID, tirelerle ayrılmış beş grupta düzenlenmiş 32 onaltılık basamaktan oluşur: 8-4-4-4-12. Örneğin:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
PostgreSQL, UUID'leri birkaç eşdeğer biçimde kabul eder:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UUID alanları, AnalyticDB for PostgreSQL'de dağıtım anahtarı olarak kullanılamaz.
Eklentiyi yükleme
UUID oluşturmadan önce, örneğinizin Extensions sayfasından uuid-ossp eklentisini yükleyin. Ayrıntılar için bkz. Eklentileri yükleme, güncelleme ve kaldırma.
UUID oluşturma işlevleri
Sürüm 1: zamana dayalı
uuid_generate_v1() işlevi, geçerli zaman damgasından ve ana bilgisayarın MAC adresinden bir UUID oluşturur.
uuid_generate_v1mc() işlevi uuid_generate_v1() gibi çalışır ancak gerçek MAC adresi yerine rastgele bir çoklu yayın MAC adresi kullanır; bu sayede makinenin donanım tanımlayıcısının doğrudan ifşa edilmesi önlenir.
Sürüm 1 UUID'ler, oluşturan makinenin MAC adresini gömer ve bir zaman bileşeni içerir; bu da onların bir dereceye kadar tahmin edilebilir olmasına neden olur. Güvenlikle ilgili hassas uygulamalarda sürüm 1 UUID'lerden kaçının.
Sürüm 3: ada dayalı (MD5)
uuid_generate_v3(namespace uuid, name text) işlevi, MD5 kullanarak namespace içindeki name değerinin karma değerini alarak belirleyici bir UUID oluşturur.
namespace:uuid_ns_*()işlevlerinden biri tarafından döndürülen bir sabit (bkz. Ad alanı sabitleri).name: Ad alanı içindeki bir tanımlayıcı.
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
Aynı girdiler her zaman aynı UUID'yi üretir. Rastgele bir algoritma veya sistem ortamı söz konusu olmadığından sonuç tamamen tekrarlanabilirdir.
Sürüm 4: rastgele
uuid_generate_v4() işlevi, rastgele sayılara dayalı bir UUID oluşturur.
Sürüm 5: ada dayalı (SHA-1)
uuid_generate_v5(namespace uuid, name text) işlevi uuid_generate_v3() gibi çalışır ancak MD5 yerine SHA-1 kullanır. SHA-1, MD5'ten daha güvenlidir; bu nedenle ada dayalı UUID'lere ihtiyacınız olduğunda sürüm 3 yerine sürüm 5'i tercih edin.
Ad alanı sabitleri
Bu sabitleri uuid_generate_v3() ve uuid_generate_v5() işlevlerinde namespace bağımsız değişkeni olarak kullanın.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uuid_nil() işlevi, gerçek bir UUID olmayan nil UUID sabitini döndürür.
Örnekler
-- Version 1 (time-based)
SELECT uuid_generate_v1();
uuid_generate_v1
--------------------------------------
c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
(1 row)
-- Version 3 (name-based, MD5)
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
uuid_generate_v3
--------------------------------------
a0473a67-27a1-3c05-a2d1-5c134639347f
(1 row)
-- Version 4 (random)
SELECT uuid_generate_v4();
uuid_generate_v4
--------------------------------------
d7a8d47e-58e3-4bd9-9340-8553ac03d144
(1 row)
-- Version 5 (name-based, SHA-1)
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');
uuid_generate_v5
--------------------------------------
a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
(1 row)