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