邏輯檢視表和具體化檢視表總覽

本文將說明及比較 BigQuery 中的邏輯檢視表和具體化檢視表。在現代資料倉儲中,檢視區塊是原始資料和商業智慧之間重要的抽象層。在 BigQuery 中,架構師通常會選擇兩種型別:邏輯 (標準) 檢視表和具體化檢視表。雖然這些檢視畫面共用相同的介面,但底層機制、效能設定檔和費用影響不同。

邏輯檢視表

邏輯 (標準) 檢視表是 SQL 查詢定義的虛擬資料表。不會儲存任何實際資料,而是儲存從基礎資料表擷取資料所需的查詢邏輯。

查詢邏輯檢視區塊時,BigQuery 查詢引擎會將檢視區塊展開為基礎查詢。也就是說,BigQuery 每次呼叫檢視區塊時,都會重新執行檢視區塊。

邏輯檢視區的優點包括:

  • 沒有儲存空間負擔。由於系統不會儲存額外資料,因此您只需支付基本資料表的儲存費用。
  • 即時準確度。由於查詢是在執行時執行,因此結果一律會反映基礎資料表的最新狀態。
  • 邏輯抽象化。簡化複雜的聯結或套用資料列層級安全性,不必複製資料。
  • SQL 彈性。支援全方位的 BigQuery SQL,包括複雜的視窗函式、使用者定義函式 (UDF) 和所有聯結類型。

具體化檢視表

具體化檢視表是預先計算的檢視表,會定期儲存 SQL 查詢的結果。與邏輯檢視區塊不同,實體檢視區塊會實際儲存運算資料,因此 BigQuery 無需重複處理原始基礎資料,即可更快提供結果。這項功能可預先處理查詢,減少大型資料集的查詢延遲時間,並降低常用查詢的運算成本。

BigQuery 具體化檢視表結合了預先計算資料的速度和即時檢視的準確度。他們透過下列方式達成此目標:

  • 自動重新整理。當基礎資料表變更時,背景程序會更新具體化檢視表。
  • 資料更新間隔。如果查詢發生時,背景重新整理作業尚未完成,BigQuery 會自動補償未處理的基礎資料表變更,提供最新結果。
  • 智慧微調。如果查詢最佳化工具判斷具體化檢視表能更有效率地提供答案,就會自動將查詢從基本資料表重新導向至具體化檢視表。

比較

下表摘要列出 BigQuery 邏輯檢視表和具體化檢視表的異同:

尺寸 邏輯檢視 具體化檢視表
資料持續性 無 (虛擬) 實體 (儲存在磁碟上)
執行 每次呼叫檢視區塊時 預先計算;背景重新整理
資料過時 永不 選用 1 (透過重新整理)
效能 變數 (基本資料表 從屬) 穩定快速
SQL 複雜度 無限制 有限制
最佳化目標 安全性和抽象化 提高速度並降低成本
維護和儲存空間費用 No Yes

1 處理大型且經常變更的資料集時,--max_staleness 選項可提升查詢效能並控管成本。

何時使用邏輯檢視畫面

  • 語意分層。將複雜的資料欄名稱重新命名為非技術人員也能理解的業務用語。
  • 快速開發。如果邏輯變動頻繁,且您不想管理實體儲存空間的額外負擔,請使用這項功能。
  • 整合資料來源。為 Looker StudioBigQuery sharing (舊稱 Analytics Hub) 等資料視覺化工具提供資料來源。

具體化檢視表的使用時機

  • 預先處理資料。準備匯總、篩選器、聯結和叢集,提高查詢效能。
  • 資訊主頁加速。為 Looker 等商業智慧工具提供支援,這些工具經常查詢相同的匯總指標,例如每日活躍使用者。
  • 對大型串流進行即時分析。可針對接收高速串流資料的表格,提供更快速的回應。
  • 成本管理。減少對大型資料集重複執行昂貴查詢的成本。

最佳做法

如要建構完善的 BigQuery 環境,邏輯檢視區塊是整合所需資料的實用工具。預留具體化檢視區塊,做為特定高流量查詢模式的效能最佳化工具,這些模式涉及大量彙整作業。

如要瞭解如何監控具體化檢視區塊的使用情況和效能,請參閱 MATERIALIZED_VIEWS 檢視區塊

後續步驟