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