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