邏輯 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 檢視表」。

後續步驟