論理ビューとマテリアライズド ビューの概要
BigQuery は、論理(標準)ビューとマテリアライズド ビューの 2 種類のビューをサポートしています。これらのビューは共通のクエリ インターフェースを共有しますが、基盤となるメカニズム、パフォーマンス、費用が異なります。このドキュメントでは、各タイプの特性、利点、制限事項を比較して、ワークロードに適したビューを選択できるようにします。
論理ビュー
論理(標準)ビューは、SQL クエリによって定義される仮想テーブルです。物理データは保存されません。代わりに、基になるベーステーブルからデータを取得するために必要なクエリロジックを保存します。論理ビューをクエリすると、BigQuery クエリエンジンはビューを基盤となるクエリに展開します。このプロセスは、BigQuery が呼び出されるたびにビューを再実行することを意味します。
論理ビューのメリットは次のとおりです。
- ストレージのオーバーヘッドがない。追加のデータは保存されないため、ベーステーブルのストレージに対してのみ課金されます。
- リアルタイムの精度。クエリは実行時に実行されるため、結果には常にベーステーブルの最新の状態が反映されます。
- 論理的な抽象化。複雑な結合を簡素化したり、データを複製せずに行レベルのセキュリティを適用したりします。
- SQL の柔軟性。複雑なウィンドウ関数、ユーザー定義関数(UDF)、すべての結合タイプなど、BigQuery SQL の全範囲をサポートします。
マテリアライズド ビュー
マテリアライズド ビューは、SQL クエリの結果を定期的に保存する事前計算ビューです。論理ビューとは異なり、計算されたデータが物理的に保存されるため、BigQuery は未加工のベースデータを繰り返し処理することなく、結果をより迅速に提供できます。これにより、クエリを事前処理して大規模なデータセットのクエリ レイテンシを短縮し、頻繁に使用されるクエリのコンピューティング費用を削減できます。
BigQuery のマテリアライズド ビューは、事前計算されたデータの速度とライブビューの精度を兼ね備えています。これは、次の方法で実現されます。
- 自動更新。ベーステーブルが変更されると、バックグラウンド プロセスによってマテリアライズド ビューが更新されます。
- データの更新速度バックグラウンド更新が保留中にクエリが発生すると、BigQuery は未処理のベーステーブルの変更を自動的に補正して、最新の結果を提供します。
- スマート チューニング。クエリ オプティマイザーは、マテリアライズド ビューがより効率的に回答を提供できると判断した場合、ベーステーブルからマテリアライズド ビューにクエリを自動的に再ルーティングできます。
論理ビューとマテリアライズド ビューの比較
論理ビューはデフォルトのビュータイプですが、大規模なビューや計算負荷の高いビューを頻繁にクエリする場合は、マテリアライズド ビューの作成を検討する必要があります。論理ビューは仮想的なものであり、再利用可能なデータセットの参照を提供しますが、データを物理的に格納することはありません。マテリアライズド ビューは、論理ビューと同様に SQL を使用して定義されますが、パフォーマンス向上のために BigQuery が使用するデータを物理的に格納します。
次の表に、BigQuery の論理ビューとマテリアライズド ビューの類似点と相違点をまとめます。
| ディメンション | 論理ビュー | マテリアライズド ビュー |
|---|---|---|
| データの永続性 | なし(仮想) | 物理(ディスクに保存) |
| 実行 | ビューが呼び出されるたびに | 事前計算、バックグラウンド更新 |
| データの鮮度 | なし | 省略可 1 (更新経由) |
| パフォーマンス | 可変(ベーステーブルに依存) | 一貫性と高速性 |
| SQL の複雑さ | 無制限 | 限定的 |
| 最適化の対象 | セキュリティと抽象化 | スピードとコスト削減 |
| メンテナンスとストレージの費用 | × | はい |
1 --max_staleness オプションは、頻繁に変更されるデータセットを処理する場合に、費用管理によってクエリ パフォーマンスを向上させます。
論理ビューを使用するタイミング
- セマンティック レイヤリング。複雑な列名を、技術者以外のユーザー向けにビジネスに適した用語に変更します。
- 迅速な開発。ロジックが流動的で、物理ストレージのオーバーヘッドを管理したくない場合に使用します。
- 統合されたデータソース。データポータルや BigQuery Sharing(旧 Analytics Hub)などの可視化ツールのデータソースを提供する。
マテリアライズド ビューを使用すべき場合
- データの前処理。集計、フィルタ、結合、クラスタを準備して、クエリのパフォーマンスを向上させます。
- ダッシュボードの高速化。1 日のアクティブ ユーザー数など、同じ集計指標を頻繁にクエリする Looker などの BI ツールを強化します。
- 大規模なストリームのリアルタイム分析。高速ストリーミング データを受信するテーブルで、より高速なレスポンスを提供できます。
- 費用管理。大規模なデータセットに対する、コストの高いクエリの繰り返しを減らす。
承認済みビュー
承認済みビューを作成して、ソース データセットのデータのサブセットをセカンダリ データセットのビューで共有することもできます。このビューを特定のユーザーやグループ(プリンシパル)と共有できます。これらのユーザーやグループは、共有されたデータを表示してクエリできますが、ソース データセットに直接アクセスすることはできません。
承認済みビューは、論理ビューまたはマテリアライズド ビューのいずれかに対して作成できます。マテリアライズド ビューに対する承認済みビューは、承認済みマテリアライズド ビューと呼ばれます。
ベスト プラクティス
適切に設計された BigQuery 環境では、論理ビューは必要なデータを統合するための便利なツールです。マテリアライズド ビューは、大量の集計を伴う特定の高トラフィック クエリパターンのパフォーマンス最適化ツールとして使用するために予約します。
マテリアライズド ビューの使用状況とパフォーマンスをモニタリングする方法については、MATERIALIZED_VIEWS ビューをご覧ください。