📝

AWS AthenaとS3 Selectの違いについて

2023/03/24に公開

概要

S3内のオブジェクトを分析するサービスにAthenaS3 Selectがあるが両者の違いについて、複雑なクエリを行えるのがAthenaで単一のオブジェクトに対して簡単なクエリを実行できるのがS3 Selectなんやろ?くらいの認識ではっきりとした違いが分からなかったので、少し勉強してみた際のメモです。

Athena

AWS Athenaは、サーバーレスのクエリサービスであり、Amazon S3上の構造化・半構造化データを直接SQLを使用して分析することができます。主に大量のデータを検索・分析する際に適しており、データウェアハウスやビッグデータ分析のために使用される。

特徴

  • サーバーレス
    インフラストラクチャの管理やプロビジョニングが不要で、クエリ実行時にのみコストが発生する。
    実際にスキャンされたデータ量に対してのみ課金が発生され、料金は東京リージョンの場合、スキャンデータ1TBあたり5USDである(2023年3月時点)。
    またクエリを複数のワーカーノードに分散させて並列実行させることができこれにより、クエリの実行時間が短縮される。

  • 結果のキャッシング
    オプションで Query Result Reuseという機能を使うことで、同じクエリを再度実行する際に、結果が 前回のクエリ結果が保存されているS3バケット(キャッシュ)から取得されるため、パフォーマンスが向上し、最大で5倍高速にすることができる。
    クエリの結果を再利用できる期間はデフォルトで60分となっており、最大で7日間まで指定することが可能である。

    • Query Result Reuseを使う条件
      ・クエリ文字列は完全一致
      ・データベースとカタログ名が一致します。
      ・デフォルト60分未満か指定された最大期間より古くないクエリ
      ・現在の実行とまったく同じ結果構成を持つ実行
      ・クエリで参照されているすべてのテーブルにアクセス可能
      ・前の結果が保存されている S3 ファイルの場所にアクセス可能

S3 Select

S3 Selectは、Amazon S3オブジェクト内のデータから特定のデータを抽出するためのサービスです。S3 Selectは、データの一部だけを取り出す際に適しており、全体のデータをスキャンせず、必要なデータだけを効率的に抽出できる。
S3 Selectではデータを取り出す際にフォーマットやデータ型などを指定してその構造に基づいてクエリが実行される。
オブジェクトに対しての簡単なフィルタリングや投影を行う場合に適しており、Athenaのような高度な分析やテーブル管理には適していない。

特徴

  • 効率性
    必要なデータのみを抽出することでデータの転送量や処理時間を削減できる。
    使用できるSELECTコマンドは限られているので、簡単なフィルタリングを行う際に採用される。

  • 対応フォーマット
    S3 Select は、CSVJSON または Apache Parquet 形式で保存されたオブジェクトのみを操作できる。また、GZIPBZIP2 で圧縮されたオブジェクト (CSV と JSON 形式のオブジェクトのみ) や、サーバー側で暗号化されたオブジェクトにも使用することができ、結果の形式 (CSV または JSON) や、結果のレコードを区切る方法も指定することができる。

  • 料金体系
    S3の料金体系はフィルタリングするオブジェクトが配置されているバケットのリージョン、ストレージクラスとデータスキャン量などによって課金される

ex: 東京リージョン標準ストレージクラス(2023/03時点)

スキャンされたデータ (GB あたりの料金) 戻りデータ (GB あたりの料金)
S3 標準 0.00225USD 0.0008USD

https://aws.amazon.com/jp/s3/pricing/

選択のポイント

AthenaとS3 Selectのどちらを選ぶかは、以下のような観点で判断できると考えられる。

  • データサイズ: 大規模なデータセットを対象に分析する場合は、Athenaが適しており、特定のデータのみを効率的に抽出したい場合は、S3 Selectが適している。

  • クエリの複雑さ: 複雑なSQLクエリが必要な場合は、Athenaが適していて、S3 Selectは、シンプルなフィルタリングや投影が主なユースケースである。

  • データの更新頻度: データが頻繁に更新され、リアルタイム性が重要な場合は、S3 Selectが適している。Athenaは、バッチ処理向けのデータ分析に適しており、リアルタイム性はあまり高くない。

  • インテグレーション: データ処理パイプラインとして他のAWSサービスと連携する場合は、S3 Selectが適している。 例えば、S3イベント通知Lambdaと組み合わせてリアルタイムなデータ処理が可能です。Athenaは、データウェアハウスやビッグデータ分析のためにAWS Glue Data Catalog と統合して、スキーマ管理やメタデータの自動検出を行うことができます。

データサイズ クエリの複雑度 リアルタイム性 他サービス連携
Athena Athena S3 Select S3 Select

Athenaは、大規模なデータ分析や複雑なクエリが必要な場合に適しており、S3 Selectは、特定のデータを効率的に抽出して他の処理に渡すようなユースケースに適している。 両者を組み合わせて使用することも可能であり、例えば、S3 Selectを使ってデータを効率的にフィルタリングした後、Athenaでさらなる分析や集計を行うといった方法が考えらる。

Discussion