NoSQL ドライバーのパフォーマンス比較
この記事のメトリクスは、2017年7月時点で利用可能な最新ドライバーを使用して計測されました。最新のパフォーマンス指標については、更新された記事をご覧ください。
この記事では、CData MongoDB ドライバーのパフォーマンスを、2社の競合他社(競合1、競合2)が提供する同等技術、および MongoDB, Inc. が提供する「ドライバー」と比較しています。MongoDB からデータをクエリして結果セットを処理するのにかかる時間を測定し、読み取りパフォーマンスを比較しました。
テストマシンの仕様は以下のとおりです:
オペレーティングシステム:Windows 10
プロセッサ:Intel® CoreTM 2 Quad CPU Q8400 @ 2.66GHz
メモリ(RAM):6.00 GB
システムタイプ:64ビット オペレーティングシステム
ドライバーを横並びで比較しているため、マシン自体のパフォーマンスはそれほど重要ではありません。重要なのは、ドライバー同士を相対的に比較した結果です。
データ
再現可能な比較を行うため、MongoDB, Inc. が一般公開しているサンプルの restaurants データセットをコピーし、そのサンプルデータをベースに段階的に大きなデータセットを構築しました。クエリ対象のテーブルの詳細は以下のとおりです:
| テーブル | 行数 |
|---|---|
| restaurants | 25,360 |
| restaurants_2 | 2,003,362 |
| restaurants_3 | 10,011,962 |
クエリ
この調査の主な目的は、ドライバーの相対的なパフォーマンスを比較することでした。各ドライバーで同じクエリを実行することで比較を行いました。単に 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行) | 0.9 (-56% - +33%) | 0.4 | 1.2 | 0.5 |
| 2(約2,000,000行) | 6.3 (+44% - +138%) | 15.1 | 9.1 | 13.2 |
| 3(約10,000,000行) | 30.6 (+95% - +173%) | 89.2 | 94.1 | 67.3 |
結果からわかるように、CData ドライバーは他のドライバーよりも大きな結果セットを高速に処理でき、2倍以上の速度で結果を取得・処理することがよくありました。CData ドライバーが遅い場合でも、その差はほとんど気にならない程度であり、これはライブスキーマ検出を実行しているためです。
大規模データセットの各クエリの平均実行時間を以下のグラフで比較しています:
ADO.NET Provider / C# ドライバー
CData Software と MongoDB, Inc. の2社が、.NET アプリケーションで MongoDB データにネイティブ接続できる製品を提供しています。CData Software は ADO.NET Provider を、MongoDB, Inc. は独自の C# および .NET MongoDB Driver を提供しています。各製品が結果を処理するのに要した時間は以下の表のとおりです。
| 企業別 ADO.NET/C# クエリ時間(秒) | ||
|---|---|---|
| クエリ | CData Software | MongoDB, Inc. |
| 1(約25,000行) | 1.4 (-44%) | 0.8 |
| 2(約2,000,000行) | 12.7 (+161%) | 33.1 |
| 3(約10,000,000行) | 60.8 (+215%) | 191.4 |
結果からわかるように、CData ADO.NET Provider は MongoDB, Inc. の C# ドライバーよりも大きな結果セットを高速に処理でき、最大のデータセットでは MongoDB, Inc. のドライバーの3倍以上の速度で処理しました。
大規模データセットの各クエリの平均実行時間を以下のグラフで比較しています:
まとめ
CData Software のドライバーは、特に大規模なデータセットを扱う際に、競合他社の同等製品よりも高速であることが常に証明されています。ドライバーが遅い場合でも、その差はほとんど気にならない程度(多くの場合0.5秒未満)であり、これはライブスキーマ検出とのトレードオフです。速度は1つの指標にすぎませんが、ドライバーのパフォーマンスは、すべてのドライバーとデータアクセス技術に組み込まれた深い技術力の強力な指標となります。私たちの開発者は、MongoDB データベースから返される結果の処理パフォーマンスを最適化するために数え切れないほどの時間を費やし、ドライバーがネットワークトラフィックとサーバー処理時間によってのみ制限されるレベルにまで達しています。
関連記事
- NoSQL ドライバー:機能比較 - さまざまなベンダーのドライバーが、NoSQL データソースからの複雑なクエリや複雑なデータセットをどのように処理するかを比較します。
- CData NoSQL 概要 - NoSQL を扱う際に CData ドライバー技術を際立たせる機能について説明します。



