examlab .net 用最有效率的方法,考取最有價值的證照
本篇導覽 約 19 分鐘

GCP 資料庫解決方案:從 SQL 到大數據

3,630 字 · 約 19 分鐘閱讀 ·

為 ACE 考試提供 Google Cloud 資料庫的完整指南。比較 Cloud SQL、Spanner、BigQuery、Firestore 與 Bigtable。

立即做 20 題練習 → 免費 · 不用註冊 · ACE

理解 Google Cloud 資料庫產品組合

在雲端架構中,選擇正確的資料庫是效能與成本優化的關鍵。Google Cloud 提供了一系列從傳統關聯式資料庫到大規模分散式資料庫的解決方案。對於 Associate Cloud Engineer (ACE) 來說,你不需要成為資料庫管理員 (DBA),但你必須知道每一種資料庫的適用場景、如何部署它們以及它們如何進行擴展。

GCP 的資料庫通常分為 關聯式 (Relational)非關聯式 (NoSQL) 兩大類,另外還有專門為分析設計的 數據倉儲 (Data Warehouse)

白話文解釋

1. 城市的供水系統 (瑞士刀類比)

  • Cloud SQL: 像是一棟公寓的儲水塔。它服務於特定的人群(單一區域應用),維護簡單,適合標準需求。
  • Cloud Spanner: 像是覆蓋整個城市的自來水網。無論你在哪裡(全球分佈),水壓都一樣穩,且絕不會斷水。
  • MemoryStore: 像是家裡的熱水瓶。水量小但拿取極快,適合口渴時(快取)立刻喝到。

2. 圖書館與研究中心 (圖書館類比)

  • Cloud Firestore: 像是一個分類精細的借書卡目錄。你可以快速找到特定的書(單個文件),適合日常查閱。
  • BigQuery: 像是一個數位化的歷史研究中心。它不適合查某一本特定的書,但如果你想知道「過去 10 年科學類書籍的借閱趨勢」,它是最強大的工具。

3. 超級市場與倉庫 (工地類比)

  • Bigtable: 像是大型批發倉庫的輸送帶。它能處理海量的進出貨物(高吞吐量),但如果你想找一個細小的零件,手續會比較繁雜。

關聯式資料庫:Cloud SQL & Spanner

Cloud SQL (完全代管的 MySQL, PostgreSQL, SQL Server)

Cloud SQL 是處理 OLTP(聯機交易處理)的首選。它支援自動備份、主從複製 (Failover) 以及讀取副本 (Read Replicas)。對於大多數現有的 Web 應用程式,Cloud SQL 是最簡單的雲端遷移對象。 Source ↗

  • 擴展 (Scaling): 垂直擴展(增加 CPU/RAM)或增加讀取副本以分擔讀取壓力。
  • 可用性 (Availability): 啟用 高可用性 (High Availability, HA) 會在另一個可用區 (Zone) 建立一個備用實例。

Cloud Spanner (全球級關聯式資料庫)

Cloud Spanner 結合了關聯式資料庫的 ACID 特性與 NoSQL 的水平擴展能力。它是目前唯一能提供全球一致性、強一致性的分散式資料庫。 Source ↗

  • 適用場景:全球性的金融系統、遊戲帳戶管理、大規模供應鏈。

NoSQL 資料庫:Firestore & Bigtable

Cloud Firestore (文件資料庫)

Firestore 是一個無伺服器 (Serverless) 的文件資料庫,非常適合行動裝置和網頁開發。它支援即時資料同步和離線存取。 Source ↗

  • 架構:集合 (Collections) -> 文件 (Documents) -> 欄位 (Fields)。
  • 優勢:自動縮放,幾乎零運維。

Cloud Bigtable (大數據資料庫)

  • 特性:極高的讀寫吞吐量,毫秒級延遲。
  • 適用場景:IoT 資料流、廣告投放、金融市場分析。
  • 限制:不支援 ACID 交易,通常配合 Hadoop 或 Spark 使用。

ACE 考題若提到「每秒數百萬筆感測器讀數」或 IoT time-series 資料寫入,正解是 Cloud Bigtable,而不是 Cloud SQL 或 Firestore。Bigtable 的 wide-column 模型能提供所需的寫入吞吐量,但前提是 row key 不能用單調遞增的 timestamp 當開頭 — 那種設計會造成 hotspotting,導致單一節點吞下全部流量。 Source ↗

Firestore 的模式(Native vs Datastore)在建立資料庫時就決定了,之後無法切換 — 如果某個行動 App 一開始選了 Datastore Mode、後來才需要 real-time listeners,就必須整個資料遷移。另外,「Multi-region」Firestore(nam5/eur3)雖然可用性更高,但費用也更高,不要因為名字聽起來像而誤以為是免費贈送的。 Source ↗

數據倉儲:BigQuery

BigQuery 是 GCP 的明星產品,它是一個完全代管、無伺服器的數據倉儲。

