本文是 DB4 distributed SQL 選型的 entry point deep article — 讀者進來時還沒決定哪個 vendor、甚至還沒釐清「我是不是該換 distributed SQL」。本文先用 撞牆訊號分型 幫讀者識別自己屬哪條 driver path、再進三軸 vendor 對比、最後落到 team size + sizing 邊界檢查。配合 CockroachDB vendor overview + 1.11 全球分散式 OLTP 閱讀。寫作參照 vendor deep article methodology


為什麼先講 driver path、不直接比 vendor

團隊評估「全球分散式 OLTP 三選一」時最常見的源頭錯誤:先比 vendor、再回頭問「我為什麼要 distributed SQL」。三家 vendor 文件都說「跨 region 強一致 SQL」、看不出實際取捨;做錯選擇後遷移成本極高。

正確順序應該反過來:先識別 自己為什麼要評估 distributed SQL、再進 vendor 比較。三條 driver path 各自的訊號、適配 vendor、決策路徑都不同 — 不識別 driver path 直接比 vendor 是源頭錯誤。

讀者進來最常問的問題(多數會問錯順序):

  • 我是不是真該換 distributed SQL、還是 Aurora / Cloud SQL 還能撐?
  • Spanner 在 Google 跑了 10 年、CockroachDB 跟 DSQL 比較新、成熟度差多少?
  • 我有 PostgreSQL 應用、三家相容性差在哪?
  • 跨雲是硬需求還是被 fear 推的?
  • DSQL 2024 才 GA、production 風險多大?
  • 我團隊 50 人能不能養 self-managed CockroachDB?
  • Spanner 100 pu 起跳對我中小 PG workload 划算嗎?

7 題本文都會回答、但先回答「你是哪條 driver path」這個前置問題 0。

三條 driver path 的 case anchor

  • 9.C39 DoorDash:Aurora Postgres 1.636 M QPS single-primary 撞牆 → 換 multi-primary、PostgreSQL wire 相容降低遷移阻力(F4.1 / F4.2 / F4.4)
  • 9.C40 Netflix:Cassandra eventual consistency 撐不住 transactional → 補 distributed SQL、self-managed 380+ cluster + Database Platform Team(F4.6 / F4.9)
  • 9.C41 Hard Rock Digital:Wire Act 合規驅動 + 50 人 tech team + Outposts 混合部署(F4.10 / F4.14)

對照 9.C10 Spanner planetary scale 提供 Spanner ground truth(含 sizing barrier、F3.16)、9.C14 Standard Chartered 提供 Aurora 受監管金融的另一條路徑、9.C4 DraftKings Aurora financial ledger 提供 Aurora 內 business sharding 路徑(不換引擎)。

撞牆訊號分型:你的 driver path 是哪一條(前置問題 0、F4 Frame 1)

讀者進來前先回答:你 為什麼 要評估 distributed SQL?三條 driver path 各自的訊號、適配 vendor、決策路徑都不同。

Path A — single-primary 寫入撞牆(9.C39 DoorDash 路徑、F4.2 + F4.6)

訊號:

  • 寫入量持續成長、Aurora / RDS / Cloud SQL primary CPU + WAL flush rate 接近上限
  • 轉折點 不是 IOPS、是 primary CPU + WAL flush rate(F4.2、DoorDash 策略段 1)
  • 已嘗試 vertical scale primary、撞 instance ceiling

DoorDash concrete reference:2020-04-17 高峰 > 1.636 M QPS、multi-hour outage(觀察段表格)。Scope warning(F4.1、case 自帶警示):1.636 M QPS 是 Aurora 撞牆的痛點 — 不是「CockroachDB throughput claim」、case 沒揭露遷移後單一 CockroachDB cluster 的峰值、只說「跑更多 cluster、alert volume 反而下降」。

適配 vendor:CockroachDB / Aurora DSQL / Spanner 都解、選擇看其他軸。

