【问题标题】:MongoDB ObjectID Generating rule affect the order of insertMongoDB ObjectID 生成规则影响插入顺序
【发布时间】:2018-11-29 07:07:46
【问题描述】:

我是MongoDB新用户,来自MongoDB官方文档links
它显示:

返回一个新的 ObjectId 值。 12 字节的 ObjectId 值包括:

a 4-byte value representing the seconds since the Unix epoch,
a 5-byte random value, and
a 3-byte counter, starting with a random value.

在我对 mongodb 的有限体验中,我认为它就像这样
时间戳+随机值+计数器

这是我的问题
1. 生成的随机数小于上一次插入在一秒内生成的随机数。数据插入的顺序和数据的ObjectID顺序不一样?是吗?
2.计数器也以随机值启动。我认为计数器的最大值是 2^3*8 (2^24) ,但是当计数器以非常大的值开始时。会发生什么? (我的意思是这会影响写入数据的总量吗?和插入顺序)

提前致谢。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    最后。我找到了一些关于这个问题的文件。

    对存储 ObjectId 值的 _id 字段进行排序大致是 相当于按创建时间排序。

    重要

    虽然 ObjectId 值应随时间增加,但它们不会 必然单调。这是因为他们:

    仅包含一秒的时间分辨率,因此 ObjectId 值 在同一秒内创建的顺序没有保证,并且 由可能具有不同系统时钟的客户端生成。

    这个文件显示。它们在某些情况下并不有序。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-20
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多