概要
AWS上でデータ分析をする上で、登場するS3 SelectとAthenaとRedshift Spectrum。これらのサービスの違いがわかっておらず混同しがちだったため、主に使いどころの観点からサービスの違いを勉強してみました。
S3 Select
S3に保存されているオブジェクトに対してSQLを使用して 必要なデータのみ取得できるサービス。S3に保存されたデータから特定のデータを効率的に取り出すことに特化している。
使いどころ
- 単一のオブジェクトに対してSQLを実行するケース
S3 Selectを実行する時に指定するパラメータ
- S3のバケット名、オブジェクト名
- 入力データのフォーマット形式
- 圧縮の有無
- 出力形式
- 実行するSQL
対応フォーマット
- CSV
- JSON
- Apache Parquet
- 圧縮されたオブジェクト(GZIPやBZIP2)
- サーバー側で暗号化されたオブジェクト
料金
S3 Selectを実行するS3のストレージタイプやリージョンによって異なる。
詳細は以下を参照
https://aws.amazon.com/jp/s3/pricing/
例:S3標準、東京の場合
スキャン:0.00225USD/GB
戻りデータ:0.0008USD/GB
Athena
S3に保存されたデータに対して、サーバーレスでSQLクエリを実行することができる。サーバーレスのため、実行するためのインフラの準備や管理は不要で、実行したクエリにのみ課金される。他のAWSサービスと統合することで、データを分析し可視化できるようにもなる。
使いどころ
- S3に格納されているデータに対してアドホックな分析をしたいケース
- S3以外のデータソースに対しても分析をしたいケース(横串検索)
※S3のデータとDynamoDBのデータなどを結合して分析したいケース
料金
スキャンするデータサイズに応じて課金される。1TBあたり5USB
Redshift Spectrum
Redshiftクラスター外のS3データに対して直接クエリを実行し、Redshift内のデータと結合することができる。
使いどころ
- Redshiftに格納されているデータとS3に格納されているデータを統合したいケース
※頻繁にクエリを実行したいデータはRedshiftに保存し、あまりクエリを実行しないデータはS3に保存し、クエリを実行する時はRedshift Spectrumを使用するようなケース
料金
Athenaと同様にスキャンするデータサイズに応じて課金される。1TBあたり5USB
※Redshiftを起動していないと利用できないため、Redshiftの利用料金も必ず発生する。
まとめ
- S3 Selectは単一のオブジェクトに対して簡単にSQLを実行したい時に使う
- AthenaはS3に格納されているデータ(複数のオブジェクト)に対してアドホックな分析をしたい時に使う
- Redshift SpectrumはRedshiftに格納されているデータとS3に格納されているデータを統合したい時に使う
参考