我感兴趣的是使用一个允许高性能的数据库,并期望群集需要大规模的水平扩展。
我们正在研究使用MongoDB,是否有人知道我是否可以使用InMemory(即出于性能原因在RAM中)?
TNX
答案 0 :(得分:6)
您可以采用的性能提升方法是使用RAM磁盘
e.g:
mongod --smallfiles --noprealloc --nojournal --dbpath <ramdisk mounted localtion>
另见:
答案 1 :(得分:5)
至少在Linux上,由于MongoDB使用内存映射(mmap)文件,因此可以设置驻留在内存中的tmpfs
系统。
这里有一个关于为MongoDB设置tmpfs的整洁tutorial。
内存映射文件在FAQ上有更详细的解释。它还说MongoDB自动配置为使用系统上所有可用的 free 内存作为其缓存(link)。
基本上,纯粹的内存数据库没有模块,但是通过使用内存中的fs,可以模拟它。
另一方面,我确实找到了MorboDB,一个&#34;内存数据库,与MongoDB&#34;大部分兼容的克隆。可能对你没用,但我觉得很有意思。
答案 2 :(得分:3)
实际上,这样做很容易。只需将syncPeriodSecs设置为0并禁用日记功能。为了防止创建大多数文件,只需使用
启动mongodmongod --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)