原貼地址:http://postgres.cn/docs/9.6/uuid-ossp.html
關於 OSSP的含義html
uuid-ossp模塊提供函數使用幾種標準算法之一產生通用惟一標識符(UUID)。還提供產生某些特殊 UUID 常量的函數。linux
表 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。該名字空間應該是由 例如: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. |
在歷史上這個模塊依賴於 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()
函數。
Peter Eisentraut <peter_e@gmx.net>