CData Streaming API サポートで Amazon Athena のパフォーマンスを最大 4 倍に向上



Amazon Athena は、Amazon S3 に保存されたデータへの高速な SQL ベースのアクセスを可能にする人気のサーバーレスクエリエンジンです。CData Amazon Athena JDBC ドライバーは、構造化データや半構造化データセットへの高パフォーマンスなアクセスを提供し、長年にわたり Athena ユーザーに堅牢な接続機能を提供してきました。

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 日間の無料トライアルをダウンロードして、クラウド分析スタックでストリーミングパフォーマンスの力を解き放ちましょう!ご不明な点がございましたら、サポートチームがいつでもお手伝いいたします。