PolarDB-X 是由阿里巴巴自主研發的雲原生分佈式數據庫,是一款基於雲架構理念,並同時支持在線事務處理與在線分析處理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分佈式數據庫產品,具備金融級數據高可用、分佈式水平擴展、混合負載、低成本存儲和極致彈性等能力,堅定以兼容MySQL開源生態構建分佈式能力。專注解決海量數據存儲、超高併發吞吐、大表瓶頸以及複雜計算效率等數據庫瓶頸難題,真正歷經了各屆天貓雙11及阿里雲各行業客戶業務的考驗,助力企業加速完成業務數字化轉型。
核心特性
高可用
經過阿里多年雙11驗證的X-DB(X-Paxos共識協議能力),提供數據強一致,保證節點故障切換時 RPO=0。另外支持多樣化的部署和容災能力,比如基於Paxos強同步的同城三機房、三地五中心,另外搭配binlog異步複製的兩地三中心、異地災備、異地多活等。尤其在異地長距離傳輸上,基於 Batching & Pipelining 進行網絡優化來提升性能。
高兼容
PolarDB-X主要兼容MySQL,包括SQL、函數類型等,技術上引入全局時間授時服務,提供全局一致性的分佈式事務能力,通過TSO+2PC提供數據庫完整的ACID能力,滿足分佈式下的Read-Commited/Repeatable-Read的隔離級別。同時在分佈式事務的基礎上,提供全局二級索引能力,通過事務多寫保證索引和主表數據強一致的同時,引入基於代價的CBO優化器實現索引選擇。除此以外,在元數據和生態對接層面,PolarDB-X基於Online DDL的技術提供了分佈式下元數據的一致性。同時硬件層面,兼容主流國產操作系統和芯片認證,比如麒麟、鯤鵬、海光等。
另外在業界主流的分佈式數據庫裡,分佈式下的redolog/binlog等數據庫變更日誌其實一直被廠商所忽視,從關係數據庫的發展歷史來看,生態和標準對於市場規模化非常重要,PolarDB-X 2.0會支持全局binlog能力,全面兼容和擁抱MySQL數據庫生態,用戶可以將PolarDB-X當做一個MySQL庫,採用標準的binlog dump協議獲取binlog日誌。
高擴展
PolarDB-X基於Share-Nothing的架構支持水平擴展,同時支持數據庫在線擴縮容能力,在OLTP場景下可支持千萬級別的併發、以及PB級別的數據存儲規模,同樣在OLAP場景下,引入MPP並行查詢技術,擴展機器後查詢能力可線性提升,滿足TPC-H等的複雜報表查詢訴求。
HTAP
隨著移動互聯網和Iot設備的普及,數據會產生爆炸式的增長趨勢,傳統的OLTP和OLAP的解決方案是基於簡單的讀寫分離或者ETL模型,將在線庫的數據T+1的方式抽取到數據倉庫中進行計算,這種方案存在存儲成本高、實時性差、鏈路和維護成本高。PolarDB-X 2.0設計中支持OLTP和OLAP的混合負載的能力,可以在一個實例裡同時運行TPC-C和TPC-H的benchmark測試,保證AP的查詢不影響TP流量的穩定性。核心技術層面,我們也有自己的創新性,比如我們會在計算層精確識別出TP和AP的流量,結合多副本的特性和多副本的一致性讀能力,智能將TP和AP路由到不同的副本上,同時在AP鏈路上默認開啟MPP並行查詢技術,從而在滿足隔離性的基礎上,線性提升AP的查詢能力。在存儲層上,我們也在完善計算下推能力,未來也會提供高性能列存引擎,實現行列混合的HTAP能力。
極致彈性
PolarDB-X結合PolarDB雲原生的技術,可以基於PolarDB的共享存儲+RDMA網絡優化能力,提供秒級備份、極速彈性、以及存儲按需擴展的能力。基於共享存儲的基礎上,結合分佈式的多點寫入能力,可以在不遷移數據的前提下提供秒級彈性的能力,給到用戶完全不一樣的彈性體驗。
開放生態
PolarDB-X全面擁抱和堅定MySQL的開源生態,做到代碼完全自主可控的同時滿足分佈式MySQL的兼容性,架構做到簡單開放,只要具備一定MySQL背景的同學即可完成持續運維。除此以外,PolarDB-X和阿里雲的數據庫生態有完整的閉環對接,支持如DTS/DBS/DMS等,可打通阿里雲的整個大生態。
適用場景
按應用類型選擇
PolarDB-X產品在高併發、分佈式事務、複雜SQL優化、並行計算等方面都有比較好的用戶沉澱和技術發展,適用於如下場景:
-
- 對數據一致性及高可靠、系統高可用、可擴展性、容災要求較高的金融行業屬性的場景。
- 對超高併發和大規模數據存儲有較高要求的互聯網在線事務類業務場景。
- 傳統企業級應用因業務發展導致計算量與數據量呈爆發式增長,急需具備更強計算能力的在線事務型數據庫場景,比如HTAP混合負載能力等。
按容量選擇
在OLTP業務領域,數據庫的容量通常關注併發度、數據存儲、複雜SQL響應時間這3個維度。若當前數據庫中任意一個維度出現瓶頸,或出於對業務不斷高速發展提前規劃數據庫選型的考慮,當下選用PolarDB-X構建分佈式數據庫,可有效降低後期數據庫的擴展及運維壓力。
在業務發展初期,選擇單機數據庫還是分佈式數據庫,需要考量很多因素。但從數據庫自身角度出發,業務使用的SQL語句、數據類型、事務、索引、其他功能均是確定的。對於大部分業務而言,只要SQL語法、數據類型、事務、索引支持較為完整,且具備有效手段可在各種極端場景下進行水平擴展,那麼對於高速發展的業務而言,PolarDB-X即是所有分佈式數據庫中最具生命力及延續性的方案
按成本選擇
對於數據庫選型的成本考量,主要包括如下2個部分:
-
- 業務開發上手難度過高,往往會導致項目延期,業務效果不盡人意。對於一個新型數據庫而言,如何有效兼容現有流行數據庫的使用習慣和功能支持的完整度至關重要。PolarDB-X兼容MySQL生態,對於主流的客戶端、驅動有著良好的兼容性,SQL語法兼容完善,業務可快速進行對接適配。
- 數據庫長期持久的穩定性及優異的性能表現對於業務而言至關重要,因PolarDB-X將數據、負載分擔至多個MySQL實例中,所以面對逐步增大的負載壓力,PolarDB-X相比大規格單機數據庫具備更強的穩定性。性能表現層面,因為天然支持分佈式,抵禦業務的超高併發是其強項,配合MPP並行計算,PolarDB-X能夠覆蓋絕大多數在線業務的複雜計算需求。
產品架構
PolarDB-X整個架構核心分為3部分:
-
- CN(全稱:Compute Node/計算節點),主要提供分佈式SQL引擎,解決分佈式事務協調、優化器、執行器等。
- DN(全稱:Data Node/存儲節點),主要提供數據存儲引擎,比如InnoDB和自研存儲引擎(X-Engine和神祕列存),解決數據一致性和持久化,並提供計算下推能力滿足分佈式要求(比如Project/Filter/Join/Agg等下推計算),可支持本地盤和共享存儲。
- GMS(全稱:Global Meta Service/全局元數據服務),主要提供分佈式下元數據和全局授時服務,比如TSO、表的metadata信息等。
除此以外,會有專門的接入點(endpoint)的設計,可以理解為基於負載均衡設備提供的vip/dns。一個數據庫實例可以有不同策略的節點點,比如HTAP endpoint,我們會基於全局版本號、智能策略分流OLTP和OLAP到不同副本上,滿足混合負載下的強一致、強隔離的訴求。
物理拓撲
PolarDB-X整個組件的物理部署上,可支持公共雲、線下專有云的全形態部署能力,交互上提供面向後臺的數據庫管控和用戶控制檯,用戶也可以基於OpenAPI完成管控集成。
PolarDB-X提供數據庫實例化,實例有類似於8c32g/32c128g等更大規格,一個實例在物理上會有4種資源組成:三副本的GMS、一組CN節點(計算節點)、一組DN節點(存儲節點)、一組CDC(提供全局binlog),組件之間會進行元數據和RPC請求的交互,不同的實例規格的最大區別在於CN/DN節點數量的不同,實例規格會和CN/DN節點數保持線性一致。
對於外部用戶的使用來說,一個PolarDB-X的實例最終會通過接入點(endpoint)的vip/dns來訪問,對於用戶來說就是一個MySQL實例的體驗,可以使用MySQL 命令行、GUI客戶端等。
快速體驗
-
- 進入阿里雲產品頁面:https://polardb-x.console.aliyun.com/cn-hangzhou/clustersX
- 切換PolarDB-X 2.0的Tab頁之後,進入產品購買頁面 (選擇節點規格 和 節點數量)
- 獲取實例的訪問地址,適用MySQL客戶端直接登錄,就可以盡情的暢玩。