UUID 第7版 生成器 (Unix 纪元时间)

生成具有毫秒精度的 Unix 时间戳 UUID,用于时间排序排列

尝试这些示例:

什么是 UUID v7?

UUID 版本 7 是一种按时间排序的 128 位标识符,由 RFC 9562 定义,2024 年 5 月发布。它由以下部分组成:

  • Unix 时间戳:48 位,精确到毫秒的 Unix 时间
  • 随机数据:74 位的随机数据
  • 版本位和变体位:用于格式识别的 6 位

格式示例: 017f22e2-79b0-7cc3-98c4-dc0c0c07398f

UUID v7 的工作原理

  1. 获取当前 Unix 时间戳(以毫秒为单位)(48 位)
  2. 生成 74 位加密强随机数据
  3. 将版本位设置为 0111(版本 7)
  4. 将变体位设置为 10(RFC 4122 标准)
  5. 组装为带连字号的 32 位十六进制数字:8-4-4-4-12 格式

优点与注意事项

AdvantagesConsiderations
  • 按字典顺序可排序
  • 不包含嵌入的 MAC 地址
  • 嵌入 Unix 时间戳
  • 便于数据库使用
  • 系统需要支持 UUID v7
  • 时间戳分辨率有限(毫秒)
  • 旧系统支持有限
  • 不能回退到 1970 年之前

UUID v7 结构

BitsContent
0-47Unix 时间戳(毫秒)
48-51版本(v7 的 0111)
52-63随机数据
64-65变体(RFC4122 的 10)
66-127随机数据

UUID v7 与其他版本的比较

Version基于使用场景Privacy
UUID v1时间 + MAC按时间排序的 ID⚠️ 会暴露 MAC
UUID v3命名空间 + MD5确定性 ID✅ 私有
UUID v4Random安全随机 ID✅ 私有
UUID v5命名空间 + SHA-1确定性 ID✅ 私有
UUID v6时间(重排序)可排序的 ID⚠️ 会暴露 MAC
UUID v7时间 + 随机可排序的 ID嵌入生成时间;不包含 MAC 地址

常见用例

  • 数据库主键:高效的索引
  • 分布式系统:无需协调的按时间排序
  • 现代应用:注重隐私的标识符
  • Microservices:跨服务可排序的 ID
  • 事件溯源:按时间顺序的事件 ID
  • 数据仓储:按时间排序的分析 ID

常见问题解答

UUID v7 相对于 v1 或 v6 有何优势?

UUID v7 使用以毫秒为单位的 Unix 时间戳和随机数据而不是 MAC 地址,在保持按生成时间排序性的同时提供隐私保护。

UUID v7 是正式标准吗?

是的。UUID v7 由 RFC 9562 定义,2024 年 5 月发布。

我可以从 UUID v7 中提取创建时间吗?

可以。位于前 48 位的毫秒级 Unix 时间戳可以被提取并转换为标准日期时间。

UUID v7 的创建时间可以排序吗?

是的。UUID v7 设计为按字典序可排序,Unix 时间戳位于最高有效位,直接字符串比较即可对应时间顺序。

UUID v7 会暴露任何系统信息吗?

UUID v7 不嵌入 MAC 地址,但其前 48 位会显示以毫秒为单位的生成时间戳。请将此时间元数据视为对任何收到该标识符的人可见。

Resources