Path B — eventual consistency 缺口(9.C40 Netflix 路徑、F4.6)

訊號:原本用 Cassandra / Riak / DynamoDB eventual consistency、遇到 5 條件並存 需求:

  1. multi-active topology(多 region 都可寫)
  2. global consistent secondary index(跨 region 一致的二級索引)
  3. global transaction(跨 row / 跨 region 的 ACID)
  4. open source
  5. SQL

Cassandra 在 transactional 場景下 湊不齊 這五項。Netflix 2019 評估後選 CockroachDB(5 條件 case 直接列出、判讀段 1)。具體場景:Studio Cloud Drive(強一致 metadata + 全球可寫)、Open Connect 控制平面、Spinnaker(持續交付)、Maestro(ML / 資料 workflow)、Gaming 控制平面。

適配 vendor:CockroachDB(open source + SQL 兩條件硬卡)、Spanner(若 GCP-only 可放鬆 open source 要求)。

Path C — 合規驅動的地理邊界 + 跨 boundary 業務邏輯需求(9.C41 Hard Rock 路徑、F4.10)

訊號:

  • 法規要求資料留某地理邊界(Wire Act 跨州、GDPR 跨國、各州博彩牌照)
  • 同時 業務邏輯需要跨 boundary(跨州統一帳戶 / 跨州 reporting / 欺詐偵測)

Hard Rock concrete reference:跨 8 州(AZ / IN / TN / FL / OH / IL / NJ / VA)+ AWS Outposts + 邏輯一個 cluster(觀察段表格)。詳細 schema 配置見 locality-aware schema

適配 vendor:CockroachDB(locality + placement + Outposts)、Spanner(GCP region 內 placement、無 Outposts 等效)、Aurora DSQL 跨 region 強一致但 Outpost 部署現階段未完整覆蓋。

不該換 distributed SQL 的訊號

  • single-region OLTP 已足夠
  • 寫入量未撞 single-primary 天花板(Aurora db.r6g.16xlarge 還沒滿)
  • 無跨 region 業務需求
  • 無跨 boundary 合規需求

→ PostgreSQL / Aurora 足夠、distributed SQL overhead(寫入 2-5x latency、ops 複雜度)不划算。對應 9.C4 DraftKings 走 Aurora + application sharding 的路徑、不換引擎也能解單主寫入瓶頸。

數字口徑:本段「2-5x latency」屬通用工程估算(Raft / Paxos round trip 跟 single-leader replication 的 latency ratio)、case 未直接揭露對照數字、實際值依拓樸 / 寫入大小 / 一致性層次而異、應該以自家 benchmark 驗證。

核心機制:三軸 vendor 對比

完成 driver path 識別後、進三軸 vendor 對比。

軸 1 — 部署 topology

Vendor部署何時是硬條件
CockroachDBcross-cloud + on-prem + Cockroach Cloud跨雲 / on-prem hybrid 必要時
SpannerGCP-only不適合非 GCP 環境
Aurora DSQLAWS-only不適合非 AWS 環境

Path C 場景(Hard Rock Outposts hybrid)強制走 CockroachDB — 另兩家不提供等效部署。

軸 2 — Managed 成熟度

Scope warning(來源分層):3 case 都沒揭露成熟度比對、本軸依 case + vendor 公開文件 + 外部知識合成:

  • Spanner:10+ 年 Google 內部 + 外部 GA(依 9.C10 case + Google research paper、屬 vendor 公開文件 + dogfood frame)
  • CockroachDB:自管 + Cockroach Cloud(managed 較新、依 Cockroach Labs 公告)
  • Aurora DSQL:2024-05 GA(依 AWS 公告)

引用紀律:「Spanner 10+ 年」是 vendor 公開 + Google dogfood 的合成、不是 case 直接揭露的 production stability 數字。Aurora DSQL「2024-05 GA」屬 AWS 公開公告、production case ground truth 還在累積。引用時要明示來源層次。

