MongoDB中GridFS的最大大小是多少?

5

我有一个非常简单的问题,但是在MongoDB文档或使用Google中我无法找到答案。

我想知道的是,基于MongoDB的GridFS可以变得多么大,是否存在上限?

(我知道默认的最大文件大小为16 MByte,并且您可以通过使用GridFS来超过此限制。但是所有文件在GridFS中的上限是多少?)


可能是MongoDB - 使用GridFS的最大文件大小的重复问题。 - Alex
不,这不是重复的问题,因为我的问题不是关于单个文件的最大大小,而是整个文件系统的。你所提到的问题是关于单个文件的最大大小。 - Golo Roden
1
嗯,我猜是这样。但是,那个问题的答案是“无限的”,我非常确定无限*文件数量也将等于无限;) - Alex
2个回答

8
MongoDB使用操作系统的mmapped IO作为存储引擎。在没有其他实现细节限制的情况下,理论上的最大值将是您的操作系统可以分配给mongod进程的虚拟内存量。在32位操作系统上,您很快就会遇到这个限制。例如,在Windows上,默认情况下,有一半的地址空间被保留给操作系统,因此您的mongod实例将在约2 GB的大小时停止接受写入。
在64位操作系统上,这个理论最大值要大得多 - 64位价值的,大约是数百万TB。在达到这个限制之前,您将达到另一个限制。
编辑:截至MongoDB 3.0,这可能不再正确。WiredTiger存储引擎以不同的方式工作。

那么最终这意味着使用GridFS,我将得到参与MongoDB实例的各个最大值之和,对吗? - Golo Roden
听起来不错。除非有我不知道的错误,实际上它将是您的操作系统和硬件限制大小的因素:可分配给进程的最大虚拟内存量。 - Mzzl
我理解的是:所有参与实例的虚拟内存总量,还是单个实例的虚拟内存量(无论有多少个实例)? - Golo Roden
每个mongod实例应该有这个理论极限,但我不知道你怎么能达到它 - 你有EB级的数据吗?无论如何,在任何实际情况下,你的操作系统可能会强制施加一个更低的限制。 - Mzzl

1
我认为限制只在于您的硬件,主要是磁盘空间。
理论上,使用MongoDB可以存储所有想要的文档。GridFS仅是将较大的文档保存为较小块的系统。

你有任何证据支持这个吗?我基本上认为(或者说,假设)是一样的,但我想在官方场所读到那个。;-) - Golo Roden
没有。但是我认为,如果有这样的限制,存储大量数据的数据库将毫无用处。存储文档或文档块之间没有区别。也许有人可以给我们一个真实的例子。 - rubenfa

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