跳至主要內容
ESC
pca-architect-journey — 第 8/13 篇

PCA 架構之旅 08 — GCP 儲存服務選擇

PCA

到了第 8 步,你已經清楚「資料要存多久、存多大、讀寫比例、延遲需求」這些特性。現在要做的事只有一件:把特性對應到具體的 GCP 服務

這一步看起來簡單,其實是 PCA 考題最愛埋地雷的地方。七個儲存服務,每一個都有「最像但不對」的替身,選錯一個,整題就跟著翻車。


為什麼這一步重要

在 PCA case study 裡,題目很少直接告訴你「請用 Spanner」。它會給你一段描述:

  • 「全球用戶、強一致、金流交易、每秒數千筆寫入」
  • 「百 PB 時序資料、單鍵查詢 < 10ms」
  • 「分析師要用 SQL 查半年內的訂單」

你要從這些文字裡聽出關鍵詞,再對應到正確的服務。考生最常踩的三個雷是:

  1. 把 Cloud SQL 當萬用選項:看到「資料庫」就選 Cloud SQL,忽略規模或全球一致性要求
  2. 把 Firestore 跟 Bigtable 搞混:兩個都是 NoSQL,但設計哲學差很多
  3. 忘記 BigQuery 不是 OLTP:BigQuery 能做的事很多,就是不能拿來接前端交易

這一步選對了,後面的網路、安全、成本題才接得下去。


核心概念

GCP 的七大儲存服務與最適場景對照:

服務類型最適場景一致性規模上限
Persistent Disk (PD)BlockVM 掛載磁碟、資料庫底層單盤 64 TB
Cloud Storage (GCS)Object圖片、備份、資料湖、靜態網站強(物件層級)無限
Cloud SQL關聯式(區域)中小型 OLTP、單區域交易單實例 64 TB
Spanner關聯式(全球)全球交易、金融、多區強一致全球外部一致PB 級
Firestore文件 NoSQL行動 App、即時同步、低寫入量強(文件層級)PB 級
Bigtable寬列 NoSQL時序、IoT、廣告、推薦系統單叢集強一致;跨叢集複寫為最終PB 級,高吞吐
BigQuery資料倉儲分析型查詢、報表、ML 訓練資料EB 級

幾個分水嶺概念要記清楚:

  • OLTP vs OLAP:交易型用 Cloud SQL / Spanner / Firestore;分析型用 BigQuery
  • 區域 vs 全球:只在一個 region 跑用 Cloud SQL;跨 region 強一致用 Spanner
  • 結構化 vs 非結構化:有 schema 走資料庫;檔案、影像、日誌走 Cloud Storage
  • 低延遲讀寫 vs 高吞吐:Firestore 偏低延遲小量;Bigtable 偏高吞吐大量

思考框架

給任何一個儲存需求,依序問這五個問題:

  1. 這是檔案還是結構化資料? 檔案 → Cloud Storage;結構化繼續往下
  2. 是交易型還是分析型? 分析型(讀多、聚合、報表)→ BigQuery
  3. 需要跨 region 強一致嗎? 需要 → Spanner;不需要繼續往下
  4. 是關聯式還是 NoSQL? 關聯式 → Cloud SQL;NoSQL 繼續往下
  5. 寫入量大且是時序/IoT 嗎? 是 → Bigtable;否 → Firestore

額外兩個子問題幫你排除錯誤選項:

  • 資料要存超過一年但很少讀嗎? Cloud Storage Nearline / Coldline / Archive
  • 需要掛到 VM 當本地磁碟嗎? Persistent Disk(或 Hyperdisk)

走一遍範例 — 登雲書店

登雲書店是電商平台,會員、訂單、商品、圖片、瀏覽紀錄、報表都要存。我們一個一個對照:

資料選擇為什麼
商品圖片、封面圖Cloud Storage Standard非結構化檔案、需 CDN 分發
舊版封面、檔案歸檔Cloud Storage Coldline30 天後幾乎不讀、成本最低
會員資料、訂單主檔Cloud SQL for PostgreSQL台灣單 region、讀寫比 7:3、關聯式 JOIN
購物車、即時推播 tokenFirestore低延遲、前端 SDK 直連、文件結構彈性
瀏覽紀錄、點擊串流Bigtable每秒數萬筆寫入、時序查詢
每日營收、用戶行為分析BigQuery分析師寫 SQL、跨月聚合
Cloud SQL 底層磁碟Persistent Disk SSD由 Cloud SQL 自動管理

有兩個容易被試題誘導選錯的點:

  • 會員資料不選 Firestore:訂單要 JOIN 商品、用戶、物流,用關聯式來查比較直觀,而 Firestore 本來就不擅長跨文件查詢。
  • 瀏覽紀錄不選 BigQuery 當前端寫入:BigQuery 有串流 insert quota,而且延遲不適合接使用者操作。正確做法是 Bigtable 收資料,每日 batch 到 BigQuery 做分析。

如果登雲書店未來要做跨國電商(台日韓同一個帳號、同一個訂單表),這時候才會升級到 Spanner。在單一 region 階段,Cloud SQL 的成本效益遠優於 Spanner。


常見陷阱

  1. 覺得用 Spanner 取代 Cloud SQL「比較專業」:題目沒提到跨 region 強一致,選 Spanner 就是過度設計。Spanner 的授權成本比 Cloud SQL 高很多,考試常常拿成本來當排除條件。
  2. 用 BigQuery 當即時交易後端:BigQuery 的強項是 scan PB 級資料做聚合,不是接每秒上千筆的 UPDATE。看到「即時訂單狀態更新」就排除 BigQuery。
  3. 忘記 Persistent Disk 跟 Cloud Storage 不是替代關係:PD 是給 VM 當磁碟用;GCS 是 HTTP 存取的物件儲存。把使用者上傳的檔案塞進 PD,等於浪費 CDN 跟生命週期管理能力。

延伸閱讀


系列導航

🎯 換你練習

理論讀完,換自己來。到 架構師設計工作坊 · 步驟 8 填入你的 case study,邊寫邊內化。

pca-architect-journey — 8/13 完成 查看系列全覽 →

留言討論

徽章解鎖!