軸 3 — SQL 相容性

VendorSQL相容程度
CockroachDBPostgreSQL wire protocolprotocol-level 相容、SQL 行為要 audit
SpannerGoogleSQL + 部分 PostgreSQL 方言GoogleSQL native、PG 方言是子集
Aurora DSQLPostgreSQL(AWS managed control plane)PostgreSQL-compatible、AWS 操作模型

PostgreSQL 相容性 audit checklist 4 項(F4.4、DoorDash 揭露)

DoorDash case 揭露 PG wire protocol-level 相容、SQL 行為「仍要驗證」。把這個警語展開成 audit checklist:

  1. Serializable default:CockroachDB default SERIALIZABLE、PG default READ COMMITTED → application transaction 行為差異(細節見 transaction retry pattern)。Aurora DSQL 預設行為要看 AWS 公告。
  2. Retry semantics:CockroachDB 發 40001 serialization_failure、application 必須包 retry loop。PG / Aurora 預設不需要、application 沒 retry middleware。Aurora DSQL 比照 CockroachDB 模型、需要 retry loop。
  3. Partial index:CockroachDB 支援程度與 PG 有差異、application 用到的 partial index 要逐一驗證。Spanner GoogleSQL 跟 PG 行為不同。
  4. 其他 SQL 行為:sequence、auto-increment、stored procedure、custom function、extension 等都需 case-by-case audit。

引用紀律:DoorDash 揭露的是「PG wire protocol-level 相容、SQL 行為要 audit」這個 fact、本章把 audit 內容展開成 4 項屬通用工程議題、不是 DoorDash case 直接揭露。

Consensus 機制差

Vendor共識硬體依賴
CockroachDBHybrid Logical Clock + Raft純軟體 + NTP
SpannerTrueTime + PaxosGPS + atomic clock
Aurora DSQL類 Spanner 概念、AWS 專屬AWS timing infra(未完全公開)

三家共識機制的差異直接決定 external consistency 的實作路徑:Spanner 用 TrueTime + commit-wait 撐 external consistency;CockroachDB 用 HLC + max-offset 撐 linearizability、不保證 external consistency;Aurora DSQL 走類 Spanner 路徑但細節未完全公開。三家 multi-region 配置都吃 Cross-Region Quorum 的物理 latency tax。詳細機制見 HLC + Raft consensus

Pricing model 差

  • CockroachDB self-managed:node × resource、cluster 至少 3 node
  • Cockroach Cloud / Spanner / DSQL:consumption-based(read / write / storage / network)

Sizing barrier 邊界(F3.16、9.C10 Spanner case 揭露)

Spanner 100 processing unit 起跳是 最小 footprint — 對中小 PostgreSQL workload 是 cost 邊界:

  • workload 月寫入若只夠 PG db.m6g.large 級別、付 Spanner 100 pu 起跳 cost 不對
  • CockroachDB 最小 3 node、storage / compute 線性 — 中小 workload 較友善
  • Aurora DSQL consumption-based 無 minimum、中小 workload 最友善(但 production case 累積較少)

判讀:sizing barrier 是 vendor 強制最小 footprint、不是「啟動成本」— 即使 workload 縮小、minimum 不會降。中小 PG workload 直接套 Spanner = 付不必要的 minimum cost。

對應 distributed SQL 卡quorum 卡vendor lock-in 卡

決策樹:七問題

前置問題 0 在 撞牆訊號分型 段已回答(你的 driver path 是 A / B / C 哪一條)。以下進三家 vendor 對比的七個問題。

問題 1:是否硬需求跨雲 / on-prem?

  • Yes → CockroachDB(唯一選項;對應 9.C40 Netflix 跨 AWS region、9.C41 Hard Rock AWS Outposts 混合)
  • No → 進問題 2

