Mongodb引擎RocksDB系列----初识RocksDB

举报
shm 发表于 2018/03/19 08:59:10 2018/03/19
【摘要】 Mongodb引擎RocksDB系列----初识RocksDBRocksDB简介RocksDB由facebook开创和维护(项目git址:https://github.com/facebook/rocksdb), 该项目旨在开发一个与快速存储器(尤其是闪存)存储数据性能相当的数据库软件,以应对高负载服务。RocksDB官网(https://rocksdb.org)首页头条注明了其项目的宗旨:...

Mongodb引擎RocksDB系列----初识RocksDB

RocksDB简介

RocksDB由facebook开创和维护(项目git址:https://github.com/facebook/rocksdb), 该项目旨在开发一个与快速存储器(尤其是闪存)存储数据性能相当的数据库软件,以应对高负载服务。RocksDB官网(https://rocksdb.org)首页头条注明了其项目的宗旨:RocksDB是一个可嵌入的,持久型的key-value存储,为了更快速的存储环境而生。RocksDB起源Leavel DB,在Level DB的基础上优化而成,其在写性能上有了很大的提升。

MongodbRocksDB的关系

mongodb从3.2版本开始支持多数据存储引擎(WiredTiger,MMAPv1, In-Memory),其中WiredTiger为MongDB默认的存储引擎。所谓的多数据储存引擎形象的说就是拔插式引擎,你想使用哪个引擎就插入这个引擎并拔掉前面的引擎就可以使用了,简单方便快捷。Mongodb提供整个数据库集群的管理工作,而真正将数据持久化的则是数据存储引擎。

 

mongodb多引擎.jpg

                           Mongodb和存储引擎之间的关系

Mongodb 集成RocksDB

要将RocksDB集成到Mongodb中,首先需要RocksDB实现Mongodb 的Engine API,这样mongodb通过操作Engine API 来存储数据而不用关注真正的数据存储引擎是什么。RocksDB由于是一款独立的数据存储引擎,facebook并没有实现mongodb Engine API, 因此需要使用第三方提供的开源软件Mongo-rocks(git :https://github.com/mongodb-partners/mongo-rocks).

mongo-rock.jpgmongo-rock.jpg

     安装和编译RocksDB:

RocksDB依赖一些开源第三方软件,需要先安装这些软件:

gflags

         unzip gflags-2.0.zip

cd gflags

./configure && make && sudo make install

     Snappy:

         tar -xzvf snappy-1.1.4.tar.gz

cd snappy-1.1.4

./configure && make && sudo make install

     zlib, zlib-devel, bzip2, bzip2-devel:

         sudo yum install zlib

sudo yum install zlib-devel

sudo yum install bzip2

sudo yum install bzip2-devel

     zstd:

         tar zxvf zstd-1.1.3.tar.gz

cd zstd-1.1.3

make && sudo make install

     编译 rocksdb:

注意:rocksdb版本向后兼容的,因此最新的版本都是可以集成的,本文档以5.4.10版本为例。其中rocksdb-rocksdb-5.4.10为编译的rockdb源码目录.

          cd rocksdb-rocksdb-5.4.10; USE_RTTI=1 CFLAGS=-fPIC make shared_lib;sudo INSTALL_PATH=/usr make install

     编译mongo-rock mongod:

         注意:其中mongo-r3.2.18为mongodb源码目录,mongo-rocks-r3.2.18为mongo-rocks的源码目录.

mkdir -p /data/mongodb/shm/mongo-r3.2.18/src/mongo/db/modules/;

ln -sf /data/mongodb/shm/mongo-rocks-r3.2.18 /data/mongodb/shm/mongo-r3.2.18/src/mongo/db/modules/rock;

cd /data/mongodb/shm/mongo-r3.2.18; scons MONGO_VERSION=3.2.18 all --ssl  -j 16  --opt=off;

     启动mongod:

        执行完上述的编译步骤后,编译出来的mongod的存储引擎就是RocksDB了,启mongod的时候带参数--storageEngine=rocksdb 即可(详尽的参数可以参考文章https://www.percona.com/doc/percona-server-for-mongodb/3.4/mongorocks.html).


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。