1

typeid:受 Stripe ID 启发的类型安全、K-sortable、全局唯一标识符

 1 year ago
source link: https://www.jdon.com/67156.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

typeid:受 Stripe ID 启发的类型安全、K-sortable、全局唯一标识符

TypeIDs是UUIDv7的一个现代的、类型安全的扩展。

TypeIDs被规范地编码为小写的字符串,由三部分组成:

  • 一个类型前缀
  • 一个下划线'_'分隔符
  • 一个128位UUIDv7编码为base32的26个字符的字符串(使用小写的Crockford字母表)。

下面是一个用户类型的TypeID的例子:

  user_2x4y6z8a0b1c2d3e4f5g6h7j8k
  └──┘ └────────────────────────┘
  type    uuid suffix (base32)

优点

  • 类型安全:你不能意外地使用一个用户ID,因为它应该是一个帖子ID。在调试时,由于类型前缀的存在,你可以立即了解TypeID指的是什么类型的实体。
  • 与UUIDs兼容:TypeIDs是UUIDs的一个超集。他们是基于即将到来的UUIDv7标准。如果你解码TypeID并移除类型信息,你会得到一个有效的UUIDv7。
  • K-Sortable:TypeIDs是K-排序的,可以在数据库中作为主键使用,同时确保良好的定位性。与完全随机的全局ID相比,比如UUIDv4,它通常会有很差的数据库定位性。
  • 深思熟虑的编码:base32编码是URL安全的,不区分大小写,避免模棱两可的字符,可以通过双击选择复制粘贴,并且是一个比UUIDs使用的传统十六进制编码更紧凑的编码(26个字符对36个字符)。

Related Work

  • UUIDv7 - TypeID 所基于的即将推出的 UUID 标准。
  • UUIDv7 的替代方案也值得考虑(但不像 TypeID 那样是类型安全的):

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK