Skip to main content

5.8. UUID Version 8 (UUID 版本 8)

5.8. UUID Version 8 (UUID 版本 8)

UUIDv8 为实验或供应商特定的用例提供了 RFC 兼容的格式。唯一的要求是必须按照第 4.1 节和第 4.2 节的定义设置变体和版本位。UUIDv8 的唯一性将取决于具体实现, 不得假设。

唯一明确定义的位是版本和变体字段的位, 为实现特定的 UUID 留下 122 位。需要明确的是, UUIDv8 不是 UUIDv4 (第 5.4 节) 的替代品, 其中所有 122 个额外位都用随机数据填充。

可能使用 UUIDv8 的一些示例情况:

  • 实现希望在 UUID 中嵌入本文档中定义的内容之外的额外信息。

  • 实现具有其他应用程序和/或语言限制, 阻碍使用当前 UUID 之一。

附录 B 提供了两个自定义 UUIDv8 算法的说明性示例, 以解决两个示例场景。

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_a |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_a | ver | custom_b |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var| custom_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| custom_c |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

图 12: UUIDv8 字段和位布局

字段定义:

custom_a: 布局的前 48 位, 可以根据实现的需要填充。占用位 0 到 47 (八位组 0-5)。

ver: 由第 4.2 节定义的 4 位版本字段, 设置为 0b1000 (8)。占用八位组 6 的位 48 到 51。

custom_b: 布局的另外 12 位, 可以根据实现的需要填充。占用位 52 到 63 (八位组 6-7)。

var: 由第 4.1 节定义的 2 位变体字段, 设置为 0b10。占用八位组 8 的位 64 和 65。

custom_c: 紧跟 var 字段之后的布局的最后 62 位, 可以根据实现的需要填充。占用位 66 到 127 (八位组 8-15)。