Go
MongoDB
golang
RethinkDB

RethinkDB vs MongoDB 性能比較

More than 5 years have passed since last update.

最近 RethinkDB がいいらしいと聞いたので、MongoDB と性能面で比べてみました。機能的な比較は公式サイトの Technical comparison: RethinkDB and MongoDB を参照してください。

重要: RethinkDB はまだベータ扱いなので、開発中のものとして見てください。正式リリースまでに性能が変化する可能性もあります。


テスト

テスト環境は CoreOS on VMware Fusion で、それぞれ別の Docker コンテナで起動させました。バイナリは公式提供されているものを使用。シングル構成でクラスタリングはしていません。


  • ベースコンテナ: ubuntu:saucy

  • Linux Kernel: 3.13.6+

  • RethinkDB: 1.11.3

  • MongoDB: 2.4.9

クライアントは Go 1.2.1 で書いて、CoreOS 上で動かしました(ソースコード)。MongoDB のドキュメントで使われている zips.json にある 29469 件の zip コードの JSON を投入するのにかかった時間と、読み込みにかかった時間を計測しました。


結果

Write
Read

RethinkDB
19.914507s
0.928185s

MongoDB
5.040683s
0.167371s

圧倒的ではないか、MongoDB は。

というわけで、単純に読み書き性能を期待するなら MongoDB を選ぶべきです。

ただ、RethinkDB には面白い機能がいくつかあって、テーブルの join ができたり、ReQL を組み立てることでサーバサイドでデータを変形したり、sharding や replication を簡単に構成できたりします。MongoDB のように最初にでっかいファイルを allocate することも、3台以上の奇数台じゃないと replication をうまく構成できないなんてこともありません。

そういうところに魅力を感じるのであれば、RethinkDB を試してみるのもいいでしょう。とはいえ、自動フェイルオーバーはまだできないんですけどね...。

今後の RethinkDB に期待ですね!


参考