【问题标题】:What does MongoDB's documentation mean when it says ObjectIDs are "likely unique"?当 MongoDB 的文档说 ObjectID“可能是唯一的”时,它是什么意思?
【发布时间】:2021-03-31 17:09:39
【问题描述】:

情况ObjectIds 的 MongoDB 文档说“ObjectId 很小,可能是唯一的,生成速度快,而且是有序的。”

问题:为什么 MongoDB 的 ObjectId 只是可能是唯一的,而不是完全唯一的?

我尝试过的: 谷歌搜索并粗略搜索 SO。其他一些 SO 问题似乎是指非唯一性问题,但我还没有看到一个有完整解释的问题。也有一些 Medium 文章可能解决了这一点,但在前几篇文章之后,Medium 并不是免费的。

【问题讨论】:

  • 你可以隐身打开它,虽然那里的文章通常令人失望。

标签: mongodb unique primary-key objectid


【解决方案1】:

问题:MongoDB 的 ObjectId 为什么以及如何可能只是唯一的,而不是完全唯一的?

两个原因:

  1. 每个 ObjectId 都是在客户端本地生成的。不同的客户没有协调他们正在产生的价值。因此,可能有两个客户端碰巧生成相同的随机数,从而生成完全相同的 ObjectId。极不可能但可能,因此是“可能独特”的措辞。

  2. ObjectId generation algorithm 指定使用 3 字节计数器,用于消除在同一秒内生成的值的歧义。如果您在同一秒内生成超过 1600 万个 ObjectId,则该计数器将溢出,您正在使用的客户端将开始生成它刚才生成的 ObjectId。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多