關鍵概念

  • 儲存與運算分離 (Separation of Storage and Compute): 你可以儲存 PB 級的資料而不執行任何伺服器,只有在查詢時才會啟動計算資源。
  • 欄式儲存 (Columnar Storage): 按列儲存,這使得分析大量資料的速度極快。
  • 計費 (Pricing): 按儲存量和查詢處理的資料量計費。

考試陷阱:如果你需要執行複雜的 SQL 查詢來進行報表分析,選擇 BigQuery。如果你需要為 Web 應用程式提供毫秒級的單筆資料存取,選擇 Cloud SQL 或 Firestore。 Source ↗

選擇正確的資料庫

這是 ACE 考試中最重要的決策矩陣:

  1. 我需要 SQL (關聯式) 嗎?
    • 是 -> 資料量大且需要全球分佈? (是 -> Spanner / 否 -> Cloud SQL)
  2. 我是要進行分析 (OLAP) 還是交易 (OLTP)?
    • 分析 -> BigQuery
    • 交易 -> Cloud SQL / Firestore
  3. 我需要儲存極大量的鍵值對 (Key-Value) 或寬表資料嗎?
    • 是 -> Bigtable
  4. 我需要亞毫秒級的快取 (Cache) 嗎?
    • 是 -> MemoryStore (Redis/Memcached)

透過 gcloud CLI 管理資料庫

# 建立 Cloud SQL 實例 (PostgreSQL)
gcloud sql instances create my-db \
    --database-version=POSTGRES_14 \
    --tier=db-f1-micro \
    --region=us-central1

# 建立 Firestore 索引
gcloud firestore indexes composite create \
    --collection-group=orders \
    --field-config field-path=status,order=ascending \
    --field-config field-path=created_at,order=descending

# 在 BigQuery 中執行查詢
bq query --use_legacy_sql=false \
    'SELECT name FROM `my-project.my_dataset.my_table` LIMIT 10'

備份與恢復策略

  • Cloud SQL: 支援自動每日備份和時間點恢復 (Point-in-Time Recovery, PITR)。
  • BigQuery: 自動保留 7 天的資料修訂歷史(不需要手動備份)。
  • Firestore: 支援匯出資料到 Cloud Storage 進行長期封存。

時間點恢復 (PITR) 允許你將資料庫恢復到過去某個精確的時間秒數,這對於人為操作失誤(如誤刪資料表)的恢復至關重要。 Source ↗

GCP 資料庫最佳實踐

  1. 選擇正確的儲存類型:Cloud SQL 的 SSD 比 HDD 快得多,但也更貴。
  2. 使用專用 IP (Private IP):為了安全,應儘量透過 VPC 內部網路連接資料庫,而非使用外部 IP (Public IP)。
  3. 分割與叢集 (BigQuery):使用分割 (Partitioning) 和叢集 (Clustering) 來優化 BigQuery 的查詢成本和效能。
  4. 監控慢查詢:使用 Cloud Monitoring 和 Query Insights 來發現資料庫的效能瓶頸。

ACE 考試的常見場景

  • 情境:你正在開發一個手機遊戲,需要儲存數百萬玩家的排名,且希望全球玩家存取延遲都很低。
    • 解決方案Cloud Spanner (強一致性、全球分佈) 或 Firestore (多區域部署)。
  • 情境:你需要儲存來自數千個感測器的每秒數百萬條溫度資料。
    • 解決方案Cloud Bigtable (高寫入吞吐量)。

常見問題 (FAQ)

Q1: Cloud SQL 會自動縮放 (Autoscaling) 嗎? 答:儲存空間可以設定為自動增加,但 CPU 和 RAM(機器類型)需要手動或透過 API 調整。

Q2: BigQuery 支援傳統的 UPDATE 和 DELETE 嗎? 答:支援 DML 操作,但 BigQuery 的設計初衷是「追加」資料,頻繁的 DML 操作會比較昂貴且效率較低。

Q3: 什麼是 MemoryStore? 答:它是代管式的 Redis 或 Memcached,用於加速資料存取,減少對主資料庫的壓力。

Q4: 我可以把 MySQL 資料遷移到 Spanner 嗎? 答:可以,但因為架構不同,這不是簡單的複製貼上,通常需要重新設計結構 (Schema) 以適應水平擴展。

Q5: Firestore 的「原生模式 (Native mode)」與「Datastore 模式」有什麼區別? 答:原生模式支援即時更新和客戶端函式庫,適合行動 App;Datastore 模式支援極高的寫入吞吐量,適合後端處理。

ACE 總結清單

  • 區分 OLTP (Cloud SQL) 與 OLAP (BigQuery)。
  • 理解 Cloud Spanner 的全球一致性優勢。
  • 掌握各資料庫的垂直與水平擴展能力。
  • 知道如何選擇最符合成本效益的資料庫。
  • 了解 PITR (時間點恢復) 的重要性。

官方資料來源

更多 ACE 主題