【问题标题】:What is the max size of collection in mongodbmongodb中集合的最大大小是多少
【发布时间】:2015-11-26 13:09:54
【问题描述】:

我想知道 mongodb 中集合的最大大小是多少。 在 mongodb 限制文档中提到单个 MMAPv1 数据库的最大大小为 32TB。

这意味着集合的最大大小是 32TB? 如果我想在一个集合中存储超过 32TB 的数据,解决方案是什么?

【问题讨论】:

  • 您需要在开始考虑 TB 之前就开始分片。所以,分片就是答案。
  • 因此,如果我们将数据分片到多个节点,则数据不受限制。

标签: mongodb mongoose


【解决方案1】:

有理论上的限制,我将在下面展示,但即使是下限也相当高。正确计算极限并不容易,但数量级应该足够了。

mmapv1

实际限制取决于一些因素,例如分片名称的长度等(如果您有几十万个,则总结一下),但这里是使用真实数据进行的粗略计算。

每个分片在配置数据库中都需要一些空间,这与任何其他数据库一样,在单台机器或副本集中限制为 32TB。在我管理的服务器上,config.shards 中条目的平均大小为 112 字节。此外,每个块需要大约 250 字节的元数据信息。让我们假设最佳块大小接近 64MB。

每台服务器最多可以有 500,000 个块。 500,000 * 250byte 等于 125MB 用于每个分片的块信息。因此,如果我们将所有内容最大化,则每个分片的每个分片有 125.000112 MB。将 32TB 除以该值表明我们可以在一个集群中拥有最多略低于 256,000 个分片。

每个分片又可以容纳 32TB 的数据。 256,000 * 32TB 为 8.19200 EB 或 8,192,000 TB。这将是我们示例的限制。

假设它是 8 艾字节。到目前为止,这可以很容易地翻译为“足够用于所有实际目的”。给你一个印象:国会图书馆(可以说是世界上最大的图书馆之一)拥有的所有数据都包含大约 20TB 的数据,包括音频、视频和数字材料。你可以将它放入我们理论上的 MongoDB 集群中大约 400,000 次。请注意,这是使用保守值的最大尺寸的下限。

有线老虎

现在好的部分:WiredTiger 存储引擎没有这个限制:数据库大小没有限制(因为可以使用多少数据文件没有限制),所以我们可以拥有无​​限数量的分片。即使我们在 mmapv1 上运行这些分片并且在 WT 上只有我们的配置服务器,a 的大小也几乎是无限的——在 64 位系统上对 16.8M TB RAM 的限制可能会在某处导致问题并导致 @987654322 的索引@collection 被交换到磁盘,停止系统。我只能猜测,因为我的计算器拒绝使用该区域中的数字(而且我懒得手动操作),但我估计了两位数 yottabyte 区域的限制(以及在某处托管该区域所需的空间)相当于德克萨斯州的大小)。

结论

不要担心分片环境中的最大数据大小。无论如何,这已经足够了,即使是最保守的方法。使用分片,你就完成了。顺便说一句:即使 32TB 也是一大堆数据:我所知道的大多数集群都拥有较少的数据和分片,因为 IOPS 和 RAM 利用率超过了单个节点的容量。

【讨论】:

  • 感谢 Markus 提供的信息。
猜你喜欢
  • 2014-02-15
  • 1970-01-01
  • 2014-08-05
  • 2013-02-26
  • 2012-06-30
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多