8.12. UUID 类型

uuid数据类型用来存储RFC 4122,ISO/IEF 9834-8:2005以及相关标准定义的通用唯一标识符(UUID)。 (一些系统认为这个数据类型为全球唯一标识符,或GUID。) 这个标识符是一个由算法产生的128位标识符,使它不可能在已知使用相同算法的模块中和其他方式产生的标识符相同。 因此,对分布式系统而言,这种标识符比序列能更好的提供唯一性保证,因为序列只能在单一数据库中保证唯一。

UUID被写成一个小写十六进制数字的序列,由分字符分成几组, 特别是一组8位数字+3组4位数字+一组12位数字,总共32个数字代表128位, 一个这种标准的UUID例子如下:

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

PostgreSQL同样支持以其他方式输入:大写数字, 由花括号包围的标准格式,省略部分或所有连字符,在任意一组四位数字之后加一个连字符。如:

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

一般是以标准格式输出。

PostgreSQL为UUID提供了存储和比较函数, 但核心数据库不包括能生成UUID的函数,因为没有单一的算法非常适合于每一个应用程序。 uuid-ossp模块提供了实施几个标准算法的函数。另外, UUID可以由客户端应用或通过服务器端函数库调用而生成。