データマートとは?
Definition 1 データマート
- 特定のクエリ群で必要とされるデータだけを保持する,相対的に小さなサイズのテーブルのこと
- アクセス対象テーブルサイズを小さくすることでI/O量を減らすのが種目的
Definition 2 ゾンビマート
- もう参照されていないのに無駄に同期処理が行われているデータマート
データマートの実装方法
データマートをどう構築するかは要件次第で,大きく分けると以下の方法があります.
方法A: 物理テーブルに実装
- データマート専用のテーブルを作成し,ETL/ELT処理で定期的にロードする
- 長所: 高速,データが安定している
- 短所: ETLコストが高い,ストレージ消費が大きい
方法B: ビュー (View) で実装
- DWHの基盤テーブルに対するSQLを「ビュー」として定義し,利用者はビューを参照
- 長所: 柔軟で開発が早い,ストレージ不要
- 短所: 元テーブルに毎回クエリが走るため重い集計では遅くなる
方法C: マテリアライズドビューで実装
- 上記の「ビュー」の欠点を補う形で,集計結果をあらかじめ保存
- 基本的に「単一テーブルに対する単純な集計」が対象
- 長所: 高速,利用者からはビュー同様に見える
- 短所: 更新タイミングの設計が必要(鮮度とパフォーマンスのトレードオフ)
BigQuery のマテリアライズドビューに関する制限事項
- マテリアライズドビューで使える集計関数は限定的で,「基本的な集約 + 一部の近似集計やビット演算」に限られる
- 自己結合や
RIGHT/FULL OUTER JOIN
はサポートされていない - ユーザー定義関数(
UDF
)やウインドウ関数などは使用することができない