如何计算Mongo中未来的数据库大小?

KCO*_*zen 6 mongodb

我正在使用MongoDB,我们对这个数据库非常满​​意.但最近我们的客户向我们询问了未来的数据库大小.

我们知道如何在典型的关系数据库中计算它,但是我们在使用这个No-SQL数据库的生产方面没有长期经验.

我们知道的事情:

  • db.namecollections.stats()为我们提供了重要信息,如size(documents),avgObjSize(documents),storageSize,totalIndexSize(更多这里)

使用sizetotalIndexSize,我们只能计算集合的总大小,但最重要的问题是:

  • 为什么收藏大小和storageSize之间有区别?

如何计算这一点,考虑未来的数据库大小?

Tyl*_*ock 6

MongoDB对文档进行了一些填充,以便它们可以增长一点而不必移动到磁盘上的集合的末尾(这是一项昂贵的操作).

此外,mongo通过创建下一个数据文件并在需要提高速度之前用零填充数据文件来预先分配数据文件.

你可以在mongod上抛出一个--noprealloc标志来防止它被破坏.

如果您想了解更多信息,请点击此处

关于5年前计算磁盘空间的问题,如果你能找出数据增长的等式,可以假设你的平均文档大小是多少,以及你将拥有多少/什么类型的索引,你或许可以想出一些东西.

我也曾为一家银行工作,我的建议是提出一个疯狂的上限,然后将其翻两番.银行内的钱很便宜,计算错误也不是.