在雲原生與 Jamstack / Serverless(如 Vercel、Cloudflare Workers、AWS Lambda)盛行的今天,開發者可以在數秒內全球部署前端與邊緣函數。

然而,傳統的關聯式資料庫(如 AWS RDS PostgreSQL / MySQL)卻成為了現代架構體系中最大的阻礙:

  • 連線數瞬間耗盡:數千個短暫的 Serverless 函數同時連線,瞬間打爆資料庫連線池(Connection Pool);
  • 無法縮容到零(Scale to Zero):即使夜間完全無流量,仍需支付全天候昂貴的實例租金;
  • 分支開發極度痛苦:無法像 Git Branch 一樣秒級為每個 Pull Request 複製一個獨立的資料庫副本進行測試。

為了徹底打破這些桎梏,Neon 與 PlanetScale 代表了現代雲原生資料庫的兩大巔峰技術流派。

本文將帶你深入兩者的底層微架構,拆解計算儲存分離與分散式分片的革新秘密。


1. 兩大技術流派全景對比矩陣

評估維度Neon (Serverless PostgreSQL)PlanetScale (Vitess 分散式 MySQL)
底層資料庫引擎原生 100% 相容 PostgreSQL原生相容 MySQL (基於 YouTube Vitess 分散式中介軟體)
核心架構哲學計算與儲存徹底分離 (Disaggregated Compute & Storage)水平分庫分表與連接池池化 (Horizontal Sharding & VTGate)
資料庫分支 (Branching)極致(基於儲存層 Copy-on-Write,秒級建立 TB 級資料庫分支)基於 Vitess 邏輯分支與 Schema 鏡像
無流量縮容 (Scale-to-Zero)✅ 原生支援(無請求時計算節點完全凍結,秒級冷啟動恢復)託管環境自適應休眠
連線池治理內建基於 Rust 的 WebSocket / TCP 輕量 Connection Pooler透過 VTGate 提供抗數十萬併發的頂級連接池
水平擴展極限單計算節點垂直擴展 + 儲存無上限 + 多唯讀副本跨節點無限水平 Sharding 分片

2. Neon 底層架構:PostgreSQL 內核級計算儲存分離

Neon 的核心突破在於:將 PostgreSQL 的計算節點(Compute Node)改造成完全無狀態的臨時容器,而將儲存層下沉至自研的 Rust 分散式儲存引擎!

Neon Serverless PostgreSQL 計算儲存分離架構圖展示邊緣客戶端透過 PgBouncer 連線池接入無狀態 PostgreSQL 計算節點,後端儲存層由 Safekeeper 叢集、Pageserver 節點與 AWS S3 物件儲存構成的計算儲存分離架構。邊緣客戶端 (Vercel / Lambda / Workers)HTTP / WebSocket / TCPNeon Connection Pooler (PgBouncer in Rust)連線池化・毫秒級多路復用・抗突發流量無狀態 PostgreSQL 計算節點 (Stateless Compute VM)僅保留 Buffer Pool 與 SQL 執行引擎 | ❌ 本地無資料磁碟 (Scale-to-Zero)WAL 日誌串流與 8KB Page 按需拉取Neon 分散式儲存層 (Disaggregated Storage Architecture)Safekeeper Quorum 叢集Paxos 共識協議・持久化最新 WALPageserver 儲存節點重放 WAL・按需提供 8KB 資料頁面AWS S3 物件儲存(不可變歷史 Block 冷資料歸檔・無限擴展)

秒級資料庫分支(Copy-on-Write Branching)

  • 由於儲存層以不可變的 WAL 日誌組織,當開發者執行 neon branch create pr-123 時;
  • Neon 完全不需要複製物理數據,只需記錄一個快照指針(Snapshot LSN),在 1 秒內 就能為 PR 提供一個包含生產環境全量資料的獨立測試庫!

3. PlanetScale 底層架構:承載全球最大流量的 Vitess 引擎

PlanetScale 的底層採用了支撐 YouTube 數十億 QPS 的開源專案 Vitess:

PlanetScale / Vitess 分散式分片架構圖展示前端應用流量進入無狀態 VTGate 代理叢集,由 VTGate 執行連接池收斂與分散式 SQL 路由,下發給各個 VTTablet 管理的分片 MySQL 主從實例。業務應用程式請求 (MySQL 協議)100,000+ 併發連線VTGate (無狀態分散式查詢路由代理叢集)連線池收斂(萬級連線壓至數百)| 分散式 SQL 解析 | 跨分片查詢優化 | 查詢快取無狀態架構・支援任意水平擴展VTTablet 1 (Sidecar)MySQL Master (分片 1)數據範圍: Keyspace [-80)VTTablet 2 (Sidecar)MySQL Master (分片 2)數據範圍: Keyspace [80-]VTTablet 3 (Sidecar)MySQL Read Replica只讀副本・分析報表負載

PlanetScale 殺手級特性:無鎖 Schema 遷移(Deploy Requests)

在生產環境執行 ALTER TABLE 傳統上極易引發鎖表導致系統崩潰:

  • PlanetScale 引入了類似 GitHub PR 的 Deploy Request 流程;
  • 透過 gh-ost 原理在後台建立影子表並以 CDC 雙寫同步,切換過程零鎖表、零停機時間!

4. 總結與架構選型指南

  • 選 Neon (Postgres):
    • 開發現代 Serverless 全端應用(Next.js、Supabase、FastAPI);
    • 需要強大的 Git-like 數據庫分支 進行 CI/CD 預覽與測試;
    • 流量具有潮汐性,強烈需要 Scale-to-Zero(降至 0 成本)。
  • 選 PlanetScale (MySQL / Vitess):
    • 超大型企業核心交易業務,資料量達數十 TB 且持續高速增長;
    • 需要極致的 水平分庫分表(Horizontal Sharding) 與抗數十萬併發連線能力。