Amazon Athena では、実行するクエリに対してのみ料金が発生します。各クエリでスキャンされるデータ量に基づいて課金されます。データの圧縮、分割、列形式への変換を行うと、大幅なコスト削減とパフォーマンス向上を実現できます。このようなオペレーションにより、Athena でクエリを実行するためにスキャンする必要のあるデータ量が減少するためです。

Amazon Athena が一般公開されました

Amazon Athena の使用を開始する
  • スキャンされたデータ 1 TB あたり 5 USD。 

データの圧縮、分割、列形式への変換を行うことにより、クエリに対するコストを 30%~90% 削減し、パフォーマンスを向上させることができます。

Amazon Athena によってスキャンされたバイト数に対して課金されます。バイト数はメガバイト単位で切り上げられ、10 MB 未満のクエリは 10 MB と計算されます。CREATE TABLE、ALTER TABLE、DROP TABLE などの Data Definition Language (DDL) ステートメント、パーティションを管理するステートメント、または正常に実行されなかったクエリに対しては課金されません。キャンセルされたクエリは、スキャンされたデータ量に基づいて課金されます。

データを圧縮すると、スキャンされるデータ量を減らすことができます。データを列形式に変換すると、データの処理が必要な列のみが選択的に読み取られます。Athena では、Apache ORC および Apache Parquet がサポートされています。データを分割することでも、スキャンされるデータ量を制限できます。これによりコストが削減され、パフォーマンスが向上します。クエリごとのスキャンされたデータ量は、Athena コンソールで確認できます。詳細については、Athena の料金の例を参照してください。

Amazon Athena は、Amazon S3 から直接データをクエリ処理します。Athena によるデータのクエリ処理に対する追加のストレージ料金は発生しません。ストレージ、リクエスト、データ転送に対して S3 の標準料金が発生します。デフォルトでは、クエリ結果は選択した S3 バケットに保存され、Amazon S3 の標準料金が請求されます。

Athena で AWS Glue データカタログを使用する場合は、標準の AWS Glue データカタログのレートで課金されます。詳細については、ここをクリックしてください。

サイズが同じ 3 つの列があり、圧縮されないテキストファイルとして保存され、Amazon S3 での合計サイズが 3 TB になるテーブルについて考えてみます。テーブルの 1 つの列からデータを取得するクエリを実行する場合、テキスト形式は分割できないため、Amazon Athena によりファイル全体をスキャンする必要があります。

  • このクエリの料金は 15 USD です (スキャンされた 3 TB の料金は、3 * 5 USD/TB = 15 USD)。

GZIP を使用してファイルを圧縮すると、3 分の 1 に圧縮されたとします。この場合、圧縮ファイルのサイズは 1 TB になります。このファイルに同じクエリを実行すると、料金は 5 USD になります。今回も Athena によりファイル全体をスキャンする必要がありますが、サイズが 3 分の 1 になったため、料金は以前の 3 分の 1 になります。

ファイルを圧縮し、さらに Apache Parquet などの列形式に変換した場合、サイズは 3 分の 1 に圧縮され、Amazon S3 でのデータは最終的に 1 TB になります。ただしこの場合、Parquet は列形式なので、Amazon Athena で読み取る必要があるのは、実行されているクエリに関連する列のみです。当該のクエリは 1 つの列のみを参照するものであるため、Athena ではその列のみが読み取られ、ファイルの 3 分の 2 は読み取らなくてよいことになります。Athena で読み取られるのはファイルの 3 分の 1 のみであるため、S3 からスキャンされるデータは 0.33 TB のみになります。

  • このクエリの料金は 1.67 USD です。圧縮によりコストが 3 分の 1 に削減され、1 つの列のみを読み取ることでコストがさらに 3 分の 1 に削減されます。
    (ファイルサイズ = 3 TB/3 = 1 TB。1 つの列を読み取る際にスキャンするデータ = 1 TB/3 = 0.33 TB。0.33 TB の料金 = 0.33 * 5 USD/TB = 1.67 USD)