我可以将MongoDB配置为在内存中吗



我感兴趣的是使用一个能够实现高性能的数据库,并期望集群能够进行大规模的水平扩展。

我们正在研究使用MongoDB,有人知道我是否可以在内存中使用它吗?

Tnx

截至目前,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

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

例如:

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

另请参阅:

  • http://edgystuff.tumblr.com/post/49304254688/how-to-use-mongodb-as-a-pure-in-memory-db-redis-style

  • 创建RAM磁盘linux:https://unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux/66331#66331

  • http://www.phpmoadmin.com/mongodb-in-memory-database

使用tmpfs

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

这里有一个关于为MongoDB设置tmpfs的简洁教程。

内存映射文件

内存映射文件在其常见问题解答中有更详细的解释。它还说,MongoDB被自动配置为使用系统上所有可用的空闲内存作为其缓存(链接)。

结论

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

顺便说一句,我确实找到了MorboDB,一个"内存数据库,大部分兼容MongoDB的克隆"。可能对你没用,但我觉得很有趣。

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

mongod --noprealloc --nojournal 

或者CCD_ 2中配置的等效选项。

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

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

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

这有助于测试

npm i mongodb-memory-server

相关内容

  • 没有找到相关文章

最新更新