Amazon Redshift
ペタバイト規模のデータを高速に分析できるクラウドデータウェアハウスサービス
何ができるか
Amazon Redshift は、大量のデータを高速に集計・分析するためのフルマネージドなクラウドデータウェアハウスサービスです。ペタバイト規模のデータに対して標準的な SQL でクエリを実行でき、従来のオンプレミスのデータウェアハウスと比較して最大 10 倍の高速性能を実現します。列指向ストレージと大規模並列処理 (MPP) アーキテクチャにより、数十億行のデータに対する集計クエリも数秒で完了します。S3 上のデータに対して直接クエリを実行する Redshift Spectrum 機能も備えています。
どのような場面で使うか
売上データや顧客データの集計・レポーティング、BI ツールと連携したダッシュボード構築、マーケティング施策の効果分析、ログデータの長期蓄積と傾向分析、複数データソースを統合した全社横断のデータ分析基盤の構築など、大規模データの定期的な集計・分析が必要な場面で利用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
巨大な倉庫に例えるとわかりやすいでしょう。通常の棚 (行指向データベース) では、1 つの商品の情報がまとまって置かれています。Redshift の列指向ストレージは、商品の「価格」だけを集めた棚、「カテゴリ」だけを集めた棚のように、同じ種類の情報をまとめて保管します。「全商品の価格の合計」を知りたいとき、価格の棚だけを見ればよいので、倉庫全体を歩き回る必要がなく、圧倒的に速く答えが出せます。
Redshift とは
Amazon Redshift は、2012 年に登場した AWS のクラウドデータウェアハウスサービスです。データウェアハウスとは、企業のさまざまなシステムから集めたデータを一箇所に蓄積し、分析・レポーティングに活用するための専用データベースです。Redshift は列指向ストレージと大規模並列処理 (MPP) を組み合わせることで、数十億行規模のデータに対する集計クエリを高速に処理します。PostgreSQL 互換の SQL をサポートしているため、既存の BI ツールや SQL クライアントからそのまま接続できます。
主な特徴
Redshift の中核は列指向ストレージです。行指向データベースがレコード単位でデータを格納するのに対し、列指向ではカラム単位でデータを格納します。集計クエリでは必要なカラムだけを読み込むため、I/O が大幅に削減されます。さらに、同じカラムには似た値が並ぶため圧縮効率が高く、ストレージコストも抑えられます。Redshift Serverless を利用すれば、クラスターの管理が不要になり、クエリの実行量に応じた従量課金で利用できます。
Redshift Spectrum と S3 連携
Redshift Spectrum は、Redshift クラスターから S3 上のデータに対して直接 SQL クエリを実行できる機能です。データを Redshift にロードすることなく、S3 のデータレイクに蓄積された大量のデータを分析できます。Redshift 内のテーブルと S3 上のデータを JOIN することも可能で、ホットデータは Redshift に、コールドデータは S3 に配置するといった階層型のデータ管理戦略を実現できます。AWS Glue データカタログと連携してスキーマを管理します。
パフォーマンスの最適化
Redshift は自動的にデータの分散方式とソートキーを最適化する機能を備えています。分散キーを適切に設定すると、JOIN 処理時のノード間データ転送を最小化できます。ソートキーを設定すると、範囲検索やフィルタリングの効率が向上します。また、マテリアライズドビューを使えば、頻繁に実行する複雑なクエリの結果を事前に計算・保存しておくことで、応答時間を短縮できます。Concurrency Scaling 機能により、同時クエリ数が増加しても自動的にクラスターを拡張して性能を維持します。
はじめかた
Redshift を最も手軽に始めるには、Redshift Serverless を利用します。Redshift コンソールで「サーバーレス」を選択し、ネームスペースとワークグループを作成するだけで、数分でクエリの実行環境が整います。クエリエディタ v2 を使えば、ブラウザ上で直接 SQL を実行できます。まずは COPY コマンドで S3 からサンプルデータをロードし、集計クエリを試してみましょう。本格的な運用では、AWS Glue や Step Functions と連携した ETL パイプラインを構築するのが一般的です。
Azure・オンプレミスとの比較
AWS の優位点
- Redshift Serverless により、クラスター管理不要で従量課金のデータウェアハウスを数分で構築でき、初期投資なしで大規模分析を開始できる
- Redshift Spectrum で S3 上のデータに直接クエリを実行でき、ペタバイト規模のデータレイクと Redshift のホットデータをシームレスに統合分析できる
- 自動テーブル最適化、マテリアライズドビュー、Concurrency Scaling により、DBA の手動チューニングなしで安定した高速クエリ性能を維持できる
注意点
- Redshift Serverless は手軽に始められるが、常時大量のクエリを実行する場合はプロビジョンドクラスターの方がコスト効率が良い場合がある
- S3 からのデータロード時は COPY コマンドを使用し、INSERT 文による 1 行ずつの挿入は避けること。COPY コマンドは並列ロードに最適化されている
- 列指向ストレージの特性上、少数行の更新・削除が頻繁に発生する OLTP ワークロードには向かない。OLTP には RDS や DynamoDB を検討すること
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。