AWS Redshift Spectrum と AWS Athena の比較6点
- Redshift Spectrum は Amazon Redshift と連携して機能し、Athena は Amazon S3 に保存されたデータを照会するためのスタンドアロン(単独で機能する)のクエリーエンジンである。
- Redshift Spectrum の場合はリソースのプロビジョニングをコントロールできるが、Athena の場合は AWS がリソースを自動的に割り当てる。
- Redshift Spectrum の パフォーマンスは Redshift クラスタのリソースと S3 ストレージの最適化に依存し、Athena のパフォーマンスは S3 の最適化にのみ依存する。
- Redshift Spectrum はパフォーマンスの点でより安定しているが、Athena でのクエリはプールされたリソースで実行されるため、ピーク時間帯には遅くなる可能性がある。
- Redshift Spectrum は大規模で複雑なクエリを実行するのに適しており、Athena は対話型のクエリをシンプルにするのに適している。
- Redshift Spectrum はクラスタ管理が必要だが、Athena は真のサーバーレスアーキテクチャが可能。
Redshift Spectrum と Athena は、一見すると同じ機能、つまりSQLを使ってAmazon S3内のデータをサーバーレスでクエリする機能を提供しているように見えますし、インフラを整備する必要がないため、費用対効果は抜群です。しかし、両者はその機能性に違いがあります。そこで、Amazon Redshift Spectrum と Amazon Athena の違いについて本記事で詳しく見ていきましょう。
Redshift Spectrum は、Amazon Redshift の拡張機能です。データアナリストが S3 に保存されたデータに対してクエリを実行することができるサービスであり、例えば、外部テーブルのデータと Amazon Redshift に保存されているデータを結合して、複雑なクエリを実行できるようになります。
Integrate.io のネイティブ Redshift コネクタの詳細については、こちらのページをご覧ください。
一方、Amazon Athenaは、SQLを使ってAmazon S3 に保存されたデータに直接問い合わせるスタンドアロンのクエリエンジンです。Redshift Spectrum と同様に、Athena はサーバーレスであり、インフラの管理は不要です。
比較1:機能・パフォーマンス
両サービスとも、外部スキーマの管理には Glue のデータカタログ を使用し、Amazon S3内 のデータ分析には 仮想テーブルを使用します。ただし、Athena の場合は、仮想テーブルの作成に Glue のデータカタログ のメタデータを直接使い、Redshift Spectrum の 場合は、外部スキーマごとに外部テーブルを構成する必要があります。
Redshift Spectrum と Athena の主な違いは、リソースのプロビジョニングです。Athena の場合、Amazon クラウドが自動的にクエリ用のリソースを割り当てるので、リソースのプロビジョニングをコントロールすることはできません。なのでピーク時にはパフォーマンスが落ちてしまう可能性があります。一方 Spectrum を使う場合は、リソースのサイズは Redshift クラスタに依存するため、リソースの割り当てをコントロールできます。したがって、クエリに対して特別速い結果が欲しい場合、Redshift Spectrum を実行する際に、より多くの計算リソースを割り当てるといいでしょう。
AWS Redshift Spectrum と AWS Athena は、Amazon の Webサービスの一部として提供されるサーバーレスコンピューティングのプラットフォームである 『AWS Glue』と互換性があります。AWS Glue のデータカタログを AWS Redshift Spectrum のメタデータレポジトリとして使うことで、ネットワーク全体で信頼できるデータストレージとして機能します。
Amazon は、AWS Athena のユーザーに対して、AWS Redshift Spectrum による内部データカタログを AWS Glue にアップグレードすることを推奨しており、そのアップグレードによって、機能の向上で長期的にコストとパフォーマンスを最適化できます。そしてそれには、維持されたスキームビジョニングや、より高速な分析ワークロードのためにデータをカラムナファイルフォーマットに変換するETL機能などが含まれており、テストによると、カラムナーフォーマットは、行ベースのファイルフォーマットと比べて、費用対効果や高速なパフォーマンスを示しています。
さらに、複数の Redshift クラスタが同じデータレイクに同時にアクセスすることができますが、同じ AWS リージョン内のデータしか分析できません。
データ管理プロセスを最適化するための最適なクエリーエンジンをお求めでしたら、ぜひコチラまでお問い合わせ下さい。
比較2:統合
Athena には、Amazon S3 以外のソースからデータを格納するためのコネクタが内蔵されており、 Redis、Elasticsearch、HBase、DynamoDB、DocumentDB、CloudWatch に接続することができます。また、そのデータベースに保存されているデータを分析したい場合、分析のために S3 に格納する必要はなく、Athena で直接クエリーを実行することができます。
Redshift は フェデレーテッドクエリ(Redshift から外部データベースのテーブルに直接クエリできる機能)を使って、履歴データとライブデータに対して同じクエリーを実行しますが、さらに重要なのは、これを使えば、Redshift に格納する前に、外部ソースに保存されているデータに対して複雑な変換を行うことができる点です。ETL は ELT よりもはるかに安全なプロセスであり、特に機密情報が含まれる場合はなおさらです。
比較3:ユースケース
AWS Redshift Spectrum と AWS Athena は、リアルタイムで特定のデータ管理ニーズに応じて、様々なクエリサービスを提供します。例えば、サーバーレスVPC(仮想プライベートクラウド)には AWS Athena を検討するかもしれません。
AWS Redshift Spectrum
AWS Redshift Spectrum は Amazon Redshift 内の分析力を拡張するため、追加されたデータ管理の実装に AWS Redshift Spectrum を難なく適用することができます。例えば、AWS Redshift Spectrum は、Amazon Redshift の外にある複数のコンピュートフォーマットへのアクセス性を提供することによって、S3 データの相互運用性を上げることができます。
また、AWS Redshift Spectrum を使うと、ネットワークのパフォーマンスを最適化するノード間で、クエリとスケーリングのプロセスを効果的に最適化することができます。
本来、AWS Redshift Spectrum で、サーバーレスコンピュートサービスとしてワークロードの最適化ができます。AWS Redshift の外で複数の処理を実行することで、AWS Redshift の計算負荷が軽減され、それによって最終的には同時実行性が上がり、一部のユースケースではネイティブの AWS Redshift よりも顕著に優れた性能が発揮されます。
AWS Redshift Spectrum では、外部テーブルを作成することで、AWS Redshift のクラスタ間でデータセットを共有することができます。AWS Redshift Spectrum で各テーブルをクエリすることで、データの重複リスクを下げつつ、共有データ全体で一貫したユーザービューを提供し、そのプロセスによって、複数の別々のデータクラスタなどのマルチテナントのユースケースが効率化され、最適化されるのです。
AWS Athena
AWS Athena は、CSV、JSON、Apache ORC を含むカラムナーフォーマットなど、非構造化および構造化 S3 データを分析するための効率的なソリューションとして機能します。AWS Athena を使うと、主要な BI(ビジネスインテリジェンス)ツールと統合して詳細なデータ分析を行うことで、洞察力に富んだレポートを作成しやすくなります。さらに、標準的なデータベース・インデックスの改良を提供する Amazon Quicksight のようなデータ可視化ツールと AWS を便利に統合することもできます。
また、Presto や Hadoop などの大規模かつ高度な分散データフレームワークをコスト効率よく管理できるクラウドビッグデータプラットフォームである『AWS EMR』からのデータのクエリで、AWS Athena を適用することができます。AWS EMR の柔軟性により、データストリーミング、ML(機械学習)、データ変換、グラフ分析などを効率的に管理できるシステムを提供できるのです。
さらに、AWS は AWS EMR と同様のデータタイプを多く扱うので、摩擦のないプロセスで複数のデータソースにクエリをかけることができます。
比較4:コスト
どちらのサービスも、料金体系は同じです。実行したクエリに対してのみ料金を支払い、総費用は、クエリごとにスキャンするデータ量に応じて計算されます。ちなみに、Redshift Spectrum と Athena でクエリーを実行するコストは、スキャンしたデータの TB あたり5ドルです。
ただ、Redshift Spectrum を実行するには Redshift が必要である点に注意しないといけません。なので Amazon Redshift の顧客でない場合、Redshift と一緒に Redshift Spectrum を実行すると、非常にコストがかかることがあります。
さらに、Redshift Spectrum と合わせて Amazon Redshift の運用コストを考えてみるのが重要です。ちなみに Redshift の運用コストは、平均して1TBあたり年間約1,000」ドルです。
両者のどちらを選ぶべきか
両サービスは、SQL を使ってAmazon S3 内のデータストアにクエリを実行する方法において非常によく似ています。例えば、各ソリューションは、標準的なSQL で S3 とクエリを行いますが、両方のクエリシステムのパフォーマンスを最適化するには、S3 ストレージのレイヤーを最適化する必要があります。ただし、両者を決定するには、以下の要素を考慮しましょう:
1.Redshift 既存の顧客かどうか
Redshift の既存顧客にとっては、Athena よりも Spectrum の方が良い選択かもしれません。彼らは Redshift を拡張することなく、Spectrum を活用してデータウェアハウスのキャパシティを増やすことができることから、多くの費用が節約できます。
なので、例えば使用頻度の低いデータを Amazon S3 に、頻繁に保存するデータを Redshift に保存するといいでしょう。そうすることで、ワークロードを効率的に管理しながら、Redshift のクラスタのサイズを小さくし、結果的に年間請求額も減らすことができます。
すぐ始められる
Amazon Redshift Spectrum は、簡単なステップいくつか踏めば始めることができます。まず、クラスタのサイズを承認する Amazon Redshift の IAM ロールの作成が必要です。IAM ロールを Amazon Redshift クラスタに関連付ける必要があり、それによって外部データ カタログと S3 データへのアクセスが提供されます。
ただ、Spectrum で実行するクエリごとに料金を支払うことを頭に入れておくことが重要です。アナリストチームが S3 データを頻繁に使ってクエリを実行する場合、データ全体を Redshift クラスタに保存する場合と比較してコストを計算しましょう。
Redshift の顧客でない場合は、Athena の方がいいかもしれません。Athena ではクラスタを維持する必要がなく、真のサーバーレスアーキテクチャを構築することができます。
2.自分の分析ツールとの相性
2つのクエリーエンジンのうちどちらかを選択する前に、お好みの分析ツールと互換性があるかどうかを確認しましょう。ちなみに、どちらのサービスも、外部ツールへの接続には OBDC (Open Database Connectivity)と JBD(Java database connectivity) ドライバを使います。
3.パフォーマンス向上のための予算の検討
AWS Redshift Spectrum は、AWS Athena のように共有データリソースのプールを利用しないため、AWS Athena と比べて一般的に安定したパフォーマンスを発揮することから、高いコストが必要になる場合があります。具体的には、必要に応じてコンピュート使用量の増加に対応するために、核となる AWS Redshift クラスタの拡張が必要な場合があります。
Integrate.io ができること
Integrate.io は、ETL のデータパイプラインを短時間で構築することができ、Integrate.io のプラットフォームは、リバースETL 機能を備えた超高速 CDC(変更データキャプチャ)の プラットフォームとして機能し、ECビジネスを最適化します。また、ビジュアルインターフェースを使って、Amazon Redshift、Amazon S3、およびその他の一般的なデータベースの統合をすぐに開始することができます。
当社のローコードプラットフォームで、データ統合がいかに簡単になるか、ぜひ一度お問い合わせください。