什麼是PolarDB
PolarDB是阿里巴巴自研的新一代雲原生資料庫,在計算儲存分離架構下,利用了軟硬體結合的優勢,為使用者提供具備極致彈性、高效能、海量儲存、安全可靠的資料庫服務。100%相容MySQL和PostgreSQL生態,高度相容Oracle文法。
PolarDB共有三個引擎,分別為PolarDB MySQL版、PolarDB PostgreSQL版、PolarDB分布式版。經過阿里巴巴多年雙十一活動的最佳實務驗證,讓使用者既享受到開源的生態靈活性,又獲得商業雲原生資料庫的高效能和安全等企業級能力。
引擎 | 資料庫生態 | 產品架構 | 輸出形態 | 應用情境 |
PolarDB MySQL版 | MySQL | Share Storage,計算儲存分離 | 公用雲、專有雲企業版 | MySQL生態下的雲原生資料庫 |
PolarDB PostgreSQL版 | PostgreSQL、Oracle | Share Storage,計算儲存分離 | 公用雲、專有雲企業版、DBStack | PostgreSQL生態下的雲原生資料庫 |
PolarDB分布式版 | MySQL | Share Nothing,分布式 | 公用雲、專有雲企業版、DBStack | MySQL生態下的大規模資料、超高並發應用 |
PolarDB MySQL版和PolarDB PostgreSQL版產品架構
PolarDB MySQL版和PolarDB PostgreSQL版均為計算儲存分離、共用儲存的架構,通過雲原生架構、軟硬體一體化、共用分布式儲存的設計,主節點和唯讀節點使用物理複製、RDMA網路低時延,能夠快速同步資料,徹底解決了主從非同步複製所帶來的備庫資料非強一致的問題,使得整個資料庫叢集在應對任何單點故障時,都可以保證資料零丟失,同時實現秒級節點擴縮容。
核心組件
Proxy
PolarDB通過內部的代理層Proxy對外提供服務,應用程式的請求都先經過代理層,然後訪問到資料庫節點。代理層不僅可以做安全認證、保護和會話保持,還可以解析SQL,把寫操作發送到主節點,把讀操作均衡地分發到多個唯讀節點,實現自動的讀寫分離。
計算節點
一寫多讀叢集內有一個讀寫節點以及多個唯讀節點,多主叢集(僅MySQL版支援)內可支援多個讀寫節點和多個唯讀節點,計算節點主要提供資料庫SQL引擎功能,分為通用規格和獨享規格。
共用儲存
叢集內的多個節點共用儲存資源,單叢集支援最高100 TB儲存空間。
架構優勢
大容量
儲存最高100 TB,不再需要因為單機容量的天花板而去購買多個執行個體做分區,從而簡化應用開發,降低營運負擔。
低成本
計算儲存分離架構下,每增加一個唯讀節點只收取計算資源的費用,而傳統的備節點或唯讀節點同時包含計算和儲存資源,每增加一個節點都需要支付相應的儲存費用。
分鐘級擴縮容
計算儲存分離的架構配合容器虛擬化和共用儲存技術,使得增減節點只需5分鐘。儲存容量自動線上擴容,無需中斷業務。
讀一致性
叢集地址利用LSN(Log Sequence Number)確保讀取資料時的全域一致性,避免因為主備延遲引起的不一致。
毫秒級延遲(物理複製)
利用基於Redo的物理複製代替基於Binlog的邏輯複製,提升主備複製的效率和穩定性。即使對大表進行加索引、加欄位等DDL操作,也不會造成資料庫的延遲。
秒級快速備份
利用底層分布式儲存的快照技術,只需分鐘層級即可完成對TB級資料量大小的資料庫的備份,且整個備份過程不需要加鎖,效率更高,影響更小,對應用程式幾乎無影響,全天24小時均可進行備份。
PolarDB分布式版產品架構
PolarDB分布式版採用了基於計算儲存分離的Share Nothing系統架構,該架構使使用者可以根據業務需要進行分層容量規劃,實現大規模擴充。
核心組件
中繼資料服務(Global Meta Service,GMS),主要提供分布式的中繼資料,提供全域授時服務(TSO),維護Table/Schema、Statistic等Meta資訊、維護帳號、許可權等安全資訊。
計算節點(Compute Node,CN),主要提供分布式SQL引擎,包含核心的最佳化器和執行器。基於無狀態的SQL引擎提供分布式路由和計算,解決分散式交易2PC協調、分布式DDL執行、全域索引維護等。
儲存節點 (Data Node,DN),主要提供資料存放區引擎,基於多數派Paxos共識協議提供高可靠儲存、分散式交易的MVCC多版本儲存,另外提供計算下推能力滿足分布式的計算下推要求(比如Project/Filter/Join/Agg等下推計算),可支援本地碟和共用儲存。
日誌節點(Change Data Capture,CDC),主要提供相容MySQL生態的主備複製協議,相容Binlog協議和資料格式、支援主備複製Replication的協議和互動。
架構優勢
高可用
經過阿里巴巴多年雙十一驗證的X-DB(X-Paxos共識協議能力),提供資料強一致,保證節點故障切換時RPO=0。另外支援多樣化的部署和容災能力,比如基於Paxos強同步的同城三機房、三地五中心,另外搭配Binlog非同步複製的兩地三中心、異地災備、異地多活等。尤其在異地長距離傳輸上,基於Batching&Pipelining進行網路最佳化來提升效能。
高相容
PolarDB分布式版主要相容MySQL,包括SQL、函數類型等,技術上引入全域時間授時服務,提供全域一致性的分散式交易能力,通過TSO+2PC提供資料庫完整的ACID能力,滿足分布式下的Read-Committed/Repeatable-Read的隔離等級。同時在分散式交易的基礎上,提供全域二級索引能力,通過事務多寫保證索引和主表資料強一致的同時,引入基於代價的CBO最佳化器實現索引選擇。除此以外,在中繼資料和生態對接層面,PolarDB分布式版基於Online DDL的技術提供了分布式下中繼資料的一致性。同時硬體層面,相容主流國產作業系統和晶片認證,比如麒麟、鯤鵬、海光等。另外在業界主流的分散式資料庫裡,分布式下的Redolog/Binlog等資料庫變更日誌其實一直被廠商所忽視,從關聯式資料庫的發展歷史來看,生態和標準對於市場規模化非常重要,PolarDB分布式版支援BinlogLog Service,相容和擁抱MySQL資料庫生態,可以將PolarDB分布式版當做一個MySQL庫,採用標準的Binlog dump協議擷取Binlog日誌。
高擴充
PolarDB分布式版基於Share Nothing的架構支援水平擴充,同時支援資料庫線上擴縮容能力,在OLTP情境下可支援千萬層級的並發、以及PB層級的資料存放區規模,同樣在OLAP情境下,引入MPP並行查詢技術,擴充機器後查詢能力可線性提升,滿足TPC-H等的複雜報表查詢訴求。
HTAP
隨著移動互連網和IoT裝置的普及,資料會產生爆炸式的增長趨勢,傳統的OLTP和OLAP的解決方案是基於簡單的讀寫分離或者ETL模型,將線上庫的資料以T+1的方式抽取到資料倉儲中進行計算,這種方案存在儲存成本高、即時性差、鏈路和維護成本高等缺陷。PolarDB分布式版設計中支援OLTP和OLAP的混合負載的能力,可以在一個執行個體裡同時運行TPC-C和TPC-H的benchmark測試,保證AP的查詢不影響TP流量的穩定性。核心技術層面也有所創新,比如在計算層精確識別出TP和AP的流量,結合多副本的特性和多副本的一致性讀能力,將TP和AP智能路由到不同的副本上,同時在AP鏈路上預設開啟MPP並行查詢技術,從而在滿足隔離性的基礎上,線性提升AP的查詢能力。