我想知道mongodb中集合的最大大小是多少.在mongodb限制文档中,提到单个MMAPv1数据库的最大大小为32TB.
这意味着最大收集量是32TB?如果我想在一个集合中存储超过32TB的解决方案是什么?
Mar*_*erg 17
正如我将在下面展示的那样,存在理论上的限制,但即使下限也相当高.正确计算限制并不容易,但数量级应该足够.
实际限制取决于一些事情,例如碎片名称的长度等等(如果你有几十万个,总结一下),但这里是对现实生活数据的粗略计算.
每个分片在配置数据库中都需要一些空间,在单个计算机或副本集中,它与任何其他数据库一样限制为32TB.在我管理的服务器上,条目的平均大小config.shards为112个字节.此外,每个块需要大约250个字节的元数据信息.让我们假设最佳块大小接近64MB.
每台服务器最多可以有500,000个块.每个分片的块信息500,000*250byte等于125MB.因此,根据每个碎片,如果我们将所有内容都排除在外,我们每个碎片的碎片数为125.000112 MB.将32TB除以该值表明我们在群集中最多可以有少于256,000个分片.
每个分片依次可以容纳32TB的数据.256,000*32TB是8.19200艾字节或8,192,000太字节.这将是我们的例子的限制.
让我们说它是8艾字节.截至目前,这很容易转化为"足够用于所有实际目的".给你一个印象:美国国会图书馆所拥有的所有数据(可以说是世界上收藏规模最大的图书馆之一)拥有大约20TB的估计数据大小,包括音频,视频和数字资料.你可以将它放入理论上的MongoDB集群大约400,000次.请注意,这是使用保守值的最大大小的下限.
好的部分:WiredTiger存储引擎没有这个限制:数据库大小不受限制(因为对数据文件的使用数量没有限制),所以我们可以拥有无限数量的分片.即使我们在mmapv1上运行这些分片而在WT上只运行我们的配置服务器,但是a的大小几乎是无限的 - 64位系统上16.8M TB RAM的限制可能会在某处导致问题并导致config.shard集合的索引到被交换到磁盘,拖延系统.我只能猜测,因为我的计算器拒绝使用该区域的数字(而且我懒得手工完成),但我估计这里的两位数yottabyte区域的限制(以及在某处托管的空间)在德克萨斯州的大小).
不要担心分片环境中的最大数据大小.无论如何,即使采用最保守的方法也是如此.使用分片,你就完成了.顺便说一句:即使32TB也是一大堆数据:我知道的大多数集群都拥有较少的数据和分片,因为IOPS和RAM利用率超过了单个节点容量.
| 归档时间: |
|
| 查看次数: |
10098 次 |
| 最近记录: |