跨雲是 硬需求 而不是 fear-driven 訊號:

  • 真硬需求:法規明文跨雲、acquisition 後多雲整合、vendor risk 政策強制
  • fear-driven:「萬一 AWS 全球 outage」(多數公司實際走 single-cloud、跨雲 portability premium 卻沒實際 multi-cloud 部署)

數字口徑:本段「多數公司 single-cloud」屬通用工程估算、case 未揭露明確比例、實際分佈依產業 / 監管 / 規模而異。判斷自己是否需要跨雲時、看具體規範跟 risk 條款、不直接套通用比例。

問題 2:已在 AWS 還是 GCP 還是中立?

  • AWS 深 → Aurora DSQL(操作模型對齊、PostgreSQL 相容)
  • GCP 深 → Spanner(10 年成熟、Google 內部驗證)
  • 中立 / 多雲 → CockroachDB(可 portable)

雲商生態深度判讀:IAM / VPC / monitoring / cost mgmt 已深度整合 AWS → Aurora DSQL 整合阻力低;同樣道理 GCP → Spanner。

問題 3:production 風險預算?

  • (金融 / 醫療)→ Spanner(最成熟)或 CockroachDB(>5 年外部 production case)
  • → 三者皆可
  • (願意當 early adopter)→ Aurora DSQL(2024 GA)

風險預算對應的不是「會不會掛」、是「邊界 case 文件成熟度 + production troubleshooting case 量」。Aurora DSQL 2024 GA、production case 累積中、邊界 case 仍在被發現。

問題 4:PostgreSQL 相容性是 hard requirement?

  • Yes(既有 application)→ CockroachDB 或 Aurora DSQL(兩者都做 PG 相容、但走 audit checklist 驗證 SQL 行為)
  • No → Spanner(GoogleSQL 也可)

PG hard requirement 訊號:application 用 PostgreSQL-specific feature(partial index、JSONB operator、PostGIS、PG extension 生態)、ORM / driver 深度綁 PostgreSQL wire。

問題 5:管理負擔誰承擔?

  • 自管 → CockroachDB(唯一可自管)
  • Managed → 都行、依雲商生態

自管 vs managed 不只是「省人月」、是「邊界 case 出現時誰修」— managed 的 vendor 負責、自管的自己負責。

問題 6:team size 是否撐得起 self-managed(F4.14、9.C41 Hard Rock + 9.C40 Netflix 揭露)

distributed SQL 的 ops 槓桿來自系統內建 Raft / placement 把「DBA 養單區、跨區 sync 養運維」工作量壓進系統內。

Hard Rock 50 人 tech team 估「若用 PostgreSQL 需多加 10-20 工程師」(觀察段表格 + 策略段 4)。Case 自帶警示:「省了 10-20 工程師」是 機會成本(沒招那麼多 DBA)、不是 節省支出(已 hire 後解雇)。引用必須明示口徑:

  • 正確:「distributed SQL 對小團隊的 ops 槓桿 = 不必招那麼多 DBA」
  • 錯誤:「上 CockroachDB 可裁員」、「節省人月支出」

Self-managed 規模化的另一極:Netflix 養 380+ cluster 需要 專屬 Database Platform Team(含 backup / upgrade / incident response / capacity review、F4.9)。沒這量級團隊直接 self-host 大規模 cluster 是 ops 自殺、Cockroach Cloud 才是合理路徑。判讀訊號:「self-managed cluster 數量 vs 平台團隊規模」轉折點 case 沒講具體閾值、引用時不可宣稱閾值、但方向清楚:

  • team size 小(< 100 人 tech team、無專屬 DB platform team)→ Cockroach Cloud / Spanner / DSQL(managed)優先
  • team size 大 + 有專屬 DB platform team → self-managed CockroachDB 可考慮
  • team size 中等但要 self-host 大規模 cluster → 評估專屬 platform team 投資後再決定

