AWS Athenaとは?
ビジネスのデジタル化が進み、多くのサービスやデバイスから膨大なデジタルデータが日々生成されています。
また、多くの企業が保有するデータを自社の事業活動に活用する「データ駆動型経営」を目指すようになりました。そうした状況では、新たな洞察を得られるデータ分析基盤を構築することがますます重要になっています。
そのため近年では、データ分析に必要な技術的スキルを身に着けているエンジニアが組織内で高く評価され始めています。ビジネスにとって戦略的で重要な役割を果たすエンジニアになるためには、データ分析スキルが強く求められるようになったのです。
データ分析スキルの向上に役立つサービスとして、現在注目されているのが「AWS Athena」です。今回は、AWS Athenaの特徴や使い方、メリット・デメリットなどを解説していきます。
AWS Athenaはデータ分析に利用できるフルマネージドサービス
AWS Athenaは、AWS(Amazon Web Services)から提供される「データ分析」に利用できるフルマネージドサービスの1つです。一般的なデータ分析の流れとしては「データ蓄積」「データ加工」「データ分析」「データ可視化」などがあります。
AWSでは、この流れの各フェーズで活用できるサービス群を提供しています。「データ分析」フェーズでは、Amazon Athenaの他にも「Amazon EMR」「Amazon Redshift」などのサービスがあります。
AWS Athenaは2016年11月30日に公表され、同日から一般提供が開始されました。AWSは、クエリエンジンのバグ修正や機能追加・パフォーマンス向上などのアップデートを実施していて、2022年10月にリリースされた「Version 3」が最新のバージョンです(2023年4月時点)。
【参考】:AWS Athena公式サイト
AWS Athenaでは何ができる?
AWS Athenaを使うことで、AWS上で利用可能なクラウド型ストレージサービス「Amazon S3」内のデータに対して、標準データフォーマットを使用した簡単な操作で高速に大量のデータを分析できます。
具体的な分析方法としては、Amazon S3などに対して標準SQLのクエリを実行します。その実行結果を参照しながら、データ分析を進めることが可能です。たとえば、レポート作成、ビジネスインテリジェンスなど大量のデータを扱う必要がある場合に役立ちます。
また、エンジニアが利用する際は、クエリパフォーマンスのチューニングやセキュリティの管理、クエリ結果の可視化、機械学習や人工知能のアプリケーションへの応用など、様々なビジネスニーズに対応することにも活用可能です。
AWS Athenaの特徴
AWS Athenaは、ペタバイト規模のような大量のデータの保管ストレージを分析するための優れた機能を備えています。
具体的にはどのような機能を持っているのでしょうか。まずは、AWS Athenaの特徴を解説していきます。
【参考】:AWS Athena公式サイト「AWS Athenaの特徴」
大規模データでも高速なデータ分析
一般的には膨大なデータに対する分析では、サーバなどシステムリソースに大きな処理負荷がかかるため、分析結果を取得するまで時間を要することがあります。
AWS Athenaでは、データの抽出や変換、ロードなどの手順を踏む必要がありません。AWSマネジメントコンソールを数回クリックすることでストレージに格納されたデータにアクセスして、インタラクティブなクエリを実行できます。
多くの場合、その分析や抽出結果は数秒で表示されます。対象となるデータ形式は、CSV・JSON・ORC・Avro・Parquetなどです。
ログ解析を高速化するクエリエンジン「Presto」
AWS Athenaが迅速に大量のデータを分析できる理由の1つが、データ分析用に最適化されたオープンソースの分散型SQLクエリエンジン「Presto」を活用している点です。クエリを並列実行することで、膨大な量のデータを効率的に処理できます。
Prestoでは、大規模な結合やWindow関数、配列をサポートするANSI SQLを使用します。ANSI SQLは「American National Standards Institute(ANSI)」が定義したSQLの標準規格です。標準化されたクエリ言語として、SQLを使用する多くのデータベース管理システム(DBMS)で同じクエリを実行できます。
ANSI SQLは、多くの商用、またはオープンソースのデータ分析ツールでサポートされています。DBMSごとに固有の機能を使用することなく、標準的なSQLクエリで多様な分析を可能にしています。ただ、CSVやJSONといった「整形済みのデータが前提となる」ことが注意点です。
ディスク使用量を低減できる
従来のデータ分析では、まず分析対象となるデータをデータベースに格納して、そのデータベースに対してSQLクエリを実行する形式を取ります。元データとデータベースで同じ内容のデータを二重保存するため、ディスク容量を余分に消費することが課題でした。
Amazon Athenaでは、Amazon S3にSQLクエリを直接実行するため、二重のデータ保存が不要となり、コスト削減の効果も期待できます。
インフラの設定や管理が不要
Amazon Athenaは、サーバレス型サービスである点も特徴の1つです。そのため、サービスを利用するために「Amazon Elastic Compute Cloud(EC2)」などのインフラを配備する必要はありません。
また、各種設定やソフトウェアの更新、セキュリティ監視や障害などをアウトソーシングできるフルマネージドサービスであり、ユーザー数増加に伴うインフラの拡張も含めて利用者側での対処は不要です。
Amazon Athenaの利用料金は?
Amazon Athenaの利用料金は、実行するクエリに対して発生します。前払い料金や基本料金は存在しません。
たとえば、クエリ結果は選択したS3バケットに保存され、その際にS3の標準料金が請求されます。AWSによると、データの圧縮や分割、列形式への変換で、クエリに対するコストを30%から90%削減してパフォーマンスを向上できるとのことです。
Amazon Athenaのアジアパシフィック(東京)リージョンでは、SQLクエリ処理におけるスキャンされたデータは1テラバイト当たり「5.00 USD」となっています(2023年4月15日時点)。
【参考】:AWS Athena公式サイト「Amazon Athenaの料金」
他のデータリソースへの横串検索
Amazon Athenaでは、Amazon S3以外のデータも活用できます。たとえば、「Amazon DynamoDB」「Amazon Redshift」「MySQL」「PostgreSQL」「Redis」などが挙げられます。
また、その他の一般的なサードパーティーデータストア向けのコネクタが用意されています。これらのコネクタを使えば、Amazon Athenaで複数のデータベースをまたいだ横串検索を行えます。
Amazon Athenaの基本的な使い方
Amazon Athenaは、単独で利用するよりも他のAWSサービスやツールと組み合わせる使い方が一般的です。ここからは、Amazon Athenaの基本的な使用方法や具体的な利用例を説明していきます。
Amazon Athenaの基本的な使用方法や活用例などを見ていきましょう。
ステップ1:分析対象のデータを「Amazon S3」に保存する
まず、分析対象のデータを「Amazon S3」に保存するためにデータを保存するフォルダ「S3バケット」を作成します。次にAWSのコンソール画面を操作して、S3バケットに分析対象のデータやファイルをアップロードします。
コンソール画面で操作する方法以外にも、S3バケットに一意に設定されるURLに対して「AWS Database Migration Service」といった他のAWSサービスが提供するAPIを利用してデータを保存する方法もあります。
ステップ2:テーブルを定義する
Amazon AthenaでSQLクエリを実行するためには、テーブル定義が必要です。デフォルト設定では「AWS Glue Data Catalog」上のテーブル定義を使用します。テーブル定義をするクエリを実行した後に「パーティション定義」「データ形式」「データの場所」「圧縮形式」などを指定していきます。
AWS Glue Data Catalogとは、メタデータを管理するオープンソースソフトウェアのデータベース「Apache Hive Metastore」と互換性のあるリポジトリです。
AWS Glue Data Catalogにテーブル定義を作成するには、「Athena DDL」「AWS Glue Catalog API」「AWS Glue Crawler」を活用する3つの方法が活用できます。
SQLクエリを実行する
データの分析・抽出では、先ほど説明したANSI SQLに準拠したクエリを実行します。複雑なJOINやWindow関数、複雑なデータ型なども使うことができます。
SQLクエリの実行結果は、指定した「S3バケット」に自動的に保存されます。
活用例1:BIツールとの連携
具体的な利用例としては「BIツールとの連携」が考えられます。
Amazon Athenaは、Javaで開発したアプリケーションからデータベースを操作するためのAPIである「JDBC(Java Database Connectivity)」などを経由して、各種BIツールと連携可能です。また、AWSで提供しているBIツールには「Amazon QuickSight」があります。
BIツールとの連携では、Amazon AthenaからSQLクエリを実行して取得したデータをBIツールに連携させてより分かりやすく「可視化」するというデータ分析が可能になります。
活用例2:AWSサービス上の各種ログのデータ分析
Amazon Athenaを活用すると、各種AWSサービスが出力するログをAmazon S3に集めることもできます。そうしたS3に集積したログに対して、Amazon AthenaからSQLクエリを実行してデータ分析が可能です。
ログを取得できるAWSサービスとしては、「Elastic Load Balancing(ELB)」「Amazon CloudFront」「AWS CloudTrail」などがあります。
活用例3:「AWS Glue」との併用
AWSでは、Amazon Athenaの有効活用として「AWS Glue」との併用を推奨しています。AWS Glueとは、AWSが提供する「データETL(抽出/変換/ロード)サービス」です。
先述したようにAmazon Athenaでは整形されたデータしか扱えません。そのため、AWS Glueでデータを整形してデータカタログ化することで、Amazon Athenaでも簡単に扱えるようになります。
AWS Glueにはその他にも、データソースの自動的スキャンでデータ形式を特定してスキーマを推論するクローラー、データストアに保存されているデータベースとテーブルに関するメタデータ情報を保存するデータカタログなどの機能を備えています。Amazon AthenaとAWS Glueの併用には数多くのメリットがあるのです。
AWS Athenaのメリット・デメリットとは?
ここからは、より具体的な例を交えてAWS Athenaを利用するメリット、デメリットを見ていきましょう。AWS Athenaを利用する上で、ぜひ参考にしてください。
AWS Athenaのメリット
ここまで説明してきたように、AWS Athenaには「大規模データでも高速なデータ分析が可能」「サーバレス型でインフラ設定・管理が不要」「各種標準データフォーマットに対応」「クエリごとの料金体系」などの特徴があります。
Amazon Athenaを利用すると、インフラ周りやコストを気にすることなく、エンジニアがデータ分析に集中できるというメリットがあります。
多くの機能を備えて高速なデータ分析が可能なAmazon Athenaは、以下のような処理に向いています。
・新たに取得したデータをデータウェアハウスに保有するための検証 ・利用頻度の低い過去のデータを活用した一時的な分析 ・Webサーバの障害発生時におけるアクセスログによる原因追求 ・データ量がそれほど多くない低頻度で実施するETL処理
また、概念実証(PoC)やプロトタイピングなどを実施する際、様々なパターンの分析を手早く試したい場合は、Amazon Athenaが適しています。
AWS Athenaのデメリット
一方で、AWS Athenaはデータを絞って高速にスキャンする手法を利用するため、一定量のデータを集めて一括処理するバッチ処理は苦手です。また、大量のデータを長時間処理する作業には向いていません。
Amazon Athenaに向いていない処理としては、以下のようなものが挙げられます。
・大規模なデータに対する定期的なフルスキャン ・テンポラリテーブルを活用する多段階のETL処理 ・サブクエリやJOINを駆使した複雑な集計処理 ・高頻度なレポーティングのための大量のデータ分析
同一手順の分析を定期的に実施する場合は、Amazon RedshiftやAmazon EMRなどを活用した方が処理時間や料金などの点で優れている場合もあります。
AWS Athenaはエンジニアとして活躍するための必須ツール
AWS Athenaは、Amazon S3で高速なパフォーマンスが得られるように最適化されています。インフラの構築や管理が不要なので、簡単に利用を開始することが可能です。
また、サーバ管理に関連する業務が不要なので、エンジニアはデータ分析のみに集中できます。さらに組織により貢献できる業務に多くの時間を割くことも考えられます。
データ分析のニーズは幅広く、そのスキルはあらゆる業種や職種にとっても重要な素養になると考えられます。これからエンジニアとして活躍していくためにも、ぜひAWS Athenaを使いこなせるようになることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから