elasticsearch入門系列">elasticsearch入門系列
1069
2022-05-30
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).
MongoDB
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。