邏輯 view 和 materialized view 總覽
BigQuery 支援兩種檢視表:邏輯 (標準) 檢視表和 materialized view。這兩種檢視表共用相同的查詢介面,但基礎機制、效能和成本不同。本文比較各種類型的特性、優點和限制,協助您為工作負載選擇合適的檢視表。
邏輯檢視表
邏輯 (標準) 檢視表是由 SQL 查詢定義的虛擬資料表。不會儲存任何實體資料。而是儲存從基礎資料表擷取資料所需的查詢邏輯。查詢邏輯檢視表時,BigQuery 查詢引擎會將檢視表展開為基礎查詢。這項程序代表 BigQuery 每次呼叫檢視表時,都會重新執行檢視表。
邏輯檢視表的優點包括:
- 無儲存空間負擔。由於不會儲存額外資料,您只需支付基礎資料表的儲存費用。
- 即時準確度。由於查詢是在執行時執行,因此結果一律會反映基礎資料表的最新狀態。
- 邏輯抽象化:簡化複雜的彙整作業,或套用資料列層級安全性,而不必複製資料。
- SQL 彈性。支援所有 BigQuery SQL,包括複雜的視窗函式、使用者定義函式 (UDF) 和所有彙整類型。
materialized view
materialized view 是預先運算的檢視表,會定期儲存 SQL 查詢結果。與邏輯檢視表不同,具體化檢視表會實際儲存運算資料,讓 BigQuery 能更快提供結果,不必重複處理原始基礎資料。這樣可以預先處理查詢,縮短大型資料集的查詢延遲時間,並降低常用查詢的運算費用。
BigQuery materialized view 結合了預先運算資料的速度,以及即時檢視表的準確度。具體做法如下:
- 自動重新整理:基礎資料表變更時,背景程序會更新 materialized view。
- 資料更新間隔:如果在背景重新整理作業待處理期間發生查詢,BigQuery 會自動補償未處理的基礎資料表變更,提供最新結果。
- 智慧微調。如果查詢最佳化工具判定 materialized view 能更有效率地提供答案,就會自動將查詢從基礎資料表重新轉送至 materialized view。
邏輯檢視表和 materialized view 的比較
雖然邏輯 view 是預設的 view 類型,但如果您經常查詢大型或運算成本高昂的 view,建議您建立 materialized view。邏輯檢視表是虛擬的,對一組資料集提供可重複使用的參照,但不會實際儲存任何資料。materialized view 是使用 SQL 定義,就像邏輯檢視表一樣,但會實際儲存 BigQuery 用來提升效能的資料。
下表摘要說明 BigQuery 邏輯檢視表和 materialized view 的異同:
| 維度 | 邏輯檢視表 | materialized view |
|---|---|---|
| 資料保留 | 無 (虛擬) | 實體 (儲存在磁碟上) |
| 執行 | 每次呼叫檢視表時 | 預先運算;背景重新整理 |
| 資料過時 | Never | 選用 1 (透過重新整理) |
| 效能 | 不一定 (取決於基礎資料表) | 一致且快速 |
| SQL 複雜度 | 無限制 | 受限 |
| 最佳化目標 | 安全性與抽象化 | 速度和成本降低 |
| 維護和儲存費用 | 否 | 是 |
1 --max_staleness 選項可提升查詢效能,並在處理大型、經常變更的資料集時控管成本。
邏輯檢視表的使用時機
- 語意分層。將複雜的資料欄名稱重新命名為非技術使用者易懂的業務術語。
- 快速開發。如果邏輯不穩定,且不想管理實體儲存空間的負擔,請使用這個選項。
- 整合資料來源。為數據分析或 BigQuery sharing (舊稱 Analytics Hub) 等視覺化工具提供資料來源。
materialized view 的使用時機
- 預先處理資料。準備匯總、篩選器、彙整和叢集,提高查詢效能。
- 資訊主頁加速。強化 Looker 等經常查詢相同匯總指標 (例如每日活躍使用者) 的 BI 工具。
- 即時分析大型串流。可針對接收高速串流資料的資料表,提供更快速的回應。
- 成本管理。降低對大型資料集執行重複、高成本查詢的費用。
授權檢視表
您也可以建立授權檢視表,將來源資料集的部分資料,分享至次要資料集的檢視表。接著,您可以將這個檢視表分享給特定使用者和群組 (主體),他們可以查看您分享的資料並執行查詢,但無法直接存取來源資料集。
您可以為邏輯檢視表或 materialized view 建立授權檢視表。materialized view 的授權 view 稱為「授權 materialized view」。
最佳做法
在架構完善的 BigQuery 環境中,邏輯檢視表是整合所需資料的實用工具。請保留materialized view,做為特定高流量查詢模式的效能最佳化工具,這些模式涉及大量匯總。
如要瞭解如何監控 materialized view 的使用情形和效能,請參閱「MATERIALIZED_VIEWS 檢視表」。