GCP 數據

打破 CAP 定理的全球分散式資料庫:Cloud Spanner 與 AlloyDB 實踐

Cloud Spanner 是 Google Cloud 的全球分散式關聯式資料庫,靠自研的 TrueTime 全球時鐘技術,讓橫跨多地域的交易仍能維持強一致性與高可用性,逼近傳統分散式系統理論裡難以兩者兼得的極限。AlloyDB 則是高度相容 PostgreSQL 的企業級資料庫,效能經過針對 Google Cloud 基礎設施最佳化,並透過 AlloyDB AI 整合向量搜尋與生成式 AI 能力。兩者分別對應「全球規模的強一致性」與「PostgreSQL 生態系裡的高效能選項」這兩種不同需求。
打破 CAP 定理的全球分散式資料庫:Cloud Spanner 與 AlloyDB 實踐:文章重點卡

打破 CAP 定理的全球分散式資料庫:Cloud Spanner 與 AlloyDB 實踐

Cloud Spanner 是 Google Cloud 的全球分散式關聯式資料庫,靠自研的 TrueTime 全球時鐘技術,讓橫跨多地域的交易仍能維持強一致性與高可用性,逼近分散式系統理論裡「CAP 定理」認為難以兩者兼得的極限。AlloyDB 則是另一種定位:高度相容 PostgreSQL 的企業級資料庫,透過 AlloyDB AI 整合向量搜尋與生成式 AI 能力,適合既有 PostgreSQL 應用程式想要效能升級的場景。

這篇會先講 CAP 定理這個老問題,再看 Spanner 怎麼靠 TrueTime 逼近全都要,接著講 Spanner Graph 的圖與向量搜尋能力,最後把 AlloyDB 拉進來一起比較,講清楚兩者怎麼分工。

你將學到什麼

CAP 定理是什麼老問題?

分散式系統面對網路分區時,一致性與可用性很難同時做到滿分,這是理論上證明過的限制,不是工程沒做好。

TrueTime 怎麼逼近極限?

結合 GPS 訊號與原子鐘替每筆交易加上精準時間戳記,讓跨地域讀到的資料一律是最新已提交的狀態。

Spanner Graph 疊加向量搜尋

在既有關聯式資料表上直接建圖,還能做 KNN 精確搜尋與 ANN 近似搜尋,適合 GraphRAG 場景。

AlloyDB 的定位

高度相容 PostgreSQL,既有驅動程式與工具鏈大多能直接沿用,並透過 AlloyDB AI 整合向量搜尋與生成式 AI。

CAP 定理不是選擇題外的裝飾,是 Cloud Spanner 整套設計都在回應的核心限制,理解這一點,才看得懂 TrueTime 到底解決了什麼問題。

CAP 定理到底在說什麼,為什麼資料庫設計繞不過它?

CAP 定理討論的是分散式系統的三個特性:

  • 一致性(Consistency):所有節點在同一時間點看到的資料都相同,沒有新舊版本並存的情況。
  • 可用性(Availability):系統持續回應請求,即使部分節點故障也不會整個服務中斷。
  • 網路分區容忍(Partition tolerance):就算節點之間的網路連線中斷,系統仍要能運作,這在跨地域部署裡幾乎是必然會發生的情況。

CAP 定理說的是,當網路分區真的發生時,系統只能在一致性與可用性之間選一個優先,沒有辦法兩者同時滿分,這是理論上證明過的限制,不是工程師偷懶。

傳統上很多分散式資料庫的做法,是在設計時先選邊站:要嘛優先保證可用性、接受資料短暫不一致;要嘛優先保證一致性、接受系統在網路分區時部分不可用。

Cloud Spanner 想做的,是把「網路分區真的發生」這件事的機率與影響壓到極低,讓系統在絕大多數運作時間裡,同時維持強一致性與高可用性,而不是在設計初期就先認輸選邊站。

Spanner 怎麼靠 TrueTime 同時做到強一致性又高可用?

TrueTime 是 Google 自研的全球時間同步服務,結合 GPS 訊號與原子鐘,讓分散在世界各地的伺服器對「現在幾點」有一致且誤差極小的認知。

