[GS]uuid-ossp

uuid-ossp

原貼地址:http://postgres.cn/docs/9.6/uuid-ossp.html

 

關於 OSSP的含義html

 

uuid-ossp模塊提供函數使用幾種標準算法之一產生通用惟一標識符(UUID)。還提供產生某些特殊 UUID 常量的函數。linux

F.45.1. uuid-ossp 函數

表 F-33展現了可用來產生 UUID 的函數。相關標準 ITU-T Rec. X.66七、ISO/IEC 9834-8:2005 以及 RFC 4122 指定了四種用於產生 UUID 的算法,分別用版本號 一、三、四、5 標識(沒有版本 2 的算法)。這些算法中的每個都適合於不一樣的應用集合。算法

表 F-33. 用於 UUID 產生的函數sql

函數 描述
uuid_generate_v1()

這個函數產生一個版本 1 的 UUID。這涉及到計算機的 MAC 地址和一個時間戳。注意這種 UUID 會泄露產生該標識符的計算機標識以及產生的時間,所以它不適合某些對安全性很敏感的應用。安全

uuid_generate_v1mc()

這個函數產生一個版本 1 的 UUID,可是使用一個隨機廣播 MAC 地址而不是該計算機真實的 MAC 地址。dom

uuid_generate_v3(namespace uuid, name text)

這個函數使用指定的輸入名稱在給定的名字空間中產生一個版本 3 的 UUID。該名字空間應該是由uuid_ns_*()函數(如表 F-34所示)產生的特殊常量之一(理論上它能夠是任意 UUID)。名稱是選擇的名字空間中的一個標識符。函數

例如:post

SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');

名稱參數將使用 MD5 進行哈希,所以從產生的 UUID 中得不到明文。採用這種方法的 UUID 生成沒有隨機性而且不涉及依賴於環境的元素,所以是能夠重現的。ui

uuid_generate_v4()

這個函數產生一個版本 4 的 UUID,它徹底從隨機數產生。url

uuid_generate_v5(namespace uuid, name text)

這個函數產生一個版本 5 的 UUID,它和版本 3 的 UUID 類似,可是採用的是 SHA-1 做爲哈希方法。版本 5 比版本 3 更好,由於 SHA-1 被認爲比 MD5 更安全。

表 F-34. 返回 UUID 常量的函數

uuid_nil()

一個"nil" UUID 常量,它不做爲一個真正的 UUID 發生。

uuid_ns_dns()

爲 UUID 指定 DNS 名字空間的常量。

uuid_ns_url()

爲 UUID 指定 URL 名字空間的常量。

uuid_ns_oid()

爲 UUID 指定 ISO 對象標識符(OID) 名字空間的常量(這屬於 ASN.1 OID,它與PostgreSQL使用的 OID 無關)。

uuid_ns_x500()

爲 UUID 指定 X.500 可識別名(DN)名字空間的常量。Constant designating the X.500 distinguished name (DN) namespace for UUIDs.

F.45.2. 編譯uuid-ossp

在歷史上這個模塊依賴於 OSSP UUID 庫,這也是這個模塊名稱的由來。雖然 如今還能在http://www.ossp.org/pkg/lib/uuid/上 找到 OSSP UUID 庫,可是它已經再也不被維護而且愈來愈難以被一直到新的平臺。 uuid-ossp如今在一些平臺上能夠脫離 OSSP 庫被編譯。在 FreeBSD、NetBSD 和一些其餘源自 BSD 的平臺上,在覈心的libc 庫中已經包括了合適的 UUID 建立函數。在 Linux、OS X和一些其餘平臺上, libuuid庫中提供了合適的函數,它最初是來自於 e2fsprogs項目(不過在現代 Linux 上它被認爲是 util-linux-ng的一部分)。在調用configure時, 指定--with-uuid=bsd可以使用 BSD 的函數,指定 --with-uuid=e2fs會使用e2fsprogs的 libuuid,指定--with-uuid=ossp則會 使用 OSSP UUID 庫。在一臺特定的機器上可能會存在多種上述的庫,所以 configure不會自動選擇其中一個。

注意: 若是你只須要隨機生成(版本4)的 UUID,能夠考慮使用pgcrypto 模塊中的gen_random_uuid()函數。

F.45.3. 做者

Peter Eisentraut 

本站公眾號
   歡迎關注本站公眾號,獲取更多信息