MongoDB 存储引擎 MongoRocks

MongoRocks 是基于著名的开源KV数据库RocksDB实现的一个MongoDB存储引擎,借助rocksdb的优秀特性,MongoRocks能很好的支持一些高并发随机写入、读取的应用场景 。

MongoDB 存储引擎 MongoRocks

文章插图
 
MongoDB 与 MongoRocks 的关系MongoDB支持多种引擎,目前官方已经支持了mmapv1、wiredtiger、in-Memory等,而MongoRocks则是第三方实现的存储引擎之一(对应图中红框的位置) 。
MongoDB 存储引擎 MongoRocks

文章插图
 

MongoDB 存储引擎 MongoRocks

文章插图
专栏
Spring Cloud Alibaba微服务实战
作者:软件架构
29.8币
71人已购
查看MongoDB KV存储引擎模型MongoDB 从 3.0 版本 开始,引入了存储引擎的概念,并开放了 StorageEngine 的API 接口,为了方便KV存储引擎接入作为 MongoDB 的存储引擎,MongoDB 又封装出一个 KVEngine 的API接口,比如官方的 wiredtiger 存储引擎就是实现了 KVEngine 的接口,MongoRocks 也是实现了KVEngine的接口 。
MongoRocks 适用场景目前 MongoRocks 在业内已广泛使用,诸如缓存冷数据等均使用 MongoRocks 引擎 。
(1)时延毛刺要求极高的场景
【MongoDB 存储引擎 MongoRocks】实践发现 WiredTiger 引擎的 cache 大于索引大小时性能表现出色,但索引不完全在内存时数据库会触发 eviction,此时请求的延迟会大幅增大,而 MongoRocks 性能平稳很多 。
(2)多表场景
在 WiredTiger 引擎中,每个表和索引被单独存储为一个文件,当表个数过多时硬盘上会产生大量小文件,严重影响性能 。从实践经验来看,当集合个数达到数千个以后数据库的性能将变差 。而 MongoRocks 引擎不会为每个表创建一个文件,可以避免该问题 。
(3)冷数据存储场景
冷数据的场景下,为成本考虑,通常会将冷数据存放在 SATA 等廉价存储介质上,WiredTiger 引擎在机械硬盘上性能表现也不如意,特别是 eviction 情况下,而 MongoRocks 引擎会将 I/O 的随机写转换为顺序写,这对机械硬盘非常友好 。




    推荐阅读