CData Streaming API サポートで Amazon Athena のパフォーマンスを最大 4 倍に向上
Amazon の Streaming API への対応により、CData Amazon Athena JDBC ドライバーは大幅なパフォーマンス向上を実現しました。特に、大量の結果セットを返すクエリや、高い同時実行性が求められるシーンで効果を発揮します。Streaming API により、メモリオーバーヘッドの削減、レイテンシの低減、そしてエンドツーエンドの実行時間の大幅な改善が可能になります。
この記事では、新しい Streaming API モードを使用して達成されたパフォーマンス向上をベンチマークし、さまざまな行数において標準の Native JDBC モードと比較しています。テスト結果によると、CData JDBC ドライバーによる Streaming API 実装は、特に小〜中規模のデータボリュームにおいて最大 4 倍高速になることが示されています。
テスト構成
主なテストパラメータは以下のとおりです。
- ソース: すべてのクエリは Amazon S3 データに対して実行
- テスト対象ドライバー: Native Athena JDBC vs CData Amazon Athena JDBC ドライバー
- 使用した API: S3 Fetcher (CSV)、Streaming API (JSON)
- PageSize: Streaming API では 1,000,000 に設定
- 除外項目: JSON API は過度な遅延(100 万行で 1400 秒超)のため除外
- 実装の詳細: CData ドライバーのテストは、GetQueryResults API を拡張し、JsonStreamRows メソッドを使用して結果を解析する新しい GetQueryResultsStream API の実装に基づいています
- テスト回数: 各テストは 4 回実施し、平均値、最小値、最大値を記録
- 比較モード:
- Native JDBC API
- CData JDBC ドライバー(Streaming API)
Native JDBC ドライバー: S3
このベースラインテストでは、Native ドライバーが S3 から CSV ファイルとして結果を取得する性能を評価しています。
| 行数 | 平均 (秒) | 最小 (秒) | 最大 (秒) |
|---|---|---|---|
| 1K | 4.17 | 3.13 | 6.04 |
| 10K | 3.67 | 3.38 | 3.94 |
| 100K | 6.70 | 6.74 | 7.11 |
| 500K | 21.22 | 16.43 | 33.26 |
| 1M | 35.22 | 33.39 | 38.02 |
| 2M | 66.56 | 63.04 | 74.02 |
所見: Native JDBC では、S3 Fetcher が直接 CSV ストリーミングを行うため、Streaming よりも常に高速です。
Native JDBC ドライバー: Streaming API
ここでは、Native ドライバーが JSON 行を返す Streaming API を使用しています。
| 行数 | 平均 (秒) | 最小 (秒) | 最大 (秒) |
|---|---|---|---|
| 1K | 4.17 | 3.13 | 6.04 |
| 10K | 3.67 | 3.38 | 3.94 |
| 100K | 6.70 | 6.74 | 7.11 |
| 500K | 21.22 | 16.43 | 33.26 |
| 1M | 35.22 | 33.39 | 38.02 |
| 2M | 66.56 | 63.04 | 74.02 |
所見: Native ドライバーの Streaming API は、S3 Fetcher よりも性能が劣り、特に大規模データセットではレイテンシが高くなる傾向があります。
CData Amazon Athena JDBC ドライバー: S3
CData JDBC ドライバーの S3 fetcher は、最適化された CSV 読み込みを活用して高速アクセスを実現します。
| 行数 | 平均 (秒) | 最小 (秒) | 最大 (秒) |
|---|---|---|---|
| 1K | 1.90 | 0.29 | 6.46 |
| 10K | 2.20 | 0.56 | 6.00 |
| 100K | 3.30 | 1.05 | 8.67 |
| 500K | 7.45 | 4.71 | 14.95 |
| 1M | 14.61 | 10.53 | 22.60 |
| 2M | 28.59 | 21.39 | 44.49 |
所見: CData JDBC ドライバーの S3 モードは、Native JDBC の Streaming API と比較しても、常に優れたパフォーマンスを発揮します。
CData Amazon Athena JDBC ドライバー: Streaming API
これはドライバーの最新機能で、メモリオーバーヘッドを削減し、同時実行性を向上させながら JSON 行をストリーミングします。
| 行数 | 平均 (秒) | 最小 (秒) | 最大 (秒) |
|---|---|---|---|
| 1K | 1.97 | 0.41 | 4.75 |
| 10K | 1.06 | 0.57 | 2.49 |
| 100K | 3.17 | 2.46 | 4.30 |
| 500K | 13.17 | 11.00 | 17.40 |
| 1M | 30.40 | 25.50 | 33.30 |
| 2M | 55.75 | 48.72 | 64.39 |
所見: 10K 行では、Streaming API はわずか 1.06 秒で完了し、Native の 3.67 秒と比較して約 4 倍高速です。
比較分析: ストリーミングが遅くなる場合がある理由
小規模データでは速度面のメリットがある一方、大規模データセットでは S3 の方がストリーミングよりも優れています。その要因をいくつか見てみましょう。
- データ形式: ストリーミングは JSON 行を返しますが、S3 は CSV を返すため、パースが高速です。
- リクエスト処理: S3 fetcher は単一の CSV ファイルをストリーミングしますが、Streaming API は PageSize を大きく設定しても結果をページネーションします。
- シリアライゼーションのオーバーヘッド: Athena は S3 から読み取り、行を JSON としてシリアライズする必要があり、API 側のレイテンシが増加します。
ドライバー全体の効率性
CData Amazon Athena JDBC ドライバーは、すべての構成において Native JDBC ドライバーを一貫して上回るパフォーマンスを発揮します。
| 行数 | Native JDBC (秒) | CData JDBC (秒) | 向上率 |
|---|---|---|---|
| 1K | 4.17 (Stream) | 1.90 (S3) | 約 2.2 倍 |
| 10K | 3.67 (Stream) | 1.06 (Stream) | 約 3.5 倍 |
| 100K | 6.54 (S3) | 3.17 (Stream) | 約 2.1 倍 |
| 500K | 15.16 (S3) | 7.45 (S3) | 約 2.0 倍 |
| 1M | 28.91 (S3) | 14.61 (S3) | 約 2.0 倍 |
| 2M | 49.34 (S3) | 28.59 (S3) | 約 1.7 倍 |
Streaming API サポートの導入により、CData Amazon Athena JDBC ドライバーは、リアルタイム分析、データ取り込みパイプライン、高速データプレビューの可能性を大きく広げます。
主なメリット:
- 小〜中規模のクエリで低レイテンシを実現
- 行レベルのストリーミングによりメモリフットプリントを削減
- Native 実装と比較して一貫した 2〜4 倍の高速化
- 組み込みの API モード選択によるシンプルなデプロイメント
CData で Amazon Athena のクエリをより高速かつスマートに
リアルタイム分析やアドホックレポートに Athena を活用している組織にとって、Streaming API 対応の CData Amazon Athena JDBC ドライバーを採用することで、明確なパフォーマンス上のメリットが得られます。ダッシュボードの構築、データ処理パイプラインへのデータ取り込み、ユーザー向けクエリの最適化など、Streaming API は比類のない速度と効率性を提供します。
さっそく始めてみませんか?30 日間の無料トライアルをダウンロードして、クラウド分析スタックでストリーミングパフォーマンスの力を解き放ちましょう!ご不明な点がございましたら、サポートチームがいつでもお手伝いいたします。