目前來說,各廠商的云原生數據庫在演進路線上分成了兩個略有不同的路徑來解決不同的問題。
一種是各大公有云廠商選擇的,優先保證上云兼容性的路線,就是基于存算分離架構對傳統數據庫進行改造的路線:通過把大量的日志操作放到后臺異步處理,實現存儲獨立擴展,解決了 MySQL 數據庫單庫的數據量不能太大的痛點。并且云原生數據庫提供了又兼容又能擴展的能力,在存儲層面實現了擴展的同時,又保留了計算層面的不變和兼容,從而基本實現了完全的兼容性。
像典型產品就有 AWS 的 Aurora,阿里云的 PolarDB,騰訊云的 TDSQL-C 和百度智能云的 GaiaDB。可以完美兼容傳統的使用習慣,對交易類場景可以提供很低延遲的寫事務能力。同時讀擴展性與存儲擴展性由于借助了分布式存儲池化能力,也得到了極大增強。
而另外一種則是優先將系統的擴展性放在首位,通過規模來解決各類業務對寫擴展能力的要求,像 OceanBase 和 TiDB 就是兩個比較典型的產品。
它們的典型特征就是將事子系統和鎖系統角色拆分為單獨的模塊負責,計算層通過與這些模塊交互實現了多個節點都可接受寫請求,然后由統一的新事務+鎖中心節點來進行仲裁。這樣對于寫負載本身需要較多計算資源的場景下會有很好的提升,但是由于事務和鎖都需要跨網絡進行交互,所以事務延遲是相對比較高的,在鎖負載較重的負載下會成為一定的瓶頸。