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

Node.js 在节点中使用128位长(uuid)还是7位长(shortid)唯一ID生成器更好?,node.js,uuid,node-modules,uniqueidentifier,node-uuid,Node.js,Uuid,Node Modules,Uniqueidentifier,Node Uuid,我目前正在使用为我的node.js应用程序中的图形数据库元素生成唯一ID 它生成与RFC兼容的128位长ID,如 6e228580-1cb5-11e8-8271-891867c15336 我目前正在考虑转换到,它做类似的工作,但生成7位长的ID: PPBqWA9 我的数据库请求已经很长,我想缩短它们,所以我正在考虑从uuid切换到shortid 然而,问题是:我知道128位长的兼容UUID生成器保证它是唯一的。那7位的呢?我知道它可以提供大约78364164096唯一的可能性,这还不错,但我

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

它生成与RFC兼容的128位长ID,如

6e228580-1cb5-11e8-8271-891867c15336
我目前正在考虑转换到,它做类似的工作,但生成7位长的ID:

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

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


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

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

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


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

我想你指的是7字节而不是7位。目前还不清楚这些7字节的ID是否被限制为可打印或可打印的ASCII字符。