uuid-ossp
模組提供使用數種標準演算法來產生通用唯一識別碼 (UUID) 的函數。還有一些函數可以產生某些特殊的 UUID 常數。只有在核心 PostgreSQL 中可用的功能無法滿足特殊需求時,才需要此模組。請參閱第 9.14 節,瞭解產生 UUID 的內建方式。
此模組被視為「“信任的”」,也就是說,具有目前資料庫的 CREATE
權限的非超級使用者可以安裝它。
uuid-ossp
函數 #表 F.33 顯示可用於產生 UUID 的函數。相關標準 ITU-T Rec. X.667、ISO/IEC 9834-8:2005 和 RFC 4122 指定四種用於產生 UUID 的演算法,這些演算法由版本號碼 1、3、4 和 5 識別。(沒有版本 2 演算法。)這些演算法中的每一種都可能適用於不同的應用程式集。
表 F.33. UUID 產生的函數
函數 描述 |
---|
產生版本 1 UUID。這涉及到電腦的 MAC 位址和時間戳記。請注意,這種 UUID 會揭露建立識別碼的電腦的身分及其建立的時間,這可能會使其不適合某些安全敏感的應用程式。 |
產生版本 1 UUID,但使用隨機多播 MAC 位址,而不是電腦的真實 MAC 位址。 |
使用指定的輸入名稱,在給定的命名空間中產生版本 3 UUID。命名空間應該是 表 F.34 中顯示的 例如 SELECT uuid_generate_v3(uuid_ns_url(), 'https://postgresql.dev.org.tw'); 名稱參數將進行 MD5 雜湊處理,因此無法從產生的 UUID 中推導出明文。使用此方法產生 UUID 沒有隨機或環境相依的元素,因此是可重現的。 |
產生版本 4 UUID,它完全由隨機數字衍生而來。 |
產生版本 5 UUID,它的工作方式與版本 3 UUID 類似,只是 SHA-1 用作雜湊方法。版本 5 應優先於版本 3,因為 SHA-1 被認為比 MD5 更安全。 |
表 F.34. 傳回 UUID 常數的函數
函數 描述 |
---|
傳回一個「“nil”」UUID 常數,它不會作為真實 UUID 出現。 |
傳回一個指定 UUID 的 DNS 命名空間的常數。 |
傳回一個指定 UUID 的 URL 命名空間的常數。 |
傳回一個指定 UUID 的 ISO 物件識別碼 (OID) 命名空間的常數。(這與 ASN.1 OID 相關,ASN.1 OID 與 PostgreSQL 中使用的 OID 無關。) |
傳回一個指定 UUID 的 X.500 識別名稱 (DN) 命名空間的常數。 |
uuid-ossp
#從歷史上看,這個模組依賴於 OSSP UUID 函式庫,這也是這個模組名稱的由來。雖然 OSSP UUID 函式庫仍然可以在 http://www.ossp.org/pkg/lib/uuid/ 找到,但它維護不善,並且越來越難以移植到較新的平台上。uuid-ossp
現在可以在某些平台上不使用 OSSP 函式庫進行構建。在 FreeBSD 和一些其他基於 BSD 的平台上,核心 libc
函式庫中包含了合適的 UUID 建立函式。在 Linux、macOS 和一些其他平台上,libuuid
函式庫中提供了合適的函式,該函式庫最初來自 e2fsprogs
專案(雖然在現代 Linux 上它被認為是 util-linux-ng
的一部分)。在調用 configure
時,指定 --with-uuid=bsd
以使用 BSD 函式,或 --with-uuid=e2fs
以使用 e2fsprogs
的 libuuid
,或 --with-uuid=ossp
以使用 OSSP UUID 函式庫。在特定機器上可能有多個這些函式庫可用,因此 configure
不會自動選擇一個。
Peter Eisentraut <peter_e@gmx.net>
如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的地方,請使用此表單報告文件問題。