我试图在 Mongodb 文档中包含一个名为 myId 的字段。我正在使用shortid 。我想知道,在大数据的情况下,比如集合中的数百万个文档:
- 如何保证
shortid
始终是唯一的并且永远不会在任何其他文档中重复? - 什么会跟踪生成的 ID?
- 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/