Amazon Athena JDBC & ODBC ドライバーのパフォーマンス比較
この記事のベンチマークは、2018年3月時点で利用可能な最新のドライバーを使用して計測しました。
Amazon Athena は、標準 SQL を使用して Amazon S3 内のデータを簡単に分析できるインタラクティブなクエリサービスです。CData Drivers for Amazon Athena を使用すると、JDBC や ODBC などの標準インターフェースを通じて、クエリを最高レベルのパフォーマンスで実行できます。
準備
この記事では、Amazon 公式の ODBC Driver for Amazon Athena 1.0.11 と CData Software ODBC Driver for Amazon Athena3、および Amazon 公式の JDBC Driver for Amazon Athena 1.0.22 と CData Software JDBC Driver for Amazon Athena4 を比較します。再現性のある比較を行うために、JFairy ライブラリを使用してサンプルデータを生成しました。簡単な Java アプリケーションのソース(必要なライブラリ付き)をダウンロードして、独自のサンプルデータを作成できます。
テストマシンのスペックは以下のとおりです:
オペレーティングシステム:Windows 10
プロセッサ:Intel® CoreTM i7-6700 CPU @ 3.40GHz
メモリ(RAM):8.00 GB
システムの種類:64 ビット オペレーティングシステム
ドライバーを並べて比較するため、マシン自体のパフォーマンスは相対的に重要ではありません。重要なのは、ドライバー同士を比較した際の相対的なパフォーマンスです。
比較
テストに使用したテーブルの詳細は以下のとおりです:
| テーブルサイズ | テーブルの行数 | カラム数 | ||
|---|---|---|---|---|
| 1.2 GB | 6,000,000 | 19 |
この調査の主な目的は、ドライバーの相対的なパフォーマンスを比較することでした。各ドライバーで同じクエリを実行して計測しました。実行したクエリは以下のとおりです:
- SELECT * FROM [table] LIMIT 100000
- SELECT * FROM [table] LIMIT 1000000
- SELECT * FROM [table] LIMIT 6000000
結果
ODBC ドライバーのテストでは、ADO.NET コンソールアプリケーションから DSN を使用して Athena に接続し、上記のクエリを繰り返し実行しました。結果を読み取り、各行のすべてのフィールドを新しいオブジェクト変数に格納しました。JDBC ドライバーのテストでは、java.sql ライブラリを使用した簡単な Java アプリケーションで同じ動作をモデル化しました。以下のチャートに表示されている時間は平均値に基づいており、ネットワークトラフィックのスパイクなどによる外れ値を平準化しています。
| ドライバー別クエリ実行時間(秒) | ||||
|---|---|---|---|---|
| クエリ | Amazon ODBC | CData ODBC | Amazon JDBC | CData JDBC |
| 1(100,000 行) | 45.34 | 10.46 (3 倍以上高速) | 42.74 | 6.84 (5 倍以上高速) |
| 2(1,000,000 行) | 427.09 | 47.29 (8 倍以上高速) | 435.53 | 36.22 (11 倍以上高速) |
| 3(6,000,000 行) | 2,396.64 | 206.55 (10 倍以上高速) | 2,604.46 | 191.58 (12 倍以上高速) |
結果からわかるように、CData ドライバーは大規模な結果セットを処理する際に Amazon ドライバーを大幅に上回り、3 倍から 12 倍以上の速度で結果を取得・処理しました。結果セットのサイズが大きくなるほど、パフォーマンスの差はさらに顕著になりました。
大規模な 2 つのクエリの平均実行時間を以下のチャートで比較します:
結論
CData ドライバーのパフォーマンスは、Amazon 公式ドライバーを大幅に上回っています。CData の開発者は、Amazon から返される結果の処理パフォーマンスを最適化するために数え切れないほどの時間を費やしてきました。その結果、ドライバーのボトルネックは Web トラフィックとサーバー処理時間のみになっています。このパフォーマンスの優位性は、大量のデータを処理する必要がある場合に特に顕著です。

