全部產品
Search
文件中心

AnalyticDB:UUID-OSSP

更新時間:Jun 14, 2024

本文介紹如何使用UUID-OSSP。

UUID-OSSP簡介

UUID資料類型用於儲存通用唯一識別碼UUID。對分布式系統來說,UUID比序列更能保證唯一性。

UUID由32個16進位數字組成,標準格式為一組8位字元+一組4位字元+一組4位字元+一組4位字元+12組字元,每組字元由連字號串連,樣本如下:

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

UUID還支援以大寫字母、花括弧包圍標準格式、省略部分或所有連字號、在任意一組四位元字之後加一個連字號的方式輸入,例如:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
說明

目前的版本不支援UUID類型欄位作為分布鍵。

關於如何編譯UUID-OSSP的描述,請參見編譯UUID-OSSP

安裝UUID-OSSP

使用UUID-OSSP之前,您需要在AnalyticDB for PostgreSQL執行個體外掛程式管理中安裝UUID-OSSP外掛程式。具體操作,請參見安裝、升級與卸載外掛程式

外掛程式函數說明

  • UUID產生函數

    函數

    描述

    uuid_generate_v1()

    此函數會產生v1版本的UUID。演算法使用了電腦的MAC地址和時間戳記。

    說明

    該UUID會泄露電腦標識和產生時間,不適合對安全性要求較高的應用。

    uuid_generate_v1mc()

    此函數會產生一個v1版本的UUID。和uuid_generate_v1()的區別在於uuid_generate_v1mc()使用的是一個隨機多播MAC地址,uuid_generate_v1()使用的是電腦的真實的MAC地址。

    uuid_generate_v3(namespace uuid, name text)

    此函數會產生一個v3版本的UUID。這個函數會使用指定輸入名稱name在指定的命名空間namespace中產生。

    • 指定的命名空間是調用下表中的函數uuid_ns_*()返回的常量。

    • 參數name是一個指定命名空間namespace中的標識符。

    例如:

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

    name會使用MD5演算法進行雜湊,從產生的UUID中不能反向獲得明文。利用這個方法產生的UUID不需要隨機演算法且不依賴任何運行相關的環境因素,產生過程是可重複的。

    uuid_generate_v4()

    此函數會產生一個v4版本的UUID。演算法完全依靠隨機數。

    uuid_generate_v5(namespace uuid, name text)

    此函數會產生一個v5版本的UUID。工作過程類似於v3版本的 UUID,但是v5版本使用的是SHA-1的雜湊演算法,因為SHA-1演算法被認為比MD5演算法更安全,所以應該盡量使用v5版本而不是v3版本。

  • 返回UUID常量的函數

    函數

    描述

    uuid_nil()

    代表nil的UUID常量,此處不應該看作一個真正的UUID。

    uuid_ns_dns()

    代表DNS命令空間的UUID常量。

    uuid_ns_url()

    代表URL命名空間的UUID常量。

    uuid_ns_oid()

    代表ISO物件識別碼(OID)命名空間的UUID常量。

    說明

    此處OID是ASN.1的OID,和PostgreSQL用的OID沒有關係。

    uuid_ns_x500()

    代表X.500識別名字(DN)命名空間的UUID常量。

樣本

  • 產生一個V1版本的UUID。

    SELECT uuid_generate_v1();

    返回資訊如下:

               uuid_generate_v1
    --------------------------------------
     c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
    (1 row)
  • 產生一個V3版本的UUID。

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

    返回資訊如下:

               uuid_generate_v3
    --------------------------------------
     a0473a67-27a1-3c05-a2d1-5c134639347f
    (1 row)
  • 產生一個V4版本的UUID。

    SELECT uuid_generate_v4();

    返回資訊如下:

               uuid_generate_v4
    --------------------------------------
     d7a8d47e-58e3-4bd9-9340-8553ac03d144
    (1 row)
  • 產生一個V5版本的UUID

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

    返回資訊如下:

               uuid_generate_v5
    --------------------------------------
     a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
    (1 row)

參考文檔