【发布时间】: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