MongoDB ドライバーのパフォーマンス比較
この記事の計測結果は、2019年6月時点で利用可能な最新のドライバーを使用して得られたものです。
この記事では、CData の MongoDB 用ドライバーのパフォーマンスを、他の2社(競合1、競合2)の同等の技術、および MongoDB, Inc. が提供する「ドライバー」と比較します。MongoDB からデータをクエリし、結果セットを処理するのにかかる時間を測定することで、読み取りパフォーマンスを比較しました。
ドライバーを並べて比較するため、マシン自体のパフォーマンスは比較的重要ではありません。重要なのは、ドライバー間の相対的な比較です。
データ
再現可能な比較を提供するために、MongoDB, Inc. が公開しているサンプルの restaurants データセットをコピーし、このサンプルデータをもとに段階的に大きなデータセットを作成しました。クエリ対象のテーブルの詳細は以下のとおりです。
| テーブル | 行数 |
|---|---|
| restaurants | 25,360 |
| restaurants_2 | 2,003,362 |
| restaurants_3 | 10,016,805 |
クエリ
この調査の主な目的は、ドライバー間の相対的なパフォーマンスを比較することでした。各ドライバーで同じクエリを実行することで比較を行いました。単に MongoDB からデータを読み取るだけでなく、実際のデータ処理をシミュレートするために、各行の値を文字列変数に格納しました(この変数は各行ごとに置き換えられます)。使用したクエリは以下のとおりです。
- SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants
- SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants_2
- SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants_3
結果
以下に、ドライバー/プラットフォームごとの各クエリのパフォーマンスを示します。
JDBC / Java ドライバー
比較対象の4社すべてが、Java アプリケーションで MongoDB データをネイティブに扱える JDBC ドライバーまたは同等の技術を提供しています。シンプルな Java アプリケーションでクエリ結果を処理した結果は以下のとおりです。
| 会社別 JDBC/Java クエリ時間(ミリ秒) | ||||
|---|---|---|---|---|
| クエリ | CData Software | 競合1 | 競合2 | MongoDB, Inc. |
| 1(約25,000行) | 59.3 (-15% - +28%) | 62.8 | 50.4 | 75.7 |
| 2(約2,000,000行) | 1,548.9(最大 +200%) | 1,555.6 | 3,035.5 | 4,646.7 |
| 3(約10,000,000行) | 10,195.1 (+6% - +174%) | 10,795.3 | 17,798.8 | 27,991.9 |
結果からわかるように、CData ドライバーは大規模な結果セットを、他のドライバーと同等以上の速度で処理できました。最も遅い競合製品と比較して、2倍以上の速度で結果を取得・処理できることも珍しくありません。CData ドライバーが遅い場合でも、その差はほとんど気づかない程度であり、ライブスキーマ検出を実行するためのトレードオフによるものです。
各クエリ(大規模データセット)の平均実行時間を以下のチャートで比較しています。
結論
CData Software のドライバーは、特に大規模なデータセットを扱う場合に、競合製品よりも高速であることが多いです。ドライバーが遅い場合でも、その差はほとんど気づかない程度(10ミリ秒未満)であり、他のプロバイダーよりも NoSQL データを深く掘り下げるライブスキーマ検出のトレードオフです。NoSQL データ(MongoDB に格納されているデータなど)を扱うための革新的な手法については、NoSQL ドライバー機能比較をご覧ください。
速度は一つの指標にすぎませんが、ドライバーのパフォーマンスは、すべてのドライバーとデータアクセス技術に組み込まれた深い技術力の強力な指標です。開発者たちは、MongoDB データベースから返される結果の処理パフォーマンスを最適化するために多くの時間を費やしてきました。その結果、ドライバーはネットワークトラフィックとサーバー処理時間によってのみ制限されているように見えるほどです。
関連記事
- NoSQL ドライバー:機能比較 - さまざまなベンダーのドライバーが、NoSQL データソースの複雑なクエリやデータセットをどのように処理するかを比較します。
- CData NoSQL 概要 - NoSQL を扱う際に CData のドライバー技術を際立たせる機能について説明します。

