Mongodb - 制作内存数据库还是使用缓存

3
我将创建一个5节点的mongodb集群。它将更加偏重于读取而不是写入,并且有一个问题,哪种设计会带来更好的性能。这些节点将专门用于mongodb。举个例子,每个节点将拥有64GB的内存。
从mongodb文档中可以看到:
MongoDB自动使用机器上所有可用的空闲内存作为其缓存
这是否意味着只要我的数据小于可用的内存,它就像是一个内存数据库?
我还了解到,可以完全在内存中实现mongodb。

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

如果我的数据非常动态(每隔几个小时可以从50GB变化到75GB),那么从理论上讲,将mongodb设计为允许mongodb使用其缓存(mongo的默认设置)来自我管理,或者最初将mongodb放入内存中,如果数据增长超过RAM大小,则使用交换空间(SSD),哪种方式的性能更好?
1个回答

3

MongoDB默认存储引擎将文件映射到内存中。这提供了一种高效访问数据的方式,同时避免了双重缓存(即MongoDB缓存实际上是操作系统的页面缓存)。

这是否意味着只要我的数据小于可用ram,它就像拥有一个内存数据库?

对于读取流量,是的。对于写入流量,则不同,因为MongoDB可能需要记录写操作(根据配置),并维护oplog。

从仅内存(利用tmpfs)运行MongoDB是否更好?

对于读取流量,应该不会更好。将文件放在tmpfs上也会避免双重缓存(这是好的),但数据仍然可能被分页。使用常规文件系统将在数据已分页后变得同样快速。

对于写入流量,如果日志和oplog也放在tmpfs上,则更快。请注意,在这种情况下,系统崩溃将导致完全数据丢失。通常,性能增益不值得冒险。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接