MongoDB单个文档的大小限制为16MB。

21

已知信息:MongoDB存储在BSON(二进制JSON)中,最大BSON文档大小为16MB。

问题:为什么是16MB而不是32MB、64MB或更多,限制确切地放在哪里,为什么要依赖于16MB?

据称,在传输过程中,不会消耗过多的带宽,并且不需要服务器上过多的RAM。但是如果我们可以负担网络带宽和RAM内存消耗怎么办?即使如此,我们也别无选择,只能使用GridFS。为什么?

这可能听起来很愚蠢。但请问有人能够对此进行解释吗?


更新:原为4MB,现在为16MB。

mongodb BSON大小

我们可以通过发出以下命令在Mongo Shell上进行检查

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

为什么DBAs不允许将其配置为可配置项?


5
为什么32 MB比16 MB更加合乎逻辑? - Matt Ball
@MattBall 我更新了我的问题。但是,我希望您能理解我的实际问题并能给出一些提示或答案... - Amol M Kulkarni
2
以下是引起4MB增加的故障单: SERVER-431 - theon
MongoDB作为无模式的数据库非常适合数据(JSON)转储,但是由于16 MB的限制,这个概念完全被破坏了!这很愚蠢,而且Gridfs没有对文件内容进行CRUD操作!我们不能只是增加文件大小限制吗?人们如何使用MongoDB进行扩展让我感到担忧!如果您要分发转储,最好选择传统的关系型数据库!如果有Gridfs CRUD,我就可以开始了!请让Gridfs CRUD成为现实。 - Rizwan Patel
我们需要存储原始的脑电图数据,其范围从大约100kb到22mb不等 :-/ 这个限制非常令人烦恼。 - Oliver Dixon
显示剩余3条评论
1个回答

21

请查看关于JIRA工单的讨论,该工单将值从4MB上调至16MB。工单上有一场激烈的辩论:https://jira.mongodb.org/browse/SERVER-431

似乎他们选择16MB是任意的,并没有选择32MB等其他数值。这个修改是因为很多人需要存储大于4MB(我想是低于16MB)的文档。在那个线程中,一些人要求将其设置为可配置参数(就像您提出的那样),这对我来说很有意义。不确定为什么他们没有决定这么做。


3
这并不是随意的,实际上它取决于内存分配。 - Sammaye
4
我的意思是,为什么内存大小被增加到16MB而不是32MB这样的数字是相当任意的。在答案中进行了澄清。 - theon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接