TypeID:现代、类型安全的全球唯一标识符
项目介绍
在现代软件开发中,唯一标识符(UUID)是不可或缺的工具,但传统的UUID在类型安全和可读性方面存在一些不足。TypeID 是一个受 Stripe ID 启发的现代、类型安全的全球唯一标识符,它扩展了 UUIDv7,并引入了类型前缀的概念,使得标识符不仅唯一,而且类型安全。
TypeID 的编码格式由三部分组成:
- 类型前缀(最多63个字符,仅限小写 snake_case ASCII [a-z_])。
- 下划线
_
分隔符。 - 128位 UUIDv7,使用改进的 base32 编码为26个字符的字符串。
例如,一个类型为 user
的 TypeID 可能如下所示:
user_2x4y6z8a0b1c2d3e4f5g6h7j8k
└──┘ └────────────────────────┘
type uuid suffix (base32)
项目技术分析
TypeID 不仅仅是 UUID 的简单扩展,它在多个方面进行了优化和改进:
- 类型安全:通过引入类型前缀,TypeID 确保了不同类型的标识符不会被混用。例如,
user
类型的 ID 不会被误用为post
类型的 ID。 - 兼容 UUID:TypeID 基于即将发布的 UUIDv7 标准,去除了类型信息后,仍然是一个有效的 UUIDv7。
- K-Sortable:TypeID 是 K-sortable 的,这意味着它们可以作为数据库的主键,同时确保良好的局部性。相比之下,完全随机的全局 ID(如 UUIDv4)通常会导致数据库局部性较差。
- 精心设计的编码:base32 编码是 URL 安全的,大小写不敏感,避免了模糊字符,可以通过双击选择复制,并且比传统的十六进制编码更紧凑(26个字符 vs 36个字符)。
项目及技术应用场景
TypeID 适用于需要类型安全、全局唯一且可排序的标识符的场景。以下是一些典型的应用场景:
- 数据库主键:在数据库中使用 TypeID 作为主键,可以确保良好的局部性,提高查询性能。
- API 标识符:在 API 中使用 TypeID,可以避免不同类型标识符的混用,提高代码的可读性和可维护性。
- 分布式系统:在分布式系统中,TypeID 可以作为全局唯一的标识符,确保不同节点生成的 ID 不会冲突。
项目特点
- 类型安全:通过类型前缀,确保不同类型的标识符不会被混用。
- 兼容 UUID:基于 UUIDv7 标准,去除了类型信息后,仍然是一个有效的 UUIDv7。
- K-Sortable:可排序的特性使得 TypeID 在数据库中作为主键时,具有良好的局部性。
- 精心设计的编码:base32 编码使得 TypeID 在 URL 中使用时更加安全,且更易于复制和粘贴。
结语
TypeID 是一个现代、类型安全的全球唯一标识符,它不仅解决了传统 UUID 在类型安全和可读性方面的不足,还提供了更好的数据库局部性和更紧凑的编码。无论是在数据库、API 还是分布式系统中,TypeID 都是一个值得信赖的选择。
如果你正在寻找一个既安全又高效的唯一标识符解决方案,不妨试试 TypeID,它将为你带来意想不到的便利和性能提升。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考