在Node中使用128位长(uuid)或7位长(短路)唯一ID生成器会更好吗?

问题描述 投票:1回答:1

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

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

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

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

PPBqWA9

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

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

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

node.js uuid node-modules uniqueidentifier node-uuid
1个回答
3
投票

我将假设shortid包提供的较短的ID为56位长。但最有可能的是它们需要56位长的空间(7个字节),但只有42位长的有效载荷。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.