背景
ULID全称为Universally Unique Lexicographically Sortable Identifier,即通用唯一词典分类标识符。它的原始仓库是https://github.com/ulid/javascript,该项目由前端开发者alizain发起,基于JavaScript语言编写。现如今对于标识符的方案多为UUID,但一些开发者认为主流的UUID方案在许多场景下可能不是最优的,于是ULID出现了。
ULID与UUID的对比
UUID的缺陷
UUID目前有五个版本,各有缺陷:
- v1:需要访问唯一的,稳定的MAC地址,在许多环境中是不切实际的
- v2:相较于v1,仅仅只是把v1的时间戳前四位替换为POSIX的UID或GID,问题与v1相同
- v3:基于MD5哈希算法生成,生成随机分布的ID需要唯一的种子,可能导致许多数据结构碎片化
- v4:基于随机数或伪随机数生成,除了随机性外没有提供其他信息,且随机性可能会在许多数据结构中导致碎片
- v5:通过SHA-1哈希算法生成,与v3问题一致
总结下来就是:UUID的v1/v2实现依赖唯一稳定MAC地址不现实,v3/v4/v5实现因为随机性产生的ID会“碎片化”。
ULID的特点
基于UUID的缺陷,提出了ULID,使用时如下所示:
u