zoukankan      html  css  js  c++  java
  • [GS]uuid-ossp

    uuid-ossp

    原贴地址:http://postgres.cn/docs/9.6/uuid-ossp.html

    关于 OSSP的含义

    uuid-ossp模块提供函数使用几种标准算法之一产生通用唯一标识符(UUID)。还提供产生某些特殊 UUID 常量的函数。

    F.45.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()

    这个函数产生一个版本 1 的 UUID。这涉及到计算机的 MAC 地址和一个时间戳。注意这种 UUID 会泄露产生该标识符的计算机标识以及产生的时间,因此它不适合某些对安全性很敏感的应用。

    uuid_generate_v1mc()

    这个函数产生一个版本 1 的 UUID,但是使用一个随机广播 MAC 地址而不是该计算机真实的 MAC 地址。

    uuid_generate_v3(namespace uuid, name text)

    这个函数使用指定的输入名称在给定的名字空间中产生一个版本 3 的 UUID。该名字空间应该是由uuid_ns_*()函数(如表 F-34所示)产生的特殊常量之一(理论上它可以是任意 UUID)。名称是选择的名字空间中的一个标识符。

    例如:

    SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');

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

    uuid_generate_v4()

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

    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.

    F.45.2. 编译uuid-ossp

    在历史上这个模块依赖于 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()函数。

    F.45.3. 作者

    Peter Eisentraut 

  • 相关阅读:
    【转载】 C#中使用Sum方法对List集合进行求和操作
    【转载】 C#中使用Count方法获取List集合中符合条件的个数
    【转载】C#使用FirstOrDefault方法快速查找List集合中符合条件的第一个实体
    【转载】Windows检测到IP地址冲突
    【转载】Asp.Net MVC网站提交富文本HTML标签内容抛出异常
    java笔试题(4)
    Android -- TouchEvent的分发和截获方式
    SQL优化
    Android -- 经验分享(二)
    设计模式(十二)外观模式(结构型)
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10514652.html
Copyright © 2011-2022 走看看