我目前正在使用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位标识符?
我将假设shortid
包提供的较短的ID为56位长。但最有可能的是它们需要56位长的空间(7个字节),但只有42位长的有效载荷。
56位和128位ID都会发生冲突。不同之处在于发生碰撞的可能性。我认为56位的一个要求你能够处理冲突,所以你最终会得到一个更复杂的代码。 128位不太可能产生通常不被考虑的冲突。
为了简单和安全起见,我会选择经过时间验证的128位。