問題 7:sizing 是否撐得起 vendor minimum(F3.16)

  • Spanner 100 processing unit 起跳對中小 PG workload 是成本門檻、月寫入 < 某 baseline 時付 Spanner 起跳費不划算
  • 中小 workload 但需 multi-region 強一致 → CockroachDB 3 node 起 / Aurora DSQL consumption-based 較友善
  • 大 workload(已過 single-primary 撞牆訊號)→ 三家皆可、進問題 1-6 再篩

Cluster boundary 顆粒:per-app cluster vs 邏輯一個 cluster(CockroachDB cluster boundary SSoT)

位置標:本段是 _module-outline.md Section G「CockroachDB cluster boundary 顆粒」的 SSoT 主寫段、是 已選 CockroachDB 後 的拓樸決策(跟前面七問題 vendor 選擇分流)。其他 vendor cluster boundary 議題不在本段重複展開 — Aurora fleet 治理(business sharding / 200 cluster 模式)見 aurora/read-replica-scaling、MongoDB blast radius 切多 cluster(Toyota 20 DB 模式)見 mongodb/shard-key-selection

選完 vendor 還有一個正交的拓樸決策:CockroachDB cluster 的「顆粒」要切多細。一個微服務一個 cluster(per-app)、還是多個微服務共用一個邏輯 cluster(shared / 邏輯一個 cluster)。這條軸的判讀獨立於跨雲 / 風險預算 / 管理負擔等七問題、是 cluster 拓樸 議題、不是 vendor 選擇議題。判讀核心是 blast radius 的取捨 — 是把故障半徑限縮在單服務(per-app)、還是接受邏輯 cluster 內事故跨業務影響但換 transactional cross-domain 能力(邏輯一個 cluster)。本段是 CockroachDB cluster boundary 顆粒的主寫位置、其他 sibling 文章(hlc-raft-consensussurvival-goalslocality-aware-schema)cross-link 不重複展開。

Per-app cluster(Netflix 380+ 路徑、F4.7 揭露)

每個微服務 / 每個業務邊界各自獨立 cluster。Netflix 揭露的具體形貌:380+ cluster、每個 cluster 規模小(屬「artery of small DBs」哲學、不是巨型 DB)、每個服務 own 自己的 schema 跟容量。

判讀訊號:

  • 服務之間資料 硬隔離(compliance / blast radius / 不同 SLA tier)— 共用 cluster 一旦 schema migration / hot range 出事、影響面跨服務
  • 跨服務 query 需求低(沒有 cross-domain JOIN 場景)
  • 容量規劃可以 per-cluster(每個服務自己估、不需共池)
  • 有專屬 Database Platform Team 養 cluster lifecycle(backup / upgrade / incident response / capacity review、F4.9)— ops surface area 隨 cluster 數 線性成長

代價:ops surface area 大、每個 cluster 都要獨立 upgrade / monitoring / capacity review。沒這量級平台團隊直接 self-host 380 cluster 是 ops 自殺。

邏輯一個 cluster(Hard Rock 路徑、F4.10 揭露)

業務邏輯上是 一個 CockroachDB cluster、物理上跨多地理 placement(locality + replication zone 把 range 釘到特定 region / AZ / Outpost)。Hard Rock 揭露的具體形貌:跨 8 州 + AWS Outposts、邏輯一個 cluster、跨州統一帳戶 / 跨州 reporting / 欺詐偵測在同一 cluster 內做 transactional query。

判讀訊號:

  • 跨服務 / 跨地理需要 transactional query(跨州統一帳戶、跨業務統合 reporting)— 拆獨立 cluster 會破壞業務邏輯
  • 合規顆粒 到 region / 州 / AZ、但 不要求 完全隔離 cluster(Wire Act 要求州內運算、但允許跨州 application 邏輯)
  • Team size 中小(Hard Rock 50 人 tech team)、ops surface area 集中比攤平好管
  • 容量規劃集中、跨服務資源共享(不同服務的 range 可以 colocate 同 cluster)

