邏輯檢視表和具體化檢視表總覽
本文將說明及比較 BigQuery 中的邏輯檢視表和具體化檢視表。在現代資料倉儲中,檢視區塊是原始資料和商業智慧之間重要的抽象層。在 BigQuery 中,架構師通常會選擇兩種型別:邏輯 (標準) 檢視表和具體化檢視表。雖然這些檢視畫面共用相同的介面,但底層機制、效能設定檔和費用影響不同。
邏輯檢視表
邏輯 (標準) 檢視表是 SQL 查詢定義的虛擬資料表。不會儲存任何實際資料,而是儲存從基礎資料表擷取資料所需的查詢邏輯。
查詢邏輯檢視區塊時,BigQuery 查詢引擎會將檢視區塊展開為基礎查詢。也就是說,BigQuery 每次呼叫檢視區塊時,都會重新執行檢視區塊。
邏輯檢視區的優點包括:
- 沒有儲存空間負擔。由於系統不會儲存額外資料,因此您只需支付基本資料表的儲存費用。
- 即時準確度。由於查詢是在執行時執行,因此結果一律會反映基礎資料表的最新狀態。
- 邏輯抽象化。簡化複雜的聯結或套用資料列層級安全性,不必複製資料。
- SQL 彈性。支援全方位的 BigQuery SQL,包括複雜的視窗函式、使用者定義函式 (UDF) 和所有聯結類型。
具體化檢視表
具體化檢視表是預先計算的檢視表,會定期儲存 SQL 查詢的結果。與邏輯檢視區塊不同,實體檢視區塊會實際儲存運算資料,因此 BigQuery 無需重複處理原始基礎資料,即可更快提供結果。這項功能可預先處理查詢,減少大型資料集的查詢延遲時間,並降低常用查詢的運算成本。
BigQuery 具體化檢視表結合了預先計算資料的速度和即時檢視的準確度。他們透過下列方式達成此目標:
- 自動重新整理。當基礎資料表變更時,背景程序會更新具體化檢視表。
- 資料更新間隔。如果查詢發生時,背景重新整理作業尚未完成,BigQuery 會自動補償未處理的基礎資料表變更,提供最新結果。
- 智慧微調。如果查詢最佳化工具判斷具體化檢視表能更有效率地提供答案,就會自動將查詢從基本資料表重新導向至具體化檢視表。
比較
下表摘要列出 BigQuery 邏輯檢視表和具體化檢視表的異同:
| 尺寸 | 邏輯檢視 | 具體化檢視表 |
|---|---|---|
| 資料持續性 | 無 (虛擬) | 實體 (儲存在磁碟上) |
| 執行 | 每次呼叫檢視區塊時 | 預先計算;背景重新整理 |
| 資料過時 | 永不 | 選用 1 (透過重新整理) |
| 效能 | 變數 (基本資料表 從屬) | 穩定快速 |
| SQL 複雜度 | 無限制 | 有限制 |
| 最佳化目標 | 安全性和抽象化 | 提高速度並降低成本 |
| 維護和儲存空間費用 | No | Yes |
1 處理大型且經常變更的資料集時,--max_staleness 選項可提升查詢效能並控管成本。
何時使用邏輯檢視畫面
- 語意分層。將複雜的資料欄名稱重新命名為非技術人員也能理解的業務用語。
- 快速開發。如果邏輯變動頻繁,且您不想管理實體儲存空間的額外負擔,請使用這項功能。
- 整合資料來源。為 Looker Studio 或 BigQuery sharing (舊稱 Analytics Hub) 等資料視覺化工具提供資料來源。
具體化檢視表的使用時機
- 預先處理資料。準備匯總、篩選器、聯結和叢集,提高查詢效能。
- 資訊主頁加速。為 Looker 等商業智慧工具提供支援,這些工具經常查詢相同的匯總指標,例如每日活躍使用者。
- 對大型串流進行即時分析。可針對接收高速串流資料的表格,提供更快速的回應。
- 成本管理。減少對大型資料集重複執行昂貴查詢的成本。
最佳做法
如要建構完善的 BigQuery 環境,邏輯檢視區塊是整合所需資料的實用工具。預留具體化檢視區塊,做為特定高流量查詢模式的效能最佳化工具,這些模式涉及大量彙整作業。
如要瞭解如何監控具體化檢視區塊的使用情況和效能,請參閱 MATERIALIZED_VIEWS 檢視區塊。