在 Node 中使用 128 位长(uuid)还是 7 位长(shortid)唯一 ID 生成器更好?

Dmi*_*kin 2 uuid uniqueidentifier node.js node-modules node-uuid

我目前正在使用uuidnpm 包为应用程序中的图形数据库元素生成唯一 ID node.js

它生成符合 RFC 标准的 128 位长 ID,例如

6e228580-1cb5-11e8-8271-891867c15336
Run Code Online (Sandbox Code Playgroud)

我目前正在考虑转向shortidnpm package,它执行类似的工作,但生成 7 位长 ID:

PPBqWA9
Run Code Online (Sandbox Code Playgroud)

我的数据库请求已经很长,我想缩短它们,所以我正在考虑从 切换uuidshortid.

然而,问题是:我知道 128 位长的 UUID 生成器保证它是唯一的。那7位的呢?我知道它可以提供78364164096独特的可能性,这还不错,但是我的数据库中已经有大约 50M 的独特对象,每个对象都有一个唯一的索引,所以我只是好奇该算法是否真的能够生成唯一的索引ID考虑到78364164096仅是50000的1350倍。

有任何想法吗?我应该使用 7 位标识符还是 128 位标识符?

fla*_*usa 5

我假设shortid包提供的较短 id 是完整的 56 位长。但很可能它们占用 56 位长的空间(7 个字节),但只占用 42 位长的有效负载。

56 位和 128 位 id 都会发生冲突。差异在于发生碰撞的概率。我认为 56 位要求您能够处理冲突,因此您最终会得到更复杂的代码。128 位不太可能产生冲突,以至于通常不被考虑。

为了简单和安全,我会选择经过时间考验的128位。