【问题标题】:What's the maximum size for GridFS on MongoDB?MongoDB 上 GridFS 的最大大小是多少?
【发布时间】:2014-02-15 08:33:47
【问题描述】:

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

我想知道的是,基于 MongoDB 的 GridFS 是否有上限?

(我知道默认的最大文件大小是 16 MByte,使用 GridFS 可以超过这个限制。但是 GridFS 中所有文件的上限是多少?)

【问题讨论】:

  • 不,它不是重复的,因为我的问题不是关于单个文件的最大大小,而是关于整个文件系统。您提到的问题是关于单个文件的最大大小。
  • 嗯,我猜。但是,这个问题的答案是“无限”,我很确定无限 * 文件数也等于无限;)

标签: mongodb gridfs


【解决方案1】:

MongoDB 使用操作系统的 mmapped IO 作为存储引擎。如果实现细节没有其他限制,理论上的最大值将是您的操作系统可以分配给 mongod 进程的虚拟内存量。在 32 位操作系统上,您将很快遇到此限制。例如,在 Windows 上,默认情况下一半的地址空间是为操作系统保留的,因此您的 mongod 实例将停止接受大小约​​为 2 Gb 的写入

在 64 位操作系统上,这个理论上的最大值要大得多 - 相当于 64 位,如果我没记错的话,大约是数百万 TB。在达到这个极限之前,你将达到另一个极限。

编辑:

从 MongoDB 3.0 开始,这可能不再适用。 WiredTiger 存储引擎以不同的方式工作。

【讨论】:

  • 所以最后这意味着使用 GridFS 我将得到参与的 MongoDB 实例的单个最大值的总和,对吗?
  • 听起来不错。除了我不知道的错误,实际上限制大小的将是您的操作系统和硬件:可分配给进程的最大虚拟内存量。
  • 只是我理解的没错:是所有参与实例的虚拟内存总量,还是单个实例的虚拟内存量(不管有多少实例)?
  • 每个单独的 mongod 实例都应该有这个理论上的限制,但我不知道你怎么能达到它 - 你有 EB 的数据吗?无论如何,在任何实际情况下,您的操作系统都可能会施加一个下限。
【解决方案2】:

我认为限制仅在于您的硬件,主要是磁盘空间。

理论上,使用 MongoDB,您可以存储所需的所有文档。 GridFS 只是一个将较大文档保存在较小块中的系统。

【讨论】:

  • 您有任何证据支持这一点吗?我基本上会这么想(或者假设),但我想在官方的某个地方读到它;-)
  • 没有。我还没有。但我认为存储大量数据的数据库将没有这个限制。存储文档或存储文档块之间没有区别。也许有人可以给我们一个真实的例子。
猜你喜欢
  • 1970-01-01
  • 2013-05-12
  • 2014-08-05
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2011-02-26
  • 2013-02-26
  • 2012-06-30
相关资源
最近更新 更多