Can I configure MongoDB to be In-Memory?

喜你入骨 提交于 2019-12-10 11:16:34

问题


I am interested in using a database that will allow high performance, with an expected requirement of cluster for a massive horizontal scaling.

We are looking into using MongoDB, does anyone know if I can use it InMemory (i.e. in the RAM - for performance reasons)?

Tnx


回答1:


A performance boost approach you can take is to use a RAM disk

e.g.:

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

See also:

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

  • Create RAM Disk linux: https://unix.stackexchange.com/questions/66329/creating-a-ram-disk-on-linux/66331#66331

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




回答2:


Using a tmpfs

At least on linux, since MongoDB uses memory mapped (mmap) files, you can set up a tmpfs system that resides in memory.

Here's a neat tutorial on setting up a tmpfs for MongoDB.

Memory mapped files

Memory mapped files are explained in more detail on their FAQ. It also says that MongoDB is automatically configured to use all available free memory on a system as its cache (link).

Conclusion

Basically, there is no module for a purely in-memory database, but by using an in-memory fs, one can emulate it.

On a side note, I did find MorboDB, a "In-memory database, mostly-compatible clone of MongoDB". Probably not useful to you, but I thought it interesting.




回答3:


Actually, it is quite easy to do so. Simply set syncPeriodSecs to 0 and disable journaling. In order to prevent most files to be created, simply start mongod with

mongod --noprealloc --nojournal 

or the equivalent options configured in mongod.conf.

However, namespace files will be created whatever you do. In case you use a replica set, oplog files will be created, too.

In order to make sure that your mongodb will not eat up all available RAM and inserts don't throw an exception under those circumstances, you might want to have a look at capped collections.




回答4:


As of today, latest version of MongoDB, i.e. v3.4 supports in memory engine in their Enterprise software edition. If you seek open source edition, Percona's MongoDB is way to go.

Mongo Enterprise edition : https://docs.mongodb.com/manual/core/inmemory/

Percona's MongoDB offering: https://www.percona.com/software/mongo-database/percona-memory-engine-for-mongodb




回答5:


Try https://github.com/nodkz/mongodb-memory-server

this helps for testing

npm i mongodb-memory-server



来源:https://stackoverflow.com/questions/26572248/can-i-configure-mongodb-to-be-in-memory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!