bigtable-basics

bigtable-basics

熱門

協助建立與配置 Bigtable 執行個體及資料表、設計高效能 Schema 與查詢資料。當您需要設計 Bigtable Row Key、設定 Column Family、撰寫 SQL 查詢或用戶端函式庫(Java、Go、Python)程式碼,或是診斷效能與熱點(hotspotting)問題時,皆可使用此 Skill。此外,也適用於透過 gcloud 或 cbt CLI 配置 Bigtable 叢集。請勿用於一般 Cloud SQL 的管理作業。

1.6萬星標
1219分支
更新於 2026/8/4
SKILL.md
唯讀
名稱
bigtable-basics
描述

協助建立與配置 Bigtable 執行個體及資料表、設計高效能 Schema 與查詢資料。當您需要設計 Bigtable Row Key、設定 Column Family、撰寫 SQL 查詢或用戶端函式庫(Java、Go、Python)程式碼,或是診斷效能與熱點(hotspotting)問題時,皆可使用此 Skill。此外,也適用於透過 gcloud 或 cbt CLI 配置 Bigtable 叢集。請勿用於一般 Cloud SQL 的管理作業。

Bigtable Basics

本 Skill 提供管理與開發 Google Bigtable 的核心工作流程及指引。

核心原則

  • 控制面(Control Plane)與資料面(Data Plane):
    • 使用 gcloud 進行控制面操作:管理執行個體(Instances)、叢集(Clusters)、應用程式設定檔(App Profiles)、備份(Backups)與 IAM。建立資料表(Tables)、邏輯檢視表(Logical Views)、實體化檢視表(Materialized Views)及授權檢視表(Authorized Views)。
    • 使用 cbt 進行資料面操作:更新資料表、Column Families,以及讀取與寫入資料。
  • 效能優先: Bigtable 為 NoSQL 資料庫,其運作效率與 Row Key 設計息息相關。若遇到全表掃描(Full Table Scan),務必提醒其效能風險。
  • 用戶端選擇: 正式環境(Production)建議優先使用 JavaGo,相較於其他語言,這兩者能提供更優異的效能與更完整的功能支援。
  • 可觀測性(Observability): 診斷效能或熱點問題時,務必Key Visualizer(可透過 Cloud Console 存取)列為首要診斷工具,因為它能針對 Row Key 的存取模式提供最細緻的檢視角度。其次可利用 hot-tablets 工具、gcloud CLI 中的資料表統計資訊,以及 cbt readinclude-stats=full 選項來排查慢查詢(slow queries)。

[!IMPORTANT] 安全規則: 在非模擬器(emulator)環境中執行任何資料庫變更前,必須先取得使用者的明確確認。當提供會修改資料庫結構或資料的命令或說明時,必須提醒此安全要求。

常用情境速查(Quick Recipes)

1. 查詢資料

進行複雜轉換或聚合計算時請使用 SQL;對於較簡單的查詢模式,請使用 Key-Value API。注意:針對 _key 請使用精確比對、前綴(_key LIKE 'myprefix%')或範圍條件,以避免高昂的全表掃描。在可行情況下,建議使用明確的 Row 範圍(_key BETWEEN 'start' AND 'end')替代前綴比對,以獲得更好的效能。

若因存取模式多元、無法在單一 Schema 中全部滿足,導致無法避免昂貴的掃描作業(不論是全表掃描、大範圍前綴或大範圍條件查詢),請考慮以下兩種方案:

  • 若查詢用於面向使用者或對延遲敏感的應用程式,請使用連續實體化檢視表(Continuous Materialized Views),並針對額外的存取模式最佳化 Key。
  • 若次要存取模式頻率較低,例如 ETL、機器學習模型訓練或唯讀分析任務等批次處理情境,請改用 Bigtable Data Boost。

2. 操作資料

新增(Insert)、更新(Update)、遞增(Increment)及刪除(Delete)作業請使用 Key-Value API。SQL API 僅支援唯讀操作。

3. 資料模型定義(DDL)

SQL API 不支援 DDL 操作。資料表的建立、刪除與更新應透過 gcloud CLI 進行。邏輯檢視表與連續實體化檢視表雖以 SQL 查詢定義,但仍必須使用 gcloud CLI 來建立。

參考指南

常見工作流程

Schema 演進(DevOps)

  1. 正式環境的 Schema 變更建議優先使用 Terraform,以避免意外造成資料遺失。

  2. 若要進行手動 cbt 變更,在提出任何修改建議前,請先列出資料表的 Column Family 及 GC 策略(GC Policy)來確認現有狀態:

    cbt ls {table}
    

    若需要變更,請建立 Column Family 或更新 GC 策略:

    cbt createfamily {table} {family}
    cbt setgcpolicy {table} {family} "maxversions=5 AND maxage=30d"
    
  3. 完整語法請參考 infrastructure_management.md

外部資源