javascript - Shortid的唯一性如何保证?

标签 javascript node.js mongodb

我试图在 Mongodb 文档中包含一个名为 myId 的字段。我正在使用shortid 。我想知道,在大数据的情况下,比如集合中的数百万个文档:

  1. 如何保证 shortid 始终是唯一的并且永远不会在任何其他文档中重复?
  2. 什么会跟踪生成的 ID?
  3. ID 重复的可能性有多大?

最佳答案

What's the guarantee that the shortid will be always unique and never ever be repeated for any other document

长话短说:这些短ID几乎只是“散列”时间戳。不是 unix 时间戳,它们自己的品种,但仍然比时间戳多不了多少。

Random 的所有亮点都差不多就是这样。

只要所有这些 Shortid 都是在同一台计算机(单个线程)上使用相同的种子生成的,就不可能发生冲突。

What keeps a track of the generated ids?

当您快速请求 ids 时,计数器会增加,以便达到相同的时间戳。一旦到达新的时间戳,该计数器就会重置为 0。

没有什么重要的,那里真的是随机的。

What are the chances of the id been repeated?

在使用过程中,几乎不存在。

据我所知,唯一可能导致碰撞的两件事是

  • 更改 prng 的种子(会产生新的字母表,因此较新的日期可能会被编码为已使用不同种子生成的 id;虽然不太可能,但有可能)

  • 在多个线程/机器上生成 id,因为计数器未同步。

摘要:我会对代码中的几乎所有内容喋喋不休,但即使如此,它也能完成工作,可靠。我已经告诉过您局限性。

关于javascript - Shortid的唯一性如何保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42844152/

相关文章:

javascript - JavaScript 中引发和订阅事件

MongoDB Feed 设计和查询

javascript - 如何在 React Native 的同一行设置两个输入?

javascript - Ember.js .then 函数是否总是回调?

angularjs - 我试图运行 sb-admin-bs4-angular2-master 这是一个 nodejs 应用程序,当我运行 npm install 时出现以下错误

javascript - 带 map 绘制的室内定位SDK

mongodb - 使用 Casbah 将 lift-json JValue 转换为 MongoDBObject?

node.js - insertMany处理重复错误

javascript - 如何生成特定颜色的随机阴影列表? (例如随机的橙色阴影)

javascript - 管道适用于本地主机但不适用于远程nodejs