代價:cluster 內複雜度高(要設計 placement / locality / replication zone 把 range 釘對地方)、blast radius 是 整個邏輯 cluster、cluster 級事故影響跨業務。

兩條路徑的判讀軸

判讀軸Per-app cluster(Netflix)邏輯一個 cluster(Hard Rock)
服務隔離度硬隔離(不同 SLA / compliance tier)弱隔離(同業務域、共用 placement 策略)
跨服務 query 需求高(transactional cross-domain)
Blast radius限縮在單服務整個邏輯 cluster
Ops surface area線性成長(每 cluster 獨立 lifecycle)集中但複雜度高(cluster 內 placement)
容量規劃顆粒Per-cluster 獨立估集中估、跨服務共池
平台團隊要求高(cluster 數越多越剛性)中(cluster 數少但 placement 複雜度高)

判讀順序:先問「跨服務 query 需要 transactional 嗎」— Yes 偏邏輯一個 cluster、No 進下一條;再問「服務之間 SLA / compliance 是否硬隔離」— Yes 偏 per-app、No 看 team / ops 槓桿。

跟 Aurora fleet 治理的本質差異

Aurora fleet 治理 SSoT(read-replica-scaling 邊界段)展開的是 Aurora cluster 之間 怎麼拆(business sharding / blast radius / read fanout),cluster 是 single-primary 抽象、拆 cluster 是 繞過 single-primary 上限。

CockroachDB cluster boundary 的問題不一樣 — CockroachDB 本身就是 distributed、單 cluster 內可橫向擴展、cluster boundary 是 業務 / 合規 / blast radius 邊界、不是繞 single-primary。

Aurora fleetCockroachDB cluster boundary
拆 cluster 動機繞過 single-primary 寫入上限隔離 blast radius / 合規邊界 / 平台分權
單 cluster 上限寫入 capacity(single-primary)範圍大(distributed、Raft 內擴)
跨 cluster query應用層拼(無 transactional 保證)一樣應用層拼(除非邏輯一個 cluster)
典型形貌DraftKings 200 cluster(business sharding)Netflix 380+(per-app)/ Hard Rock 1(logical)

兩條路徑的 拆與不拆 動機本質不同。Aurora 拆是 被迫(單 cluster 撐不住)、CockroachDB 拆是 選擇(單 cluster 撐得住、拆是為了治理)。

跨 vendor 路徑對照

  • Aurora fleet(DraftKings 200 cluster)— business sharding 繞 single-primary 上限、每 cluster 仍可多 service、平均負載低(9.C4 case 揭露單 cluster ~80 ops/sec、200 cluster 加總 17K ops/sec)
  • CockroachDB per-app(Netflix 380+)— 微服務級拆 cluster、artery of small DBs、需要專屬 Database Platform Team;單 cluster 內 Range Sharding + Leaseholder 負責內部 scaling
  • CockroachDB 邏輯一個(Hard Rock)— 跨地理單一 cluster、locality + placement 撐合規 + transactional 跨域、本地化讀靠 Follower Read 降低跨 region cost
  • CockroachDB fleet per-jurisdiction(Standard Chartered)— 每監管市場一個 cluster、合規 禁止 跨市場資料流動時的 forced pattern、跟 Hard Rock 對照(合規顆粒粗到要拆 vs 細到能用 placement)

進階閱讀:合規驅動的 cluster boundary 選擇見 locality-aware-schema;單 cluster 容量規劃見 hlc-raft-consensus 容量與觀測段。

失敗模式:常見錯配

過度 fear AWS / GCP lock-in

承接 問題 1:是否硬需求跨雲 段的 fear-driven 訊號(多數場景單雲、跨雲是想像中需求)— 把 fear 當硬需求選 CockroachDB,付 portability premium(自管 ops + Cockroach Cloud 較新)卻沒實際 multi-cloud 部署,結果付的是 lock-in 保險、實際沒用上。

