MongoDB爱好者
垂直技术交流平台

MongoRocks 4.0 is Coming !

前言

MongoRocks 4.0来啦!各大云商/互联网公司内部用户/国内RocksDB开发者/不熟悉WiredTiger的朋友/开源技术爱好者快来关注一下。

 

前生今世

RocksDB是一款优秀的存储引擎,具有高度可调参性,极致数据压缩比。RocksDB在国内非常活跃,各大云商/公司内部几乎都有数款基于RocksDB引擎的存储系统。国内外基于RocksDB的存储项目也如雨后春笋,比如TIKV/TIDB,TerarkDB,MyRocks,CockRoachDB等等。

MongoDB作为Nosql文档型数据库中的首把交椅,官方支持Mmap和WiredTiger两种引擎。而MongoRocks,指的是MongoDB对RocksDB引擎的适配,RocksDB在其中的作用等同于Mmap和WiredTiger。

MongoDB 3.2与MongoDB 3.4系列支持RocksDB引擎,该引擎早期由Facebook的RocksDB团队和MongoDB公司的工程师合作完成,主要由原Facebook的IgorCanadi和Percona的Igorsol维护。国内各大云商也支持MongoRocks引擎的售卖。然而由于MongoDB 4.0多文档事务的引入,MongoDB代码经历了巨大的重构,MongoRocks 4.0的推出,也遇到了技术上的困难。

就在不久前,华人工程师wolfkdy向MongoRocks项目提交了一个接近5000行的mr,该mr的review由IgorCanadi和wolfkdy共同完成。该mr的合入,标志着MongoRocks 4.0的来临。

 

RocksDB vs WiredTiger

本文中不打算对比其优缺点,容易引起口水仗。只说说它们共同的地方。

RocksDB和WiredTiger均为优秀的kvengine。支持mvcc功能。有着良好的文本压缩率,多核扩展性好。然而WiredTiger 3.0 支持比较前沿的Timestamp Ordering Transaction(T/O)技术,这一点是RocksDB所不具备的,这也是为何MongoRocks 4.0迟迟无法推出的最主要的原因。而wolfkdy最主要的工作,就是对这一部分的补完,网上对T/O技术的介绍并不多,这一篇MongoDB的事务,时间戳与混合逻辑时钟是属于结合MongoDB多文档事务介绍的比较好的。

 

谁在维护

MongoRocks 4.0是基于MongoDB 4.0.3 的代码构建的,MongoDB 4.0.3遵从AGPL协议,选择这个版本并没有特殊的原因。MongoDB 4.0系列的中间层的差异并不大。

随着MongoRocks 4.0的推出,wolfkdy成为了MongoRocks项目的Owner一员。作为MongoRocks项目的Maintainer持续走下去。值得一提的是,这也代表着越来越多的优秀的华人工程师对前沿开源数据库有了更好的掌控力。这位华人工程师wolfkdy就是华为云Nosql团队的数据库工程师–孔德雨。孔德雨也是MongoDB中文社区组委会成员,与其他MongoDB专家共同致力于MongoDB社区平台建设。

 

如何构建MongoRocks 4.0

Execute this series of commands to compile MongoDB with RocksDB storage engine:

# install compression libraries (zlib, bzip2, snappy):
sudo apt-get install zlib1g-dev; sudo apt-get install libbz2-dev; sudo apt-get install libsnappy-dev
# get rocksdb
git clone https://github.com/wolfkdy/rocksdb.git
git checkout fb5.18_totdb
# compile rocksdb
cd rocksdb; USE_RTTI=1 CFLAGS=-fPIC make static_lib; sudo INSTALL_PATH=/usr make install; cd ..
# get mongo
git clone https://github.com/mongodb/mongo.git
git checkout tags/r4.0.3 -b branch_tags_4.0.3
# get mongorocks
git clone https://github.com/mongodb-partners/mongo-rocks
git checkout v4.0
# add rocksdb module to mongo
mkdir -p mongo/src/mongo/db/modules/
ln -sf ~/mongo-rocks mongo/src/mongo/db/modules/rocks
# compile mongo
cd mongo; scons

Start mongod using the --storageEngine=rocksdb option.

未来规划

wolfkdy的工作使得RocksDB对T/O技术有了支持,从而MongoRocks 4.2的支持也是呼之欲出的。据小编了解,wolfkdy计划在今年第四季度release MongoRocks 4.2,他正在和MichealCahill, MarkCallaghan以及核心RocksDB开发者商讨RocksDB的T/O事务的规划,以及如何在T/O事务中加上对prepare timeStamp的支持。

同时,他也呼吁更多有能力的国内开发者能加到MongoRocks 4.0以及MongoRocks 4.2(的规划)中来。MongoRocks 4.0标志着国内厂商对MongoDB的掌控力到达了一个较好的水平,更多的人加入,众人拾薪,火苗越来越旺,对国内数据库圈子也是一个好事。有意向者请通过 wolfkdy1989@gmail.com 与之联系。4.2的后续支持,出于license的法律风险,项目的中立性是长久走下去的关键,因此以个人名义而不是以云商的名义来交流是欢迎的。

赞(15)
未经允许不得转载:MongoDB中文社区 » MongoRocks 4.0 is Coming !

评论 抢沙发

评论前必须登录!