2

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

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

6e228580-1cb5-11e8-8271-891867c15336

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

PPBqWA9

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

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

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

4

1 回答 1

5

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

56 位和 128 位 id 都会发生冲突。不同之处在于发生碰撞的概率。我认为 56 位需要你能够处理冲突,所以你最终会得到一个更复杂的代码。128 位不太可能产生通常不被考虑的冲突。

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

于 2018-02-28T19:13:12.340 回答