判讀:跨雲訊號要 具體場景(acquisition 後整合 / 法規明文 / vendor risk 政策強制)、不是 fear。

低估 DSQL 成熟度風險

2024-05 GA、production case 少、邊界 case 文件不全 — early adopter 才適合。production 風險預算低的場景(金融 / 醫療 / 合規嚴格)不應該選最新 GA 的服務。

Spanner 假設 PostgreSQL 全相容

Spanner PostgreSQL interface 是 子集、部分 PostgreSQL feature 不支援。應用 migration 仍需 audit、不可直接 lift-and-shift。

Self-managed CockroachDB 低估 ops cost(9.C40 Netflix concrete reference、F4.9)

Raft / backup / upgrade / monitoring 自管比 PostgreSQL 複雜、DBA bandwidth 沒到位變 disaster。Netflix 養 380+ cluster 需要 專屬 Database Platform Team — 含 backup、upgrade、incident response、capacity review。

判讀訊號:「self-managed cluster 數量 vs 平台團隊規模」轉折點 case 沒講具體閾值、引用時不可宣稱閾值、但方向清楚 — 小規模 self-managed 不需要、大規模一定需要、之間有 grey zone 要實際評估團隊能力。

用 distributed SQL 解 single-region OLTP

90% 場景 PostgreSQL / Aurora 夠用、distributed SQL overhead 是 2-5x latency(Raft round trip 額外成本)。沒撞 single-primary 寫入上限的情況下、上 distributed SQL 是付不必要的 latency premium。

合規邊界誤判

受監管市場可能 不能 用任何跨境 distributed SQL(Standard Chartered 模式)、要拆每市場獨立 cluster。反過來、合規顆粒小(跨州 vs 跨國)+ 跨 boundary 業務邏輯需求高(跨州統一帳戶)時、Standard Chartered fleet 拓樸不適合、需走 Hard Rock locality + placement 路徑(細節見 locality-aware schema)。

Sizing barrier 誤判(F3.16)

中小 PG workload 直接套 Spanner 100 pu 起跳、付的是不必要的 minimum cost。中小規模的硬一致 multi-region workload、CockroachDB 3 node / Aurora DSQL consumption-based 更划算。

Team size 誤判(F4.14)

把「省 10-20 工程師」當已 hire 後可裁員的節省支出、實際是 機會成本(沒招那麼多 DBA)。上 CockroachDB 不代表可裁掉現有 DBA — 現有 DBA 反而要轉型成 distributed SQL 運維。

容量與觀測

三家共同 metric

  • write QPS
  • cross-region latency p99
  • storage growth
  • replica lag(CockroachDB Raft / Spanner Paxos / DSQL replica)

觀測黑箱程度

  • CockroachDB Console:暴露 Raft / range / leaseholder 細節、observability 細
  • Spanner / DSQL:managed、metric 經 GCP Cloud Monitoring / AWS CloudWatch、observability 黑箱程度高 — 邊界 case troubleshooting 仰賴 vendor support

容量公式

write QPS × replication factor × cross-region latency = required node / capacity。中小 workload 撞 vendor minimum 才是真實 cost 下界。

Cost signal

三家定價模式不同、cross-region traffic 對 cost 影響都大:

  • CockroachDB self-managed:node × resource、可控但要自運維
  • Spanner:100 pu minimum + consumption、適合穩定 workload、中小 burst 不划算
  • Aurora DSQL:consumption-based、burst 友善、長期穩定 workload 累計可能比 Spanner 高

回路徑

邊界與整合

Sibling deep articles

Sibling 跨 vendor

Migration playbook

1.x 章節互引

何時不用本文

  • single-region OLTP 已夠(90% 場景)→ 用 PostgreSQL / Aurora、不必走 distributed SQL
  • 無 multi-region requirement、無跨 boundary 合規需求 → 同上
  • workload 規模未撞 single-primary 寫入上限 → 走 Aurora vertical scale + read replica 即可

相關連結