YDB:一套原始碼、兩種工作負載的分散式 SQL 資料庫
YDB 是一個開源分散式 SQL 資料庫,它將高可用性和可擴展性與強一致性和 ACID 事務結合在一起。
秒懂
- 它是什麼?
- YDB 是 Apache-2.0 授權的分散式 SQL 資料庫,主打強一致性、ACID 交易與橫向擴展。本文從架構、部署、相容模式到限制,檢視它是否值得進入你的技術棧。
- 適合誰用?
- YDB 適合需要跨節點 ACID 交易、且願意接受 YQL 或 PostgreSQL 相容層的團隊。它不適合只想用標準 SQL 的專案,也不適合只有單一可用區、不需要水平擴展的小型服務。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫在最近一天內有新的提交。
- 用什麼語言寫的?
- 主要是 C++(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它解決什麼問題,誰需要它
YDB 的定位很明確:給需要水平擴展的 OLTP 服務,同時保留強一致性和跨行交易。傳統關聯式資料庫在單機上很難無限擴張,而多數 NoSQL 系統又犧牲了交易。YDB 從零設計,把儲存與運算分開,讓兩者能獨立擴充。這不是給所有團隊的工具。如果你的資料量在單台機器就能處理,或你只需要簡單的鍵值存取,YDB 的分散式架構反而是負擔。它的目標使用者是那些流量會持續成長、且交易正確性不能妥協的服務開發者。
核心機制:儲存與運算分離,加上多可用區容錯
YDB 的架構把儲存層和運算層拆開。儲存節點負責資料持久化,運算節點執行查詢。這種分離讓你可以只加儲存或只加運算,不必整台機器擴充。容錯方面,YDB 支援三可用區部署,文件聲稱在單一可用區完全故障時,叢集仍能同時處理讀寫。這不是靠備援機器,而是靠資料在三個區域間複製,故障後自動恢復冗餘。對比傳統主從複製,YDB 的設計在區域故障時不需要手動切換,應用程式感受到的中斷時間會短很多。但要注意,三可用區意味著至少三倍的儲存成本,而且網路延遲會增加,這在文件裡沒有明說,但分散式系統的物理限制躲不掉。
資料模型:行式、列式,還有佇列
YDB 同時支援行式與列式表格,前者適合交易,後者適合分析。這讓一個叢集可以同時服務 OLTP 和 OLAP 工作負載,不必為了分析查詢另外建資料倉儲。此外,YDB 提供持久佇列,文件稱之為 topics,用於在系統間搬移資料。這個設計很實際,因為很多應用需要把交易資料流到分析系統,YDB 把佇列整合進來,省掉額外的訊息中介軟體。不過,列式表格的效能如何,文件沒有提供任何基準數字。實際使用前,你必須用自己的資料和查詢模式測試,否則無法判斷它是否真的能取代專門的列式資料庫。
SQL 方言與相容模式:YQL 為主,PostgreSQL 為輔
YDB 使用自己的 SQL 方言 YQL,文件提供完整的參考手冊。YQL 不是標準 SQL,它有自己的語法、函式和資料型別。這對熟悉 PostgreSQL 或 MySQL 的開發者來說,學習曲線很陡。為了緩解這個問題,YDB 提供 PostgreSQL 相容模式,涵蓋表格操作。同時也有 Kafka 相容模式,讓既有 Kafka 用戶端能連到 YDB 的 topics。這是個聰明的策略,但相容模式不等於完全取代。PostgreSQL 相容模式只涵蓋表格操作,不保證所有 PostgreSQL 功能都能用。如果你的應用依賴 PostgreSQL 的進階功能,例如自訂型別或特定的索引演算法,你必須先驗證 YDB 是否支援。文件沒有列出相容模式的限制清單,這是一個需要自己探索的灰色地帶。
部署方式:從單節點到多節點叢集
快速上手很簡單,官方文件提供 Quick Start 指南,可以建立單節點叢集,適合功能測試和應用開發。要進入正式環境,你需要多節點叢集,部署方式有 Ansible 和 Kubernetes 兩種。Ansible 適合裸機或虛擬機器,Kubernetes 適合容器環境。README 提到也可以手動部署,但沒有細節。單節點叢集和生產叢集之間的差距很大,不只是節點數量,還包括容錯設定、可用區配置和網路規劃。如果你只是要評估 YDB,單節點就夠。如果你要跑效能基準或測試故障轉移,文件明確建議使用多節點叢集。這意味著評估成本不低,你需要至少三台機器才能體驗真正的容錯。
建置與貢獻:Ya Make 建置系統
YDB 的原始碼可以用 BUILD.md 的說明建置,伺服器二進位檔叫 ydbd,用戶端叫 ydb。建置系統是 Ya Make,這是 Yandex 自家的工具,不是常見的 CMake 或 Make。這對外部貢獻者是一個門檻,因為你必須先熟悉一套不熟悉的建置流程。文件有提供 Ya Make 的說明文件,但學習成本仍然存在。此外,YDB 使用 C++ 開發,這對編譯時間和資源要求很高。README 說最小系統需求是 x86 64 位元平台、8 GB RAM,但這是指執行,不是建置。建置可能需要的記憶體和磁碟空間,文件沒有提。如果你只是要使用 YDB,不需要從原始碼建置,直接下載發行版即可。但如果你想貢獻程式碼,要先準備好應付 Ya Make 的耐心。
授權與維護成本
YDB 使用 Apache-2.0 授權,這對商業使用很友善,沒有 copyleft 的包袱。你可以自由修改、部署,甚至整合到商業產品。維護成本方面,YDB 的釋出節奏看起來很規律,最近三個版本分別是 26.1.1.22、26.1.1.20 和 25.4.1.15,時間間隔大約一個月。這表示專案持續在更新,但每個月升級一次也代表你需要追蹤變更,測試相容性。分散式資料庫的升級不是小事,通常需要滾動升級,而 YDB 是否支援無停機升級,README 沒有說明。你必須查閱文件或釋出說明。另外,YDB 的生產環境規模號稱超過一萬個節點,但這是官方宣稱,不是你可以驗證的數據。對開源採用者來說,你更應該關注的是社群回應速度和文件品質。
編輯結論
YDB 適合需要跨節點 ACID 交易、且願意接受 YQL 或 PostgreSQL 相容層的團隊。它不適合只想用標準 SQL 的專案,也不適合只有單一可用區、不需要水平擴展的小型服務。採用前應先驗證 PostgreSQL 相容模式涵蓋你用的資料型別與函式,並確認 Ansible 或 Kubernetes 部署文件對應的版本與你的基礎設施相符。若你的查詢模式以分析為主,列式表格的效能需要自行基準測試,因為 README 沒有提供任何數字。最後,檢查 26.1.1.22 版本的變更記錄,確認你依賴的功能沒有在近期被標記為實驗性或棄用。
社群筆記