MongoDBの実験的なプラガブルストレージエンジンをRocksDBで試してみた

先月開催されたMongoDB Worldにおいて、MongoDBの創業者でありCTOであるEliot Horowitz氏が、バージョン2.8リリースに向けて「プラガブルストレージエンジン」への対応を発表しました。これは非常に注目すべきニュースです。ユーザーは自身のワークロードに最適なストレージエンジンを選択できるようになり、そのAPIはMongoDBの全機能を完全にサポートする計画であるため、現在享受している機能を犠牲にすることなく利用できるからです。
さらに興味深いのは、同じレプリカセット内のノードそれぞれが異なるストレージエンジンを使用できるという点です。これにより、用途に応じた多彩な構成が可能になります。
ソースコードから実験的機能を試せる
MongoDBが完全にオープンソースであることの大きな利点は、2.8の正式リリースを待つことなく、こうした実験的な機能に触れられるところにあります。GitHubからMongoDBのソースコード一式をクローンしてコンパイルすれば、開発中の実験的機能を組み込んだバイナリを作成できます。
以下では、MongoDB WorldでデモされたRocksDBサンプルストレージエンジンを有効にしてmongoをビルドする手順をご紹介します。
1. 必要な依存パッケージをインストールする
新規インストールしたCentOS 6.5のクラウドインスタンスを前提として、まず基本的な依存関係を取得します。
$ yum groupinstall 'Development Tools'
$ yum install git glibc-devel scons2. ソースコードをクローンする
続いて、GitHubからMongoDBのソースコードを取得します。
$ git clone https://github.com/mongodb/mongo.git3. RocksDBサポートを有効にしてビルドする
あとは、RocksDBサポートを有効にしてソースをコンパイルするだけです。
$ scons --rocksdb=ROCKSDB mongo mongod並列ジョブ数を指定できる-jオプションを使えば、ビルド時間を短縮できます。コンパイル中はマシンを専有することになるため、目安としてはCPUのコア数+1を指定するとよいでしょう。筆者の環境では次のようになりました。
$ scons -j 17 --rocksdb=ROCKSDB mongo mongod実験段階であることに注意
プラガブルストレージエンジンのサポートとRocksDBエンジンは現時点で完全に実験的なものである点に留意してください。masterブランチからはコンパイルできずエラーに遭遇する可能性も十分ありますが、この段階では想定内のことです。開発の進捗を追いかけたい方は、MongoDBの開発者メーリングリストをチェックするのがおすすめです。
RocksDBエンジンでmongodを起動する
コンパイルが完了したら、新しい--storageEngineパラメータを指定してmongodプロセスを起動します。
$ ./mongod --storageEngine rocksExperiment最後に、接続して簡単なドキュメントを挿入し、db.stats()を実行すれば動作確認ができます。すべて順調にいっていれば、RocksDBの統計情報が返却されるはずです。
このように、実験的機能を有効にした状態で環境を立ち上げるのは非常に簡単です。2.8のリリースが近づくにつれ、プラガブルストレージエンジンのコードがどのように進化し、さらにどんな新しいエンジンが発表されるのか楽しみです。
-
MongoDBのディスク使用量を理解する――領域割り当ての仕組みと最適化の判断基準
はじめにMongoDBを使い始めたばかりの方にとって、そのディスク(スペース)使用量は一見すると分かりにくいものです。本記事では、MongoDBがどのようにディスク領域を割り当てるのか、そしてObjectRocketダッシュボードに表示される使用量情報をどう読み解けばよいのかを解説します。これにより、インスタンスのコンパクション(最適化)が必要なタイミングや、シャードを追加して利用可能領域を拡張すべきタイミングを適切に判断できるようになります。検証環境:5GBシングルシャードのMediumインスタンスまず、5GBのシャード1つで構成された真っさらなMediumインスタンスを用意します。このイン
-
MongoDBの実験的なプラガブルストレージエンジンをRocksDBで試してみた
先月開催されたMongoDB Worldにおいて、MongoDBの創業者でありCTOであるEliot Horowitz氏が、バージョン2.8リリースに向けて「プラガブルストレージエンジン」への対応を発表しました。これは非常に注目すべきニュースです。ユーザーは自身のワークロードに最適なストレージエンジンを選択できるようになり、そのAPIはMongoDBの全機能を完全にサポートする計画であるため、現在享受している機能を犠牲にすることなく利用できるからです。さらに興味深いのは、同じレプリカセット内のノードそれぞれが異なるストレージエンジンを使用できるという点です。これにより、用途に応じた多彩な構成が