技術細節上,TrueTime 提供的不是一個單一時間點,而是一個帶有明確誤差範圍的時間區間,Spanner 在提交交易時會刻意等待,直到確定這個時間區間已經真正過去(業界稱為 commit wait),藉此保證即使誤差存在,不同節點對「這筆交易發生的先後順序」也不會產生歧義。這也是為什麼 TrueTime 需要仰賴 GPS 與原子鐘這類高精度時間源:時間誤差被壓得越小,commit wait 需要等待的時間就越短,交易延遲也越低。

Spanner 靠這個機制替每筆交易加上精準的提交時間戳記,藉此做到外部一致性:任何節點讀到的資料,都反映最新已提交的狀態,不會出現跨地域讀到舊資料的情況。

這套設計讓 Spanner 被官方定位為「always-on、可橫向擴展到近乎無上限」的資料庫,同時保有傳統 SQL 資料庫熟悉的 ACID 特性,這在全球分散式系統裡並不常見。

標題裡的「打破」是通俗說法

CAP 定理是數學上證明過的限制,Spanner 沒有真的違反它,而是靠 TrueTime 把網路分區的機率與影響壓到極低,逼近理論上很難兩全的目標。業界常用「挑戰」或「逼近」來形容,比較貼近技術現實,這也是這篇文章想澄清的地方。

在關聯式資料庫上建圖,跟專用圖資料庫有什麼不同?

Spanner Graph 不是另外一個獨立產品,而是建立在既有 Cloud Spanner 資料表之上的一層圖形查詢能力,你可以在既有關聯式資料表上定義節點與邊,也支援不用預先定義完整綱要的彈性建模方式。

官方後續也把 Spanner Studio 做成能視覺化建立與管理圖形綱要,用拖拉節點與邊的方式設計,取代手寫一長串 DDL 語句。

更進一步的是向量搜尋整合:Spanner Graph 支援 KNN 精確搜尋與 ANN 近似搜尋,可以用餘弦距離、歐氏距離、內積等多種距離函數,適合 GraphRAG 這類把知識圖譜與向量檢索結合的生成式 AI 應用場景。ANN 搜尋需要另外建立專用向量索引,且目前僅支援節點層級的搜尋,不含邊。

典型的應用情境包括供應鏈追溯(一筆原料經過哪些加工節點才變成成品)、社群網路裡的關聯分析(誰認識誰、透過幾層關係連接),或是把知識圖譜跟向量搜尋結合的 GraphRAG:先用圖結構做精確的關聯查詢,再用向量搜尋補上語意相近但沒有明確連結的內容。跟獨立部署一套專用圖資料庫比起來,這種做法省下維護另一套系統與資料同步的成本,代價是圖形查詢的進階功能通常不如專用圖資料庫齊全,要看場景複雜度取捨。

AlloyDB 跟一般 PostgreSQL 服務差在哪裡?

AlloyDB 定位完全不同,它是高度相容 PostgreSQL 的企業級資料庫服務,官方宣稱效能經過針對 Google Cloud 基礎設施的最佳化,具體效能倍數請以官方最新測試方法與公告為準。

架構上,AlloyDB 採用儲存與運算分離的設計,並在同一份資料上疊加一層欄式(columnar)快取,讓分析型查詢不用另外搬到獨立的資料倉儲,就能在同一個資料庫裡有不錯的分析效能,這也是它宣稱「相容 PostgreSQL 又比原生 PostgreSQL 更快」的架構基礎。

相容 PostgreSQL 的意義在於,既有的應用程式、驅動程式與工具鏈大多可以直接沿用,不用為了換資料庫重寫一整套資料存取層,這也是很多團隊評估遷移時最看重的一點。

面向Cloud SpannerAlloyDB
核心定位全球分散式強一致性資料庫高度相容 PostgreSQL 的企業級資料庫
一致性模型靠 TrueTime 做到跨地域外部一致性標準 PostgreSQL 交易一致性模型
典型情境全球規模、跨地域交易的核心系統既有 PostgreSQL 應用程式的高效能升級
圖與向量能力Spanner Graph 內建圖與向量搜尋AlloyDB AI 提供相容 pgvector 的向量搜尋

AlloyDB AI 跟 AlloyDB Omni 差在哪裡?

AlloyDB AI 是功能層的延伸,把生成式 AI 能力整合進資料庫本身:

  • 相容 pgvector 擴充套件的向量搜尋。
  • 結合關鍵字與向量相似度的混合搜尋。
  • 把日常語言提示轉成可執行 SQL 查詢的自然語言查詢能力,目前部分功能仍在預覽階段。
  • 時間序列預測、自帶機器學習模型(BYOML),以及外部模型端點管理。

