之前,我们发表过一篇 集成 TerichDB 的 MongoDB 性能测试,TerichDB 是 Terark 公司的第一个数据库产品,整个 DB 全部自主研发,因为使用 Terark 自己的引擎,所以功能非常丰富,性能也非常出色,但是与主流数据库不兼容。
现在,我们最新的 TerarkDB 完全兼容 RocksDB,我们通过实现 RocksDB 的 SSTable,将 Terark 的引擎 plugin 到 RocksDB 中,但是因为 RocksDB 本身的 SSTable 接口不支持两遍扫描,所以我们 fork 了 RocksDB,做了一些小的修改,以支持两遍扫描。更多内容,可以参考 TerarkDB 的 github
通过使用我们修改版的 MongoRocks,我们进一步把我们修改版的 RocksDB 集成到 MongoDB 中,并做了一些性能测试。本文主要描述这个性能测试结果。
以下内容来自 terark 官网的 blog:Mongo on TerarkDB 性能测试
我们将 TerarkDB 集成到了 MongoDB 社区版中,后续我们会逐步发布性能测试报告。 - Terark-Zip-Table 是我们替换了 RocksDB 的 SST (Static Sorted Table) 后的产品 - Mongo-Rocks 是 Facebook 官方适配 RocksDB 作为 MongoDB 存储引擎的产品 - Mongo-Terocks 指使用 TerarkDB 的 Mongo-Rocks - MongoDB 版本为该时间master最新版
我们在开始读性能测试之前,首先批量的将所有数据写入数据库,然后重启服务器后开始测试。需要注意的是,除了数据远小于内存,其它的的读测试均是均匀分布与齐普夫分布测试。
内存受限情况,我们使用 cgroups 达成其中 RocksDB 开启 allow_mmap_reads 选项,BlockSize 为 4kWiredTiger 使用默认配置选项TerarkDB 使用默认配置选项RocksDB 与 TerocksDB 测试客户端均在本机启动WiredTiger 使用文件IO接口读取文件,cgroups 无法限制系统缓存,所以使用内核参数限制内存,此时测试客户端运行在内网其它服务器