跳到主要内容

5.8. UUID 版本 8

5.8. UUID 版本 8

UUIDv8 为实验性或供应商特定用例提供 RFC 兼容格式. 唯一要求是 variant 和 version bit MUST 按 Sections 4.1 和 4.2 的定义设置. UUIDv8 的唯一性取决于具体实现, MUST NOT 假定其具有唯一性.

唯一被显式定义的 bit 是 version 和 variant 字段的 bit, 这为实现特定 UUID 留下 122 bit. 为避免误解, UUIDv8 不是 UUIDv4 (Section 5.4) 的替代品; UUIDv4 会用随机数据填充全部 122 个额外 bit.

以下是可能使用 UUIDv8 的一些示例情形:

  • 某个实现希望在 UUID 中嵌入本文档定义之外的额外信息.

  • 某个实现存在其他应用和/或语言限制, 阻碍其使用当前 UUID 之一.

Appendix 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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 12: UUIDv8 字段和位布局

字段定义:

custom_a: 布局的前 48 bit, 实现可以按自身需要填充. 占用 bit 0 到 47 (octet 0-5).

ver: Section 4.2 定义的 4-bit version 字段, 设为 0b1000 (8). 占用 octet 6 的 bit 48 到 51.

custom_b: 布局中另外 12 bit, 实现可以按自身需要填充. 占用 bit 52 到 63 (octet 6-7).

var: Section 4.1 定义的 2-bit variant 字段, 设为 0b10. 占用 octet 8 的 bit 64 和 65.

custom_c: 布局中紧随 var 字段之后的最后 62 bit, 由实现按自身需要填充. 占用 bit 66 到 127 (octet 8-15).