MongoDB 单文档大小限制为 16MB

Posted

技术标签:

【中文标题】MongoDB 单文档大小限制为 16MB【英文标题】:MongoDB Single Document size limit is 16MB 【发布时间】:2013-02-24 19:29:48 【问题描述】:

已知信息:据了解,MongoDB 存储在 BSON (Binary JSON) 中,maximum BSON document size 为 16MB。

问题:为什么 16MB 本身为什么不是 32MB 或 64MB 或更多,16MB 的确切限制是什么,以及完全依赖 16MB 的原因是什么?

提到在传输过程中,不会消耗过多的带宽,也不需要服务器过多的RAM。但是,如果我们能负担得起网络带宽和 RAM 内存消耗呢?然后,除了GridFS,我们别无选择。为什么?

这听起来可能很愚蠢。但是请任何人都可以对此提出一些亮点吗?


更新:原来是 4MB,现在是 16MB。

mongodb BSON size

我们可以通过以下命令在 Mongo Shell 上检查它

db.isMaster().maxBsonObjectSize/(1024*1024)

为什么不允许 DBAs 配置它?

【问题讨论】:

是什么让 32 MB 比 16 MB 更符合逻辑? @MattBall 更新了我的问题.. 但是,我希望你能理解我提出的实际问题,并能给出一些提示或回答自己...... @PrincessOftheUniverse:如果你知道为什么是 4MB 现在是 16MB,请回答 这是导致从 4MB 增加的票证:SERVER-431 它是 16MB,因为开发人员决定从之前的 4 MB 改为 16MB。为什么世界不是蓝色的? 【参考方案1】:

查看 JIRA 票证上的线程,该线程将值从 4MB 增加到 16MB。关于票有相当大的争论:https://jira.mongodb.org/browse/SERVER-431

他们为什么选择 16MB 而不是 32MB 似乎是武断的。它之所以增加是因为许多人需要存储大于 4MB 的文档(我假设小于 16MB)。有些人在该线程中要求将其设置为可配置的(就像你问的那样),这对我来说很有意义。不知道为什么他们还没有决定这样做。

【讨论】:

这不是任意的,它实际上是依赖于内存分配的。 我的意思是,为什么它增加到 16MB 而不是 32MB,这是相当随意的。在回答中澄清。

以上是关于MongoDB 单文档大小限制为 16MB的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB对象大小插入问题C#

mongodb 怎么限制文档数量

大数据查询mongodb、聚合、单索引或复合索引

MongoDB固定集合(capped collection)

VARIANT 数据类型大小限制

MongoDB参数限制和阀值