我需要创建大量的MongoDb数据库,大约1000多个,之后它将增长到3000多个。
它们将托管在具有SSD磁盘的服务器上,并且大多数数据库将具有大约20-30个集合,其中不超过500个对象。大多数物体的大小在10-50kb之间。 因此,内部数据的大小相关性很小。
我的问题是我应该如何配置这些mongodb数据库的创建,以便以最有效的方式使用磁盘空间。我已经读过mongodb分配空磁盘空间,空数据库的大小可能达到100MB,有没有办法减小这个大小?
答案 0 :(得分:1)
您可以将storage.smallFiles配置选项设置为true。这将使初始数据和日志文件变小。
来自MongoDB文档:
storage.smallFiles选项可减少数据文件的初始大小 并将最大大小限制为512兆字节。 storage.smallFiles也 将每个日志文件的大小从1千兆字节减少到128字节 兆字节。使用storage.sma。 l如果您有大量的文件,请提交 每个数据库都包含少量数据。
根据您的工作量,您还可以更改record allocation strategy。 exact fit
分配将使用比power of 2
更少的存储空间(这是v2.6 +的默认分配策略)。但exact fit
分配仅适用于没有更新和删除工作负载的集合。
修改强>
对于空数据库使用smallFiles
选项(让我们称之为db01),MongoDB将在dbpath
中创建两个大小为16MB的文件:
当您向集合中添加文档时,MongoDB将为大小的数据创建其他文件:下一个将是32MB(db01.1),之后将是64MB(db01.2)...高达512MB 。所以MongoDB不会预先分配例如如果您的数据库中只有50MB的数据,那么您的数据库将为1GB(如果您担心的话)。
如果您只担心超出磁盘大小(在小型SSD上),您也可以使用storage.directoryPerDB。每个数据库都有自己的目录,您可以链接到另一个磁盘。