<返回更多

MongoDB 存储引擎 MongoRocks

2020-08-21    
加入收藏

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

MongoDB 存储引擎 MongoRocks

 

MongoDB 与 MongoRocks 的关系

MongoDB支持多种引擎,目前官方已经支持了mmapv1、wiredtiger、in-Memory等,而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)时延毛刺要求极高的场景

实践发现 WiredTiger 引擎的 cache 大于索引大小时性能表现出色,但索引不完全在内存时数据库会触发 eviction,此时请求的延迟会大幅增大,而 MongoRocks 性能平稳很多。

(2)多表场景

在 WiredTiger 引擎中,每个表和索引被单独存储为一个文件,当表个数过多时硬盘上会产生大量小文件,严重影响性能。从实践经验来看,当集合个数达到数千个以后数据库的性能将变差。而 MongoRocks 引擎不会为每个表创建一个文件,可以避免该问题。

(3)冷数据存储场景

冷数据的场景下,为成本考虑,通常会将冷数据存放在 SATA 等廉价存储介质上,WiredTiger 引擎在机械硬盘上性能表现也不如意,特别是 eviction 情况下,而 MongoRocks 引擎会将 I/O 的随机写转换为顺序写,这对机械硬盘非常友好。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>