KSUID 生成器
指导
KSUID 生成器
生成KSUID(K-Sortable Unique Identifiers)或解码现有的,以提取其中嵌入的时间戳和随机数据。KSUID是由27个字符组成的Base62字符串,按创建时间进行词典排序可比较,结合了4字节的Unix时间戳与16字节的随机数据。
如何使用
设置计数(1–10)以一次性生成多个KSUID,或者将现有的KSUID粘贴到解码字段中提取其时间戳、Unix纪元时间和随机组件。生成的KSUID可以逐个复制。
特征
- 批量生成 一次生成1到10个KSUID。
- KSUID 解码器 从任何KSUID中提取时间戳、epoch和随机字节。
- 加密安全 随机组件的用途
crypto.getRandomValues() - 基于Base62的32位输出 – 无特殊字符,URL安全
- 词典排序能力 – KSUIDs 按照字符串顺序按时间排列。
- 仅客户端 所有代代皆为地方性的。
常问问题
-
**KSUID是什么,以及它与UUID有什么不同?**
KSUID(K-Sortable Unique IDentifier)是一个由4字节的Unix时间戳前缀和16字节随机数据组成的20字节标识符,编码为一个长度为27个字符的Base62字符串。与UUID v4(完全随机且不可排序)不同,**KSUID在创建顺序上按字典顺序排列**,因此适用于需要基于时间顺序的数据库主键,而无需额外的时间戳列。UUID v7是一个更新的标准,也能提供时间有序的UUID。
-
为什么使用KSUID代替数据库ID的自增整数?
自增整数暴露记录计数,不适用于分布式系统,且需要集中式序列生成。KSUIDs全局唯一无需协调,嵌入创建时间,按时间顺序排序,且在URL中安全曝光而不会泄露业务指标。权衡是存储空间更大(20字节对比整数的4-8字节)以及略慢的索引操作,因为随机高位字节无法实现完美顺序插入。
-
基52编码是什么,以及为什么KSUID使用它?
Base-62 使用数字 0–9 和字母 A-Z 和 a-z(共 62 个字符)。与 Base-64 不同,它不包含特殊字符(+、/、=),因此安全用于 URL、文件名和未经编码的字符串比较。 KSUID 采用 Base-62,因为生成的 27 个字符串在词典顺序上与底层的 20 字节二进制排列一致,这对于字符串比较中的时间顺序属性正确运作至关重要。
-
KSUID时间戳的准确性如何?
KSUID时间戳具有1秒的精度,使用一个4字节无符号整数表示自2014年5月13日00:00:00 UTC起的秒数。该基准点被选择以确保在2150年前不会溢出。16字节的随机组件即使多个KSUID在同一台机器上或不同机器上同一秒内生成,也能保证唯一性,使碰撞几乎不可能发生。
