[レポート] Amazon Redshiftのマテリアライズドビューでパフォーマンスを加速 #ANT417 #reinvent

2019.12.07

DA事業本部の川崎です。

本記事はAWS re:Invent 2019のセッションレポートとなります。

Redshiftのマテリアライズドビュー機能について

[UPDATE] Amazon Redshiftでマテリアライズドビューが使えるようになります! #reinvent

→ マテリアライズドビュー機能は、2020年1月31日までプレビューとのことです。

Amazon Redshift introduces support for materialized views (preview)

概要

Amazon Redshift materialized views enable a dramatic reduction in query latency. This session explains how to get faster query results, either automatically or by having the queries explicitly refer to the materialized views. Materialized views also enable the acceleration of ETL pipelines by automatically and incrementally propagating changes from the base table data into the derived data of the materialized views, thus providing a superior alternative to the CTAS commands that recompute the derived data.

Amazon Redshiftのマテリアライズドビューにより、クエリの待機時間を大幅に短縮できます。 このセッションでは、自動的に、またはクエリがマテリアライズドビューを明示的に参照することにより、より高速なクエリ結果を取得する方法について説明します。 また、マテリアライズドビューは、ベーステーブルデータからマテリアライズドビューの派生データに自動的に増分的に伝播することにより、ETLパイプラインの高速化を可能にし、派生データを再計算するCTASコマンドの優れた代替手段を提供します。

スピーカー

  • Yannis Papakonstantinou - Senior Principal Scientist, Amazon Web Services
  • Vuk Ercegovac - Principal Engineer, Amazon Web Services

Amazon Redshift マテリアライズドビュー:プレビュー

桁違いに(orders of magnitude)クエリを高速化する

  1. 桁違いに(orders of magnitude)クエリを高速化する
    • 予測可能なワークロード向け
    • 事前集計されたマテリアライズドビューで、作業を節約する
  2. 事前集計されたリザルトのメンテナンスを簡素化、および加速する
  3. Amazon Redshiftへの、より簡単で迅速なマイグレーション

高速化の例:元のクエリ

  • クエリ:SFの総売上はいくらだったか?
    • 事前に、フィルタしてJOINし、集計した結果がマテリアライズドビューに保存される

事前集計されたリザルトのメンテナンスを簡素化、および加速する

  • 高速リフレッシュ:効率的でインクリメンタル・リフレッシュに対応
  • 事例:ETL / BIパイプライン

高速リフレッシュ:Amazon Redshiftは(マテビューを)インクリメンタルにメンテ

  • 新しいレコードが追加された場合

高速リフレッシュ:Amazon Redshiftは(マテビューを)インクリメンタルにメンテ

  • SQLコマンド: REFRESH MATERIALIZED VIEW loc_sales; を実行すると、
    • インクリメンタルな更新が行われて、マテリアライズドビューの内容が更新される
    • 今のところ、手動での「REFRESH MATERIALIZED VIEW」コマンドの実行が必要

事例:顧客ETLパイプライン

  1. 1日あたり380万レコードの通常の取り込み
  2. 戦略1:CTAS(CREATE TABLE AS)
  3. 戦略2:マテリアライズドビュー
  • より速い取り込み時間
  • 新しいレコードを取り込む時間は一定
  • より小さい取り込みバッチ → 速い取り込み
    • マテリアライズドビューはCTASと比較して、7.9倍の高速化

マテリアライズドビューのリフレッシュの結果

    1. CTAS、 2. マテリアライズドビューで日次で1600万件を更新した場合、 3. マテリアライズドビューで日次で380万件を更新した場合、を比較
    • いずれの場合も、元のレコード数が増えるに従い、リニアに処理時間が増えているが、マテリアライズドビューの方が非常に高速

Amazon Redshiftへの、より簡単で迅速なマイグレーション

  • 他のDBのマテリアライズドビューを利用したシステムをそのまま、もしくは大きな変更無しで移行可能に

Arnazon Redshiftマテリアライズドビュー:機能

  • ユーザーは、1つ以上のテーブルを使用するマテリアライズドビューを作成可能
CREATE MATERIALIZED VIEW loc_sales AS (
SELECT si.loc,
FROM sales s, sales_info si
WHERE s.store_key si.store_key
GROUP BY si.loc);
  • マテリアライズドビューにアクセスすることで、クエリを高速化する
SELECT * FROM loc_sales WHERE loc = 'SF';
  • REFRESHコマンドはマテリアライズドビューをインクリメンタルにメンテします
REFRESH MATERIALIZED VIEW loc_sales;

まとめ

分析基盤の集計タスクを効率化する上で、マテリアライズドビューの機能は非常に有効で、その意味でRedshiftのマテリアライズドビューは待望の機能だと言えるでしょう。

現在はまだプレビュー期間ですが、事前に機能をよく吟味して、マテリアライズドビューのGA後には分析基盤の案件で積極的に活用していきたいと考えています。