E.46. uuid-ossp

E.46.1. uuid-ossp 函数

uuid-ossp模块提供函数使用几种标准算法之一产生通用唯一标识符(UUID)。还提供产生某些特殊 UUID 常量的函数。此模块仅适用于核心LightDB中提供的以外的特殊要求。有关生成UUID的内置方法,请参见Section 10.13

这个模块被认为是可信的,也就是说,它可以由对当前数据库具有CREATE权限的非超级用户安装。

E.46.1. uuid-ossp 函数

Table E.73展示了可用来产生 UUID 的函数。相关标准 ITU-T Rec. X.667、ISO/IEC 9834-8:2005 以及RFC 4122指定了四种用于产生 UUID 的算法,分别用版本号 1、3、4、5 标识(没有版本 2 的算法)。这些算法中的每一个都适合于不同的应用集合。

Table E.73. 用于 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。该名字空间应该是由uuid_ns_*()函数(如Table E.74所示)产生的特殊常量之一(理论上它可以是任意 UUID)。名称是选择的名字空间中的一个标识符。

例如:

SELECT uuid_generate_v3(uuid_ns_url(), 'www.light-pg.com');

名称参数将使用 MD5 进行哈希,因此从产生的 UUID 中得不到明文。采用这种方法的 UUID 生成没有随机性并且不涉及依赖于环境的元素,因此是可以重现的。

uuid_generate_v4 () → uuid

产生一个版本 4 的 UUID,它完全从随机数产生。

sys_guild () → uuid

产生一个版本 4 的 UUID,它完全从随机数产生。和 uuid_generate_v4 等价。

uuid_generate_v5 ( namespace uuid, name text ) → uuid

产生一个版本 5 的 UUID,它和版本 3 的 UUID 相似,但是采用的是 SHA-1 作为哈希方法。版本 5 比版本 3 更好,因为 SHA-1 被认为比 MD5 更安全。


Table E.74. 返回 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,它与LightDB使用的 OID 无关)。

uuid_ns_x500 () → uuid

返回为 UUID 指定 X.500 可识别名(DN)名字空间的常量。