生成随机通用唯一标识符(UUID)
数量:
结果转大写
去间隔符"-"
两端添加{}
结果:

UUID:Universally Unique Identifier(通用唯一标识符)

UUID 目前有 5 个版本:

  1. 版本1:在许多环境中是不切实际的,因为它需要访问唯一的,稳定的MAC地址,容易被攻击;
  2. 版本2:将版本 1 的时间戳前四位换为 POSIX 的 UID 或 GID,问题同上;
  3. 版本3:基于 MD5 哈希算法生成,生成随机分布的ID需要唯一的种子,这可能导致许多数据结构碎片化;
  4. 版本4:基于随机数或伪随机数生成,除了随机性外没有提供其他信息;
  5. 版本5:通过 SHA-1 哈希算法生成,生成随机分布的ID需要唯一的种子,这可能导致许多数据结构碎片化;
这里面常用的就是 UUID4 了,但是,即使是随机的,但是也是存在冲突的风险;

在分布式系统中,唯一标识符(UUID)是非常常见的,它是用于标识数据或者实体的一种方式,它是基于算法生成的一个固定长度的字符串。然而,UUID也有一些缺点,例如它们很难被排序,因为它们是随机生成的,这导致了一些性能问题。

ULID:Universally Unique Lexicographically Sortable Identifier(通用唯一词典分类标识符)

和 UUID 要么基于随机数,要么基于时间戳不同,ULID 是既基于时间戳又基于随机数,时间戳精确到毫秒,毫秒内有1.21e + 24个随机数,不存在冲突的风险,而且转换成字符串比 UUID 更加友好。

它具有一些惊人的功能,解决了UUID的一些缺点。例如,当在关系数据库中使用UUID时,由于缺乏内置的排序,可能会出现数据索引的困难。在这种情况下,你可能被迫包括另一个属性来使数据可排序。此外,UUID 在随机性、效率和生成方面存在一些常见问题,ULID 解决了这些问题。

NanoID

NanoID, 是一个小巧、安全、URL友好、唯一的 JavaScript 字符串 ID 生成器

  1. NanoID 大小只有 108 字节 与 UUID 不同,NanoID 的大小要小 4.5 倍,并且没有任何依赖关系。此外,大小限制已将大小从另外 35% 减小。
  2. 大小减少直接影响数据的大小。例如,使用 NanoID 的对象小而紧凑,用于数据传输和存储。
  3. 更安全 在大多数的随机生成器中,他们使用不安全的Math.random()。但是,NanoID使用crypto module和Web Crypto API,这是更安全的。
  4. 另外,NanoID在实现ID生成器的过程中使用了它自己的算法,称为统一算法,而不是使用"随机的字母表"。
  5. 快速紧凑 NanoID比UUID快60%。在UUID的字母表里有36个字符,而NanoID只有21个字符。

根据 StackOverflow 中的许多专家意见,使用 NanoID 没有明显的缺点或限制。非人类可读是许多开发人员在 NanoID 中看到的主要缺点。但似乎唯一标识类字符都有这个问题:非友好性可读使调试变得十分困难。NanoID 比 UUID 更年轻,且从npm趋势对比来看,NanoID的上升趋势更明显,而UUID的进展则很平缓。 因此,基于NanoID 更小、更快、更安全、更不易冲突,个人更推荐使用 NanoID

© 2023 PV138 · 站点地图 · 免责声明 · 联系我们 · 问题反馈