【问题标题】:Is there a chance the uid's genrated from uuid package can be same? [duplicate]从 uuid 包生成的 uid 是否有可能相同? [复制]
【发布时间】:2021-09-17 07:18:13
【问题描述】:

我想为将存储在数据库中的对象生成unique uid。 我正在使用 UUID npm package 生成唯一 ID。 我想知道这个包生成的任何 id 是否有可能重复自己?像下面的答案https://stackoverflow.com/a/38944736/13126651 谈到 nano id 包以及它如何不生成重复,uuid 包也有同样的信念吗?

当然可以有解决方案在存储之前检查数据库,但由于这将是 I/O 操作,我想避免这种情况,因为这将在 REST API 中,所以我什至无法维护状态。

注意:- 我推测我的 API 一天会达到 1000 次左右,所以是否有可能重复 uid?

更新:-How unique is UUID? 这个问题讨论了 UUID 的独特性,但是如果有人可以解释 UUID npm 包是否会做一些额外的事情来确保它永远不会重复?

【问题讨论】:

  • 如果您只从一个服务器进程生成 UUID,那么您可以通过向其附加递增计数器来保证它是唯一的。每次生成一个时,您都会增加计数器的值并将新值附加到 UUID 的末尾,例如 lkasjfAalsjf-4,其中 -4 来自您的计数器。概率法则会说你可能不需要这样做,但如果你仍然不确定,你可以强制它与计数器唯一。而且,您必须永久存储计数器,因此如果您的服务器重新启动,计数器值将被保留。

标签: javascript node.js express npm


【解决方案1】:

不,它不能:

不,不能保证 UUID 是唯一的。 UUID 只是一个 128 位的随机数。当我的计算机生成 UUID 时,没有实用的方法可以阻止您的计算机或宇宙中的任何其他设备在未来某个时间生成相同的 UUID。

【讨论】:

  • 这里的计算机没有生成它,它的包,我想具体了解那个 npm 包
  • 70 亿分之一的机会可能是相同的,这意味着一年中数万亿的 uuid 只能得到大约 1-3 个重复项
  • 是否有与您上述声明相关的链接或文档
  • 如果这是您想要的,请将其标记为答案
猜你喜欢
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 2011-01-29
  • 2016-02-25
  • 2021-03-19
  • 1970-01-01
  • 2014-10-16
相关资源
最近更新 更多