DEA / ドメイン2 データストア管理

重要な内容

Redshift Spectrum・フェデレーテッドクエリ・マテリアライズドビュー

すべてのデータを にロードする必要はありません。 は のデータを、は や のデータを、それぞれ置いたまま Redshift の で問い合わせます。は、重い集計の結果を保存して繰り返しの問い合わせを速くします。DEA-C01 では、データを移行するか、置いたまま遠隔から読むか (スキル 2.1.5) を判断し、これらの機能を選び分ける力が問われます。

Point
  • Spectrum は「範囲、領域」という意味です。Redshift の範囲を S3 のデータレイクまで広げる機能、と覚えます。
  • Federated (フェデレーテッド) は「連合した」という意味です。別のデータベースを、連合した一員のように問い合わせます。
  • Materialized view (マテリアライズドビュー): 結果を実体 (material) として保存したビューです。通常のビューは問い合わせのたびに元の SQL を実行します。
  • 和訳

概要

概要の図 ローカルテーブル Redshift Spectrum外部スキーマ フェデレーテッドクエリ マテリアライズドビュー アナリスト / BI Amazon Redshift Redshift のテーブルホットデータ S3 データレイクGlue Data Catalog RDS / AuroraPostgreSQL・MySQL 保存した集計結果
方法データの場所向くケース
ロード () の中にコピー頻繁に読む、最高の性能が必要
に置いたまま大量で読む頻度の低い履歴、と DWH の結合
/ に置いたまま運用 DB の最新の値を、 を作らずに参照・結合
結果を Redshift に保存同じ重い集計を何度も実行するダッシュボード

試験では、「データを動かさずに」「ETL を作らずに」「最新の値を」「繰り返しの集計を速く」といった言葉から機能を選びます。


主要技術

①Redshift Spectrum ⚠️ 頻出

は、 Data Catalog に登録した のテーブルを外部テーブルとして問い合わせます。S3 のスキャンは、クラスターとは別の Spectrum の処理層が並列に行い、結果を のテーブルと結合できます。

CREATE EXTERNAL SCHEMA lake
FROM DATA CATALOG
DATABASE 'sales_lake'
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftSpectrumRole';

SELECT c.region, SUM(h.amount)
FROM lake.sales_history h            -- S3 の外部テーブル
JOIN public.customers c              -- Redshift のテーブル
  ON h.customer_id = c.customer_id
WHERE h.sale_year = 2024             -- パーティション列で絞り込む
GROUP BY c.region;
観点内容
カタログGlue Data Catalog (または ) の外部スキーマを使う
費用プロビジョンドでは S3 からスキャンしたバイト数で課金。Serverless では の使用量に含まれる
速くする工夫 / 、圧縮、パーティションでの絞り込み、ファイルを大きめにそろえる
権限 に登録したテーブルは、Lake Formation の権限が適用される (「AWS Lake Formation」の章)
書き込み外部テーブルへの INSERT もできるが、主な用途は読み取り。S3 へ書き出すなら

Spectrum と はどちらも S3 を で読みます。Redshift のテーブルと結合したい、Redshift の利用者と同じ接続で使いたいなら Spectrum、Redshift を持たずに S3 だけを調べたいなら Athena を選びます。


②フェデレーテッドクエリ ⚠️ 頻出

は、 と の PostgreSQL・MySQL のデータを、 から直接問い合わせます。運用 DB の最新の値を、 のジョブを作らずに Redshift のデータと結合できます。

CREATE EXTERNAL SCHEMA ops
FROM POSTGRES
DATABASE 'orders' SCHEMA 'public'
URI 'orders-db.cluster-xxxx.ap-northeast-1.rds.amazonaws.com' PORT 5432
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftFederatedRole'
SECRET_ARN 'arn:aws:secretsmanager:ap-northeast-1:111122223333:secret:orders-db';
観点内容
対応するソースRDS / Aurora の PostgreSQL と MySQL
認証情報 のシークレットに保管し、 ロールで読む (「Secrets Manager と Parameter Store」の章)
ネットワークRedshift から DB へ届く経路 (同じ 、ピアリングなど) との許可が必要
性能絞り込みの条件を DB 側へ渡し (プッシュダウン)、必要な行だけを持ってくる
影響大量の行を読むクエリは、運用 DB に負荷をかける

