我感兴趣的是使用一个能够实现高性能的数据库,并期望集群能够进行大规模的水平扩展。
我们正在研究使用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