Mongodb引擎RocksDB系列----初识RocksDB
Mongodb引擎RocksDB系列----初识RocksDB
RocksDB简介
RocksDB由facebook开创和维护(项目git址:https://github.com/facebook/rocksdb), 该项目旨在开发一个与快速存储器(尤其是闪存)存储数据性能相当的数据库软件,以应对高负载服务。RocksDB官网(https://rocksdb.org)首页头条注明了其项目的宗旨:RocksDB是一个可嵌入的,持久型的key-value存储,为了更快速的存储环境而生。RocksDB起源Leavel DB,在Level DB的基础上优化而成,其在写性能上有了很大的提升。
Mongodb和RocksDB的关系
mongodb从3.2版本开始支持多数据存储引擎(WiredTiger,MMAPv1, In-Memory),其中WiredTiger为MongDB默认的存储引擎。所谓的多数据储存引擎形象的说就是拔插式引擎,你想使用哪个引擎就插入这个引擎并拔掉前面的引擎就可以使用了,简单方便快捷。Mongodb提供整个数据库集群的管理工作,而真正将数据持久化的则是数据存储引擎。
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).
安装和编译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).
- 点赞
- 收藏
- 关注作者
评论(0)