AlloyDB Omni 則是部署層的延伸,讓你能在地端或其他雲端環境跑一套與 Google Cloud 版本功能對齊的 AlloyDB,2026 年的更新包含支援較新的 PostgreSQL 版本,以及預覽階段的靜態加密(TDE)能力,適合有混合雲或資料主權考量的企業場景。

AI 與 Omni 可以同時存在

AlloyDB AI 是功能,AlloyDB Omni 是部署位置,兩者不衝突。在地端部署的 Omni 上,一樣能用到 AlloyDB AI 的相關功能,不必因為選了地端部署就放棄向量搜尋與生成式 AI 這些能力。

該選 Spanner 還是 AlloyDB?

  1. 需要跨地域、全球規模的強一致性交易嗎? 有的話往 Cloud Spanner 想,這是它設計初衷要解決的問題。
  2. 手上已經有一套成熟的 PostgreSQL 應用嗎? AlloyDB 的相容性設計,讓遷移路徑相對平順,不用重寫資料存取層。
  3. 需要在關聯式資料上疊加圖形查詢與向量搜尋嗎? Spanner Graph 把這兩件事整合在同一個資料庫裡,省下維護獨立圖形資料庫的力氣。
  4. 有資料主權或混合雲的限制嗎? 這種情境下 AlloyDB Omni 值得認真評估,能在地端維持與雲端一致的功能集。
本文源起本文依 Google Cloud 官方文件(Cloud Spanner 總覽、Spanner Graph 向量搜尋文件、AlloyDB 與 AlloyDB AI 文件)整理,由酒Ann 以自己的視角編寫成中文導覽。實際效能數字、預覽階段範圍與功能支援請以 Google Cloud 官網 最新文件為準。
把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

Cloud Spanner 真的打破 CAP 定理了嗎?
嚴格來說沒有,CAP 定理是數學上證明過的限制,任何系統都繞不開。比較準確的說法是,Spanner 靠 TrueTime 這套技術,把網路分區發生的機率與影響壓到極低,讓系統在絕大多數時間裡同時維持強一致性與高可用性,逼近理論上很難達到的兩全其美,而不是真的違反了這個定理。這也是為什麼業界常用「挑戰」或「逼近」而不是「打破」來形容它,比較貼近技術現實。
TrueTime 到底是什麼技術?
TrueTime 是 Google 自行開發的全球時間同步服務,結合 GPS 訊號與原子鐘,讓分散在世界各地的伺服器對「現在幾點」有一致且誤差極小的認知。Spanner 靠這個機制替每筆交易加上精準的提交時間戳記,藉此做到外部一致性,也就是任何節點讀到的資料都反映最新已提交的狀態,不會出現跨地域讀到舊資料的情況。
Spanner Graph 是另外一個產品嗎?
不是,它是建立在既有 Cloud Spanner 資料表之上的一層圖形查詢能力,不需要另外搬到一個獨立的圖形資料庫。你可以在既有的關聯式資料表上定義節點與邊,也支援無需預先定義完整綱要的彈性建模方式,適合關係複雜、需要頻繁調整的資料場景,例如社群網路或供應鏈關係圖。
AlloyDB 跟標準 PostgreSQL 是什麼關係?可以直接搬過去嗎?
AlloyDB 是高度相容 PostgreSQL 的服務,官方宣稱針對 Google Cloud 基礎設施做了效能最佳化,具體效能表現會隨版本與測試方法調整,實際數字請以官方最新公告為準。相容性設計的用意是讓既有 PostgreSQL 應用程式與工具鏈可以平順接軌,但實際遷移仍建議先在測試環境驗證相依的擴充套件與行為是否完全一致,再排定正式遷移計畫。
AlloyDB AI 跟 AlloyDB Omni 是同一套東西的兩個名字嗎?
不是,兩者處理的是不同維度的需求。AlloyDB AI 是功能層,把向量搜尋、自然語言查詢、預測推論這類生成式 AI 能力整合進資料庫;AlloyDB Omni 則是部署層,讓你能在地端或其他雲端環境跑一套與 Google Cloud 版本功能對齊的 AlloyDB,兩者可以同時存在,也就是在地端部署的 Omni 上,一樣能用到 AlloyDB AI 的相關能力。