はじめに
この記事は、次のリンク先で公開されている AWS Black Belt の内容を中心に Amazon Redshift についてまとめ、Redshift を知らない人でも概要を理解できることを目指して書きました。
YouTube - Amazon Redshift Overview【AWS Black Belt】
なお、記事の内容は2024年11月時点において、上記リンク先動画の内容、Skill Builder の講座の内容などを踏まえて筆者がまとめたものとなります。
記事の内容に誤りが含まれている可能性があることについて、予め断りを入れさせてください。
データウェアハウスサービス、その役割とは
データウェアハウス(DWH)の主な目的は、トランザクションシステム、運用データベースなどのさまざまなソースからのデータを一元化されたリポジトリに統合することです。これにより、組織は分析を目的とした、信頼できる唯一の情報源を持つことができます。
しかし、データウェアハウスを活用した大規模データ分析には課題があります。
課題のうちのひとつは、例えば次のようなものです。
従来のデータ分析アーキテクチャでは、データウェアハウスにデータを保存するまでに以下の流れを辿ります。
データソース → ETL → データウェアハウス
※ETL…データの抽出、変換、ロードを意味します。データウェアハウスはリレーショナルデータを扱うことから、適切なスキーマにデータを整形してロードする必要があるためです。
上記から、データソースにある非リレーショナルデータは一度変換処理を挟まないとデータウェアハウスに取り込めず、ETLパイプラインの構築/管理に多大な工数がかかっていました。
これが従来の課題のひとつです。
そこで、AWSは新たなデータ分析アーキテクチャを提唱しています。
それが "Modern data architecture" です。
参照元:YouTube - Amazon Redshift Overview【AWS Black Belt】 ※開始5分後あたり
ここで Redshift は Analytics (分析)の役割を果たし、他の柱と相互に関係しあうことで、組織のデータアクセスを簡単にし、データの高度なガバナンスや自由なデータ活用を可能にします。
(あくまで Redshift について紹介するための前座のため、この記事では Modern data architecture についてこれ以上深掘りしません。)
次の図は、 Redshift が Analytics (分析)の役割を果たすにあたって、具体的にどのようなことを行うことができるのか、を図示したものになります。
参照元:Skill Builder - Fundamentals of Analytics on AWS - Part 2 ※「データウェアハウスとは」という章
これから紹介する Redshift の詳細について理解を深めるには、上の図が参考になると思います。
特に「すべてのデータを分析する」という部分に差し掛かったら、適宜この図に戻って読み進めていただけると良いと考えます。
Amazon Redshift とは
(前置きが少し長くなりました。ここからが本論です。)
Redshift には3つの大きな特徴があります。
- 誰でも簡単に分析できる
- すべてのデータを分析する
- コストパフォーマンスの高さ
→多用なユースケースに適用可能なデータウェアハウスの選択肢です。
起動方法は Provisioned と Serverless から選べます。
Provisioned の場合
クラスター(ノードのグループ)は、
- リーダノード(クエリを受信しコンパイルする。一部クエリを除き、コンピュートノードにクエリ実行を依頼する。)
と
- コンピュートノード(クエリを実行して結果をリーダノードに返却する。複数ノードが並列に稼働する。)
で構成され、高速な並列処理(MPP…後述します)を実現しています。
※クラスター(ノード)のタイプは2種類あります。
DC2:コンピュートノードにてユーザデータを保存。比較的安価に利用可能。
RA3:ストレージ機能(Amazon Redshift マネージドS3バケットが使われる)をコンピュートノードから分離したことにより、ストレージ機能とコンピュート機能を個別にスケールすることが可能。
Serverless の場合
インフラストラクチャ(クラスター, ノード)の管理が不要です。
1. 誰でも簡単に分析できる
「分析」の前段階として、そもそもクラスターを簡単に起動できます。
Provisioned の場合
- クラスターのノード数、ノードタイプを設定するだけ(後から変更可能)
- クラスターの詳細設定(ネットワークやバックアップなど)が可能
Serverless の場合
- 名前空間(ストレージ)とワークグループ(コンピュート)を設定
- クラスター, ノードの設定は不要
クラスター起動後は Amazon Redshift query editor v2 を使うことで、
- Web ベースのクエリエディタですぐにクエリ実行が可能
- テーブル作成、データのロード、クエリ結果のグラフ化を GUI 操作で簡単に実行可能
なため、データの分析が簡単に実施できます。
さらに、ワークロードのパフォーマンスチューニングを自動化(機械学習が用いられる)してくれます。
これによって、効率的なパフォーマンスのもと、分析ワークロードを実行できます。
2. すべてのデータを分析する
先ほど登場した図に記載してある特徴を中心に、Redshift がすべてのデータをどのように分析することができるか、について説明します。
-
Amazon Redshift Spectrum
データ移動なしでS3(ユーザ管理)のデータへのクエリが可能 -
フェデレーテッドクエリ
他の Redshift クラスター、RDS/Aurora に対し、データ移動なしでクエリが可能 -
Amazon Redshift Data Sharing
複数の Redshift クラスター間でデータをセキュアで簡単に共有(Amazon Redshift マネージド S3 バケットを使用)することが可能(クロスアカウント、クロスリージョンに対応) -
AWS Data Exchange for Amazon Redshift
AWS Data Exchange でお客様データをサブスクリプション型で購読して、そのデータを ETL なしで(Amazon Redshift Data Sharing の機能を利用することで)容易にインテグレーションすることが可能 -
Amazon Redshift ML
SQL経由で Amazon SageMaker と連携し、機械学習モデルの作成、トレーニング、デプロイを自動で実行することが可能 -
Amazon Redshift Streaming Ingestion
KDS と MSK からのストリーミング取り込みが可能(マテリアライズドビュー(後述します)を作成することで、S3 でステージングする必要がないためレイテンシが低い) -
S3 からの自動COPY
S3 への新規ファイル格納をトリガーに、ジョブによる COPY コマンド実行が可能
3. コストパフォーマンスの高さ
-
分析ワークロードに特化した列指向ストレージ
-
複数のコンピュートノードがデータの一部に対して同じクエリコードを並列分散実行すること(MPP アーキテクチャ)が可能
-
マテリアライズドビューによるクエリ高速化
複数の既存のテーブルのデータを組み合わせた複製データテーブルを用意することで、頻繁に実行されるクエリパターンのデータ取得を高速化することが可能。AutoMV により自動的に生成・管理する機能がある。 -
結果セットのキャッシュ機能(リザルトキャッシュ)
繰り返し実行されるクエリ結果をリーダノードのメモリでキャッシュすることで、コンピュートノードの処理なしでクエリ実行が可能 -
クエリスループットを最大化するためのワークロード最適化を自動化
ショートクエリアクセラレーション(SQA)により、実行時間の短いクエリは専用の高速キューにルーティングされ実行される -
クエリ特性に合わせたチューニングが可能
Elastic Resize (伸縮自在なサイズ変更)により、ノード数やノードタイプを変更可能。スケジューリング実行も可能
同時実行スケーリングにより、ピーク時に1~10個の追加クラスターを自動でスケールアウト。追加クラスターは処理が終わったら自動で停止
そのほか
可用性とセキュリティ
-
クラスター再配置(RA3 のみでサポート)
クラスターを別の AZ にフェールオーバーが可能 -
Multi-AZ 配置(RA3 のみでサポート)
1つのエンドポイントを持つ単一のデータウェアハウスとしてアクセス可能なクラスターを、2つの AZ に配置してワークロードを自動分散 -
Amazon Redshift マネージド VPC エンドポイント(Provisioned の場合、RA3 のみでサポート)
別のVPCから Redshift が配置されたVPCに対する、プライベート接続のためのエンドポイントを設定可能 -
データベースにおけるアクセスコントロール
列/行レベルのアクセスコントロール、ロール単位のアクセス制御が可能。マスキングポリシーを使って、特定の条件の場合のみ特定のデータをマスクされた状態で表示することが可能 -
保存時と転送中のデータ暗号化
AWS Key Management Service (AWS KMS)と統合して、キー管理を強化することも可能
料金体系
共通
RMS (Amazon Redshift マネージド S3 バケット)のストレージ使用量
Provisioned の場合
インスタンス起動時間 + Spectrum 利用料 + 同時実行スケーリング利用料
Serverless の場合
RPU (クエリ処理)実行時間