我可以将MongoDB配置为内存吗?

问题描述 投票:2回答:5

我感兴趣的是使用一个允许高性能的数据库,并期望集群需要大规模的水平扩展。

我们正在研究如何使用MongoDB,有人知道我是否可以使用InMemory(即出于性能原因在RAM中)?

TNX

mongodb in-memory-database
5个回答
6
投票

您可以采用的性能提升方法是使用RAM磁盘

e.g:

mongod --smallfiles --noprealloc --nojournal --dbpath <ramdisk mounted localtion>

也可以看看:


5
投票

Using a tmpfs

至少在linux上,由于MongoDB使用内存映射(mmap)文件,你可以设置一个驻留在内存中的tmpfs系统。

这是一个关于为MongoDB设置tmpfs的简洁tutorial

Memory mapped files

内存映射文件在FAQ上有更详细的解释。它还说MongoDB自动配置为使用系统上的所有可用空闲内存作为其缓存(link)。

Conclusion

基本上,没有用于纯内存数据库的模块,但是通过使用内存中的fs,可以模拟它。

另外,我确实找到了MorboDB,一个“内存数据库,与MongoDB大部分兼容的克隆”。可能对你没用,但我认为这很有趣。


3
投票

实际上,这样做很容易。只需将syncPeriodSecs设置为0并禁用日记功能。为了防止创建大多数文件,只需启动mongod

mongod --noprealloc --nojournal 

或者在mongod.conf中配置的等效选项。

但是,无论您做什么,都将创建命名空间文件。如果您使用副本集,也将创建oplog文件。

为了确保您的mongodb不会占用所有可用内存并且插入不会在这种情况下抛出异常,您可能需要查看capped collections


3
投票

截至今天,最新版本的MongoDB,即v3.4在其企业软件版本的内存引擎中支持。如果你寻求开源版本,Percona的MongoDB是可行的。

Mongodb企业版:qazxsw poi

Percona的MongoDB产品:https://docs.mongodb.com/manual/core/inmemory/


© www.soinside.com 2019 - 2024. All rights reserved.