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

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

邏輯檢視表

邏輯 (標準) 檢視表是 SQL 查詢定義的虛擬資料表。不會儲存任何實體資料。而是儲存從基礎資料表擷取資料所需的查詢邏輯。查詢邏輯檢視區塊時,BigQuery 查詢引擎會將檢視區塊展開為基礎查詢。這表示每次呼叫檢視表時,BigQuery 都會重新執行檢視表。

邏輯檢視區塊的優點包括:

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

具體化檢視表

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

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

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

邏輯檢視表與具體化檢視表的比較

雖然邏輯檢視是預設的檢視類型,但如果您經常查詢大型或運算成本高昂的檢視,則應考慮建立具體化檢視。邏輯檢視區是虛擬的,可重複參照一組資料,但不會實際儲存任何資料。實體化檢視區塊是使用 SQL 定義,就像邏輯檢視區塊一樣,但會實際儲存 BigQuery 用來提升效能的資料。

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

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

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

何時使用邏輯檢視區塊

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

具體化檢視表的使用時機

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

授權檢視表

您也可以建立授權檢視表,將來源資料集中的部分資料分享至次要資料集的檢視表。接著,您可以將這個檢視區分享給特定使用者和群組 (主體),這些對象可以查看您分享的資料並對其執行查詢,但無法直接存取來源資料集。

您可以為邏輯或具體化檢視表建立授權檢視表。具體化檢視表的授權檢視表稱為「授權具體化檢視表」

最佳做法

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

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

後續步驟