支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

F.47. uuid-ossp — UUID 產生器 #

uuid-ossp 模組提供使用數種標準演算法來產生通用唯一識別碼 (UUID) 的函數。還有一些函數可以產生某些特殊的 UUID 常數。只有在核心 PostgreSQL 中可用的功能無法滿足特殊需求時,才需要此模組。請參閱第 9.14 節,瞭解產生 UUID 的內建方式。

此模組被視為「信任的」,也就是說,具有目前資料庫的 CREATE 權限的非超級使用者可以安裝它。

F.47.1. 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 產生的函數

函數

描述

uuid_generate_v1 () → uuid

產生版本 1 UUID。這涉及到電腦的 MAC 位址和時間戳記。請注意,這種 UUID 會揭露建立識別碼的電腦的身分及其建立的時間,這可能會使其不適合某些安全敏感的應用程式。

uuid_generate_v1mc () → uuid

產生版本 1 UUID,但使用隨機多播 MAC 位址,而不是電腦的真實 MAC 位址。

uuid_generate_v3 ( namespace uuid, name text ) → uuid

使用指定的輸入名稱,在給定的命名空間中產生版本 3 UUID。命名空間應該是 表 F.34 中顯示的 uuid_ns_*() 函數產生的特殊常數之一。(理論上它可以是任何 UUID。)名稱是所選命名空間中的識別碼。

例如

SELECT uuid_generate_v3(uuid_ns_url(), 'https://postgresql.dev.org.tw');

名稱參數將進行 MD5 雜湊處理,因此無法從產生的 UUID 中推導出明文。使用此方法產生 UUID 沒有隨機或環境相依的元素,因此是可重現的。

uuid_generate_v4 () → uuid

產生版本 4 UUID,它完全由隨機數字衍生而來。

uuid_generate_v5 ( namespace uuid, name text ) → uuid

產生版本 5 UUID,它的工作方式與版本 3 UUID 類似,只是 SHA-1 用作雜湊方法。版本 5 應優先於版本 3,因為 SHA-1 被認為比 MD5 更安全。


表 F.34. 傳回 UUID 常數的函數

函數

描述

uuid_nil () → uuid

傳回一個「nil」UUID 常數,它不會作為真實 UUID 出現。

uuid_ns_dns () → uuid

傳回一個指定 UUID 的 DNS 命名空間的常數。

uuid_ns_url () → uuid

傳回一個指定 UUID 的 URL 命名空間的常數。

uuid_ns_oid () → uuid

傳回一個指定 UUID 的 ISO 物件識別碼 (OID) 命名空間的常數。(這與 ASN.1 OID 相關,ASN.1 OID 與 PostgreSQL 中使用的 OID 無關。)

uuid_ns_x500 () → uuid

傳回一個指定 UUID 的 X.500 識別名稱 (DN) 命名空間的常數。


F.47.2. 建置 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 以使用 e2fsprogslibuuid,或 --with-uuid=ossp 以使用 OSSP UUID 函式庫。在特定機器上可能有多個這些函式庫可用,因此 configure 不會自動選擇一個。

F.47.3. 作者 #

Peter Eisentraut

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的地方,請使用此表單報告文件問題。