具體化檢視

資料庫設計

Lis Sulmont

Curriculum Manager

兩種檢視

檢視

  • 也稱為 非具體化檢視
  • 目前為止我們對檢視的定義
資料庫設計

兩種檢視

檢視

  • 也稱為 非具體化檢視
  • 目前為止我們對檢視的定義

具體化檢視

  • 會實體化儲存
資料庫設計

具體化檢視

  • 儲存的是查詢結果,而非查詢本身
  • 查詢具體化檢視等於存取已儲存的查詢結果
    • 不像非具體化檢視那樣每次執行查詢
  • 可在觸發或排程時重新整理(重建)
資料庫設計

何時使用具體化檢視

  • 執行時間長的查詢
  • 底層查詢結果不常變動
  • 資料倉儲環境,因為 OLAP 寫入不密集
    • 可節省頻繁查詢的運算成本
資料庫設計

實作具體化檢視

###(在 PostgreSQL 中) $$

CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM existing_table;

$$

REFRESH MATERIALIZED VIEW my_mv;
資料庫設計

相依性管理

  • 具體化檢視常相依於其他具體化檢視
資料庫設計

相依性範例

$$ X 與 Y 檢視的示意圖,從 X 與 Y 指向相依關係的箭頭

資料庫設計

相依性管理

  • 具體化檢視常相依於其他具體化檢視
  • 重新整理時會形成相依鏈
  • 一次全刷不是最高效的作法
資料庫設計

管理相依性的工具

  • 使用有向無環圖(DAG)追蹤檢視 $$ $$
  • 管線排程工具

有向無環圖範例

Airflow 與 Luigi 的商標

資料庫設計

一起來練習吧!

資料庫設計

Preparing Video For Download...