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

时间:2014-10-26 11:00:27

标签: mongodb in-memory-database

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

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

TNX

5 个答案:

答案 0 :(得分:6)

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

e.g:

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

另见:

答案 1 :(得分:5)

使用tmpfs

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

这里有一个关于为MongoDB设置tmpfs的整洁tutorial

内存映射文件

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

结论

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

另一方面,我确实找到了MorboDB,一个&#34;内存数据库,与MongoDB&#34;大部分兼容的克隆。可能对你没用,但我觉得很有意思。

答案 2 :(得分:3)

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

启动mongod
mongod --noprealloc --nojournal 

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

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

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

答案 3 :(得分:2)

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

Mongo企业版: https://docs.mongodb.com/manual/core/inmemory/

Percona的MongoDB产品: https://www.percona.com/software/mongo-database/percona-memory-engine-for-mongodb

答案 4 :(得分:0)

尝试https://github.com/nodkz/mongodb-memory-server

这有助于测试

npm i mongodb-memory-server