Oracle详解 GUID and UUID唯一标识符(oracleguid)

GUID 与 UUID 是少数几个能够全球唯一标识符的技术之一。这种技术可以被认为是一个全局唯一标识符(GUID)或通用唯一标识符 (UUID)。Oracle 中有两个不同的类型来存储这种标识,分别是 RAW (RAW 和 RAWTOHEX)和 VARCHAR2(HEX)类型。

RAW 和 RAWTOHEX,它们都是用于存储任意长度的字符串,这一点是它们的共同点,RAW 字段可以和 VARCHAR2 类型字段相比较,它们具有更灵活的长度。精确的说,它们的长度可以任意的,任何长度的字符都可以适应它们。

RAW 类型的字段可能性很大,而 VARCHAR2 类型字段可用于存储 HEX 二进制值并可以存储 GUID/UUID 字符串。这是因为它们可以存储多达 32 个字符,足够用来表示 UUID 标识符。

在 Oracle 中,也可以使用 SYS_GUID 功能在一行 SQL 语句中随机生成 GUID/UUID 标识。该函数返回一个 RAW 型的以字符串形式的十六进制格式,它利用 Oracle 轻松为表格生成标识,而不需要遍历表格或编写任何代码来确保唯一性。

另一个派生自 Facebook 的 UUID 研究项目基于 Oracle 平台,比如 UUID_12是16进制字符,字符串格式可以包括大写和小写字母,以及在中间和末尾添加破折号(-)来格式化字符串。此外,该函数还支持 Base64 和 Base58 格式。

大多数情况下,所有未经调整的 UUID 格式都可以转换为 VARCHAR2 格式,只需要使用 Oracle 内置的函数,如以下代码所示:

SELECT HEXTORAW(SYS_GUID()) AS GUID;

使用该函数,可以将给定的十六进制字符串转换为 RAW 类型,从而实现 UUID 和 GUID 的强类型转换,而不会出错。

因此,为实现全局唯一的标识,Oracle 具有两种可选的类型,以及一个内置的函数去实现这种情况,可以让用户很容易地将 UUID/GUID 转换为指定格式并存储到 Oracle 数据库中。


数据运维技术 » Oracle详解 GUID and UUID唯一标识符(oracleguid)