MongoDB Driver のパフォーマンス比較



本記事では、2019年6月時点で入手可能なドライバーをそれぞれ利用しています。

本記事では、他の2社(Competitor 1 およびCompetitor 2)とMongoDB, Inc. が提供する同様のドライバーとCData のドライバー製品のパフォーマンスを比較しています。同じデータセット・同じクエリを使ってデータの読み出しクエリの実行時間を比較しました。

パフォーマンスはマシンのスペックに左右されますが、同じマシンで行った結果としてドライバーの相対的なパフォーマンス比較になっています。

使用データ



再現可能な比較とするために、restaurants dataset (made publicly available by MongoDB, Inc.) を複製して、より大容量のデータセットとして使用しました。クエリされたテーブルは次の通り:

Table Number of Rows
restaurants 25,360
restaurants_2 2,003,362
restaurants_3 10,016,805

クエリ



本記事の目的はドライバーのパフォーマンス比較です。それぞれのドライバーで同じクエリを実行しています。クエリ結果はstring 値として保存しています。クエリは次の通り:

  1. SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants
  2. SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants_2
  3. SELECT borough, restaurant_id, _id, cuisine, name FROM restaurants_3

結果



ドライバー/プラットフォームごとのクエリ結果は次のとおり:

JDBC / Java Drivers

それぞれの企業は、JDBC Driver もしくはMongoDB データをJava アプリケーションからクエリ可能なテクノロジーを提供しています。シンプルなJava アプリケーションからのクエリ実行結果は次のとおり:

JDBC/Java Query Times by Company (in milliseconds)
Query CData Software Competitor 1 Competitor 2 MongoDB, Inc.
1 (~25,000 rows) 59.3 (-15% - +28%) 62.8 50.4 75.7
2 (~2,000,000 rows) 1,548.9 (up to +200%) 1,555.6 3,035.5 4,646.7
3 (~10,000,000 rows) 10,195.1 (+6% - +174%) 10,795.3 17,798.8 27,991.9

CData Drivers は、他社のドライバーと同等もしくはより高いパフォーマンスでのクエリが可能でした。最もパフォーマンスの悪かったドライバーと比べると2倍以上のパフォーマンスとなりました。同等のパフォーマンスでもCData Drivers がリアルタイムでのスキーマ検出を行っていることは言及すべきです。

より大きなデータセットでの平均実行時間は次のとおり:

Results for ~2,000,000 Rows

Results for ~10,000,000 Rows

まとめ



CData Software のドライバーは、他社のドライバー製品や同様の製品より高いパフォーマンスが得られることが確認できました。特にデータセットが大きな場合には差が顕著です。やや遅い場合でもその差は10ミリ秒程度と少なく、リアルタイムスキーマ検出という他社のドライバーにはないNoSQL を深くドリルダウンできる機能によるものと考えています。

パフォーマンスは、一つの側面ですが、CData Software がデータ連携において高い知見を持ち製品実装を行っていることの指標となります。CData では、ユーザーのスムーズなデータ連携をサポートするために、機能およびパフォーマンスの向上に日々努めています。

Related Articles