全部产品
Search
文档中心

云原生数据仓库AnalyticDB:UUID-OSSP

更新时间:May 17, 2024

本文介绍如何使用UUID-OSSP。

UUID-OSSP简介

UUID数据类型用于储存全局唯一标识符UUID。对分布式系统来说,UUID比序列更能保证唯一性。

UUID由32个16进制数字组成,标准格式为一组8位字符+一组4位字符+一组4位字符+一组4位字符+12组字符,每组字符由连字符连接,示例如下:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

UUID还支持以大写字母、花括号包围标准格式、省略部分或所有连字符、在任意一组四位数字之后加一个连字符的方式输入,例如:

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
说明

当前版本不支持UUID类型字段作为分布键。

关于如何编译UUID-OSSP的描述,请参见编译UUID-OSSP

安装UUID-OSSP

使用UUID-OSSP之前,您需要在云原生数据仓库 AnalyticDB PostgreSQL 版实例插件管理中安装UUID-OSSP插件。具体操作,请参见安装、升级与卸载插件

插件函数说明

  • UUID生成函数

    函数

    描述

    uuid_generate_v1()

    此函数会生成v1版本的UUID。算法使用了计算机的MAC地址和时间戳。

    说明

    该UUID会泄露计算机标识和生成时间,不适合对安全性要求较高的应用。

    uuid_generate_v1mc()

    此函数会生成一个v1版本的UUID。和uuid_generate_v1()的区别在于uuid_generate_v1mc()使用的是一个随机多播MAC地址,uuid_generate_v1()使用的是计算机的真实的MAC地址。

    uuid_generate_v3(namespace uuid, name text)

    此函数会生成一个v3版本的UUID。这个函数会使用指定输入名称name在指定的命名空间namespace中生成。

    • 指定的命名空间是调用下表中的函数uuid_ns_*()返回的常量。

    • 参数name是一个指定命名空间namespace中的标识符。

    例如:

    SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');

    name会使用MD5算法进行哈希,从产生的UUID中不能反向获得明文。利用这个方法生成的UUID不需要随机算法且不依赖任何运行相关的环境因素,生成过程是可重复的。

    uuid_generate_v4()

    此函数会生成一个v4版本的UUID。算法完全依靠随机数。

    uuid_generate_v5(namespace uuid, name text)

    此函数会生成一个v5版本的UUID。工作过程类似于v3版本的 UUID,但是v5版本使用的是SHA-1的哈希算法,因为SHA-1算法被认为比MD5算法更安全,所以应该尽量使用v5版本而不是v3版本。

  • 返回UUID常量的函数

    函数

    描述

    uuid_nil()

    代表nil的UUID常量,此处不应该看作一个真正的UUID。

    uuid_ns_dns()

    代表DNS命令空间的UUID常量。

    uuid_ns_url()

    代表URL命名空间的UUID常量。

    uuid_ns_oid()

    代表ISO对象标识符(OID)命名空间的UUID常量。

    说明

    此处OID是ASN.1的OID,和PostgreSQL用的OID没有关系。

    uuid_ns_x500()

    代表X.500识别名字(DN)命名空间的UUID常量。

示例

  • 生成一个V1版本的UUID。

    SELECT uuid_generate_v1();

    返回信息如下:

               uuid_generate_v1
    --------------------------------------
     c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
    (1 row)
  • 生成一个V3版本的UUID。

    SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');

    返回信息如下:

               uuid_generate_v3
    --------------------------------------
     a0473a67-27a1-3c05-a2d1-5c134639347f
    (1 row)
  • 生成一个V4版本的UUID。

    SELECT uuid_generate_v4();

    返回信息如下:

               uuid_generate_v4
    --------------------------------------
     d7a8d47e-58e3-4bd9-9340-8553ac03d144
    (1 row)
  • 生成一个V5版本的UUID

    SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');

    返回信息如下:

               uuid_generate_v5
    --------------------------------------
     a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
    (1 row)

参考文档