踊る犬.netブログ (旧)

MongoDB v2.8.0-rc0 がリリースされた

昨日の深夜に、MongoDB v2.8.0-rc0(Release Candidate) がunstableでリリースされました。Stable releaseまでいよいよ秒読み開始です。
個人的にアツイのは「Improved Concurrency」なので少し説明します。

ドキュメントレベルのロック

待ちに待ったdocument-level lockingです。
MongoDBは書き込みが弱い事が自分の中で有名(笑)ですが、それが大幅に改善されます。

MongoDB 2.6(stable)では、データベースレベルの書き込みロックです。
つまり、あるデータベースのコレクションに対して書き込みを行っている間は、同じデータベースのどのコレクションに対する読み書きもできないということです。
これがドキュメントレベルになることによって、同一のドキュメント以外なら読み書きできるようになる、という事です。

下図は、カンファレンスでのデモンストレーションの様子のキャプチャです。
同時に複数のクライアントが書き込みオペレーションを実行しています。
赤いグラフで縦軸が書き込み数です。左側の小さい山がdb-level lockingで、右の大きな山がdoc-level lockingです。
書き込みパフォーマンスが大幅に改善している事がわかります。

昔は書き込みロックはグローバルだったのを考えると、やっとまともに使えるようになったなぁという感じです。

そのほかのアップデート

プラッガブルなストレージエンジン

MongoDBのストレージエンジンはあんまり性能が良くない事で評判なんですが、プラッガブルになった事でMySQLみたいに付け替え可能になりました。
これで有志による性能がより高いストレージエンジンの開発が期待されます。

圧縮

On-dick compressionによってI/O効率が30〜80%よくなるそうです。

参考

さらに詳しい情報は以下をチェックしてください。