マテリアライズドビューの概要
Materialized viewは、計算ロジックとデータの両方を含むエンティティです。計算ロジックのみを含み、データ自体は格納しないviewとは異なり、materialized viewはデータを格納します。
Materialized Viewsのユースケース
Materialized viewsはSQL定義に基づいてデータを計算・格納し、ポリシーに従って定期的またはリアルタイムに更新されます。これらは直接クエリすることも、透過的なクエリ書き換えに使用することも可能です。以下のシナリオで適用できます:
クエリ高速化
BIレポートやアドホッククエリなどの意思決定支援システムでは、これらの分析クエリは多くの場合集計操作を伴い、複数テーブルの結合を含む場合があります。このようなクエリの結果計算はリソース集約的で、応答時間が数分に達する可能性がある一方、ビジネスシナリオでは秒レベルの応答が求められることが多いため、materialized viewsを構築して一般的なクエリを高速化できます。
軽量ETL(データモデリング)
データ階層化シナリオでは、ネストされたmaterialized viewsを使用してDWDおよびDWM層を構築し、materialized viewsのスケジューリングとリフレッシュ機能を活用できます。
レイクハウス統合
複数の外部データソースに対して、これらのデータソースで使用されるテーブルにmaterialized viewsを構築することで、外部テーブルから内部テーブルへのインポートコストを節約し、クエリプロセスを高速化できます。
Materialized Viewsの分類
データ適時性による分類:同期vs非同期
-
同期materialized viewsは、ベーステーブルデータとの強い一貫性を維持する必要があります。
-
非同期materialized viewsは、ベーステーブルデータとの結果的一貫性を維持し、多少の遅延が生じる場合があります。これらは通常、データ適時性が重要でないシナリオで使用され、多くの場合T+1または時間単位のデータを使用してmaterialized viewsを構築します。高い適時性が必要な場合は、同期materialized viewsの使用を検討してください。
現在、同期materialized viewsは直接クエリをサポートしておらず、非同期materialized viewsはサポートしています。
透過的書き換えをサポートするSQLモードによる分類:単一テーブルvs複数テーブル
Materialized viewのSQL定義には、単一テーブルクエリまたは複数テーブルクエリを含めることができます。使用されるテーブル数の観点から、materialized viewsは単一テーブルまたは複数テーブルのmaterialized viewsに分類できます。
-
非同期materialized viewsの場合、単一テーブルと複数テーブルの両方が使用できます。
-
同期materialized viewsの場合、単一テーブルのみが使用できます。
Materialized Viewリフレッシュによる分類:フルリフレッシュvsパーティション増分リフレッシュvsリアルタイムリフレッシュ
非同期Materialized Viewsの場合
-
フルリフレッシュ:materialized viewのSQL定義のすべてのデータを計算します。
-
パーティション増分リフレッシュ:materialized viewのベーステーブルのパーティションデータが変更された場合、変更に対応するmaterialized viewのパーティションを特定し、それらのパーティションのみをリフレッシュして、materialized view全体をリフレッシュすることなくパーティション増分リフレッシュを実現します。
同期Materialized Viewsの場合
- リアルタイムリフレッシュとして理解でき、ベーステーブルデータとの一貫性を維持します。