Folia
← 返回头版

UUIDv7 实现与规范存在显著偏差,多项宣传特性难以保证

UUIDv7 作为一种广泛推广的通用唯一标识符,被宣传具备单调递增、可靠时间戳和不可猜测等特性,但深入分析表明,RFC 9562 标准规范实际允许实现在多个关键方面偏离这些承诺1。RFC 9562 对时钟值与实际时间的接近程度未做出明确要求或保证,并允许实现修改时间戳字段1。

Python 标准库的 uuid.uuid7() 实现在时钟回拨场景下表现出问题1。当时钟回拨一小时后,时间戳与系统时间的差值从 3600 秒增长至 3994 秒以上1。

在单调性方面,UUIDv7 即使在单个节点上也不能严格保证单调递增的特性1。采用毫秒级时间戳且不包含计数器的实现会在小循环内生成乱序 ID1。调查发现,多个 UUIDv7 实现都未将时间戳写入持久化存储,导致进程重启后遇到系统时钟回拨时会生成乱序 ID1。RFC 规范进一步允许实现在计数器溢出或系统时钟冻结时将时间戳加速到未来1。

此外,UUIDv7 嵌入的时间戳会泄露创建时间元数据,在用户资料页面 URL 等场景可能引发隐私问题1。UUIDv7 唯一严格保证的特性是强碰撞避免和 ID 唯一性1。


评论