大量の履歴を毎回フェデレーテッドクエリで読むと、運用 DB を圧迫します。頻繁に大量に読むなら、 統合や で Redshift へ複製し、たまに最新値を参照するならフェデレーテッドクエリ、と使い分けます。


③マテリアライズドビュー ⚠️ 頻出

は、SELECT の結果を保存しておき、問い合わせのたびに元のテーブルを集計し直す手間を省きます。

CREATE MATERIALIZED VIEW daily_sales_mv
AUTO REFRESH YES
AS
SELECT sale_date, store_id, SUM(amount) AS total
FROM sales
GROUP BY sale_date, store_id;
機能内容
更新 (REFRESH)元のテーブルの変更を反映する。手動、または AUTO REFRESH YES で自動
増分更新条件を満たすビューは、変更のあった分だけを計算して速く更新する。満たさないビューは全部作り直す
自動クエリ書き換え元のテーブルへのクエリを、使えるマテリアライズドビューを読むよう が自動で書き換える
自動マテリアライズドビュー (AutoMV)よく実行されるクエリのパターンを見て、Redshift が自動で作り、管理する
外部データ の外部テーブルやのテーブルを元にしても作れる
ストリーミング取り込み / のデータを取り込む先にもなる (「Redshift へのロードとアンロード」の章)

外部のデータ ( や ) を元にしたマテリアライズドビューを作ると、遠隔のデータを一度だけ読んで Redshift に結果を持てます。データを丸ごと移行せずに、繰り返しの問い合わせを速くできます。

Point
  • 通常のビュー = 毎回元の SQL を実行 (常に最新、遅い)
  • マテリアライズドビュー = 保存した結果を読む (速い、更新するまで古い)
  • 「同じ集計を何度も」「ダッシュボードの応答を速く」→ マテリアライズドビュー、と覚えます。

④移行するか、遠隔から読むか

判断の観点移行 (ロード、、)遠隔から読む (、)
読む頻度高い低い・ときどき
データ量大量でも速く読める大量に毎回読むと遅く高い
鮮度複製の遅れがある (zero-ETL は数秒〜)読んだ時点の値 (フェデレーテッドクエリ)
保管コスト の容量を使う や元の DB のまま
パイプラインの手間ロードや複製の仕組みが要る (zero-ETL なら少ない)外部スキーマを作るだけ

組み合わせも定石です。直近のホットデータは Redshift のテーブル、古い履歴は S3 に して Spectrum、運用 DB の最新の在庫はフェデレーテッドクエリ、ダッシュボードの集計は、という構成です。


⑤その他のデータを動かさない仕組み

仕組み内容
データベース間クエリ同じクラスター内の別データベースのテーブルを、3つの部分の名前 (database.schema.table) で参照する
データ共有別のクラスター・ワークグループ・アカウントへ、コピーせずにライブのデータを読ませる (「 のアクセス制御とデータ共有」の章)
のAthena から のコネクタで や などを問い合わせる (「Amazon Athena」の章)

試験対策

①判断マトリクス

問題文のキーワード選ぶもの
の履歴を のテーブルと結合、ロードしたくない
Redshift のストレージを減らしつつ古いデータも で読む で S3 へ移し、Spectrum の外部テーブル
Spectrum の費用を下げたい、圧縮、パーティションでの絞り込み
/ の最新の値を なしで結合
運用 DB の大量データを頻繁に分析 統合や で Redshift へ複製
同じ重い集計を繰り返す、ダッシュボードが遅い (AUTO REFRESH)
ビューの更新を速くしたい増分更新できる形のマテリアライズドビュー
既存のクエリを変えずに速くしたい自動クエリ書き換え、自動マテリアライズドビュー
別のアカウントにデータをコピーせず見せたいデータ共有

②よくある誤答

  • で、運用 DB の数億行を毎回集計すること。運用 DB に負荷がかかります。複製するかに結果を持ちます。
  • で CSV のまま大量のデータを読むこと。スキャン量が増えて遅く高くなります。
  • マテリアライズドビューが常に最新だと考えること。更新するまでは前回の結果です。
  • フェデレーテッドクエリの対象に を選ぶこと。対象は / の PostgreSQL と MySQL です。

参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください