該 uuid-ossp
模組提供了一些函式,用於通過幾種標準演算法生成通用唯一識別符號(UUID)。它還提供了一些函式來生成特定的特殊 UUID 常量。對於核心 PostgreSQL 中未提供的特殊需求,才需要此模組。請參閱 第 9.14 節 瞭解內建的 UUID 生成方法。
此模組被認為是“受信任的”,這意味著非超級使用者也可以在其擁有的資料庫上安裝它,前提是他們具有 CREATE
許可權。
uuid-ossp
函式 #表 F.35 顯示了可用於生成 UUID 的函式。相關的標準 ITU-T Rec. X.667、ISO/IEC 9834-8:2005 和 RFC 4122 指定了四種生成 UUID 的演算法,由版本號 1、3、4 和 5 標識。(沒有版本 2 演算法。)這些演算法中的每一種都可能適用於不同的應用場景。
表 F.35. 用於 UUID 生成的函式
函式 描述 |
---|
生成一個版本 1 的 UUID。這涉及到計算機的 MAC 地址和時間戳。請注意,此類 UUID 會暴露建立識別符號的計算機的身份以及建立時間,這可能不適用於某些安全敏感的應用。 |
生成一個版本 1 的 UUID,但使用一個隨機的組播 MAC 地址而不是計算機的真實 MAC 地址。 |
使用指定的輸入名稱在給定的名稱空間中生成一個版本 3 的 UUID。名稱空間應為表 F.36 中顯示的 例如 SELECT uuid_generate_v3(uuid_ns_url(), 'https://postgres.tw'); 名稱引數將進行 MD5 雜湊處理,因此無法從生成的 UUID 中推匯出明文。此方法生成 UUID 沒有隨機或依賴於環境的因素,因此是可重現的。 |
生成一個版本 4 的 UUID,它完全由隨機數派生。 |
生成一個版本 5 的 UUID,其工作方式類似於版本 3 的 UUID,但使用了 SHA-1 作為雜湊方法。由於 SHA-1 被認為比 MD5 更安全,因此應優先選擇版本 5 而非版本 3。 |
表 F.36. 返回 UUID 常量的函式
函式 描述 |
---|
返回一個“nil”UUID 常量,它不會作為真實 UUID 出現。 |
返回一個表示 UUID 的 DNS 名稱空間的常量。 |
返回一個表示 UUID 的 URL 名稱空間的常量。 |
返回一個表示 UUID 的 ISO 物件識別符號(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>
如果您在文件中發現任何不正確、與您在使用特定功能時的經驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。