1. 程式人生 > >什麽是最適合雲數據庫的架構設計?

什麽是最適合雲數據庫的架構設計?

擴容 cto 副本 體系 新的 領域 watermark mem 這也

分布式數據庫技術發展多年,但是在應用、業務的驅動下,分布式數據庫的架構一直在不斷發展和演進。

開源金融級分布式數據庫SequoiaDB,經過6年的研發,堅持從零開始打造數據庫核心引擎。在技術探索中,選擇了更適合雲數據庫場景的架構和引擎設計。本文也將詳細展開,介紹目前SequoiaDB的架構與設計理念。

SequoiaDB近日也完成由嘉實投資領投的C輪融資。本輪的領投方為嘉實投資,啟明創投與DCM作為早期投資方跟投。SequoiaDB巨杉數據庫一直堅持技術驅動產品,專註打造金融級分布式數據庫,成為中國首次入選Gartner數據庫報告的數據庫廠商。目前,巨杉數據庫付費企業級客戶與社區用戶總數超過1000家,並已在超過50家500強級別的銀行、保險、證券等大型金融機構核心生產業務上線。

Multimodel多模數據庫引擎
在雲計算與分布式時代,為單一結構化數據服務的傳統關系型數據庫也開始了不斷地發展。從2007年IBM DB2支持XML以來,越來越多的關系型數據庫開始支持XML與JSON等半結構化數據。因此,Gartner認為未來數據庫的發展方向是多模式的時代,一款成熟的數據庫產品需要利用分布式技術,支持除了關系型以外的多種訪問方式。
SequoiaDB則是一款典型的多模(Multi-Model)數據庫,全面覆蓋了結構化、半結構化與非結構化數據,同時滿足交易、影像存儲業務、以及統計分析業務的需求。
SequoiaDB通過其計算存儲分離架構,在NewSQL結構化數據領域有效利用MySQL、SparkSQL與PGSQL解析執行器,在保持行業標準100%兼容的同時,完美實現了在線交易與離線分析的HTAP混合交易分析負載的支撐。同時SequoiaDB使用API滿足企業對半結構化JSON數據的支持,以及通過兼容Posix文件系統以及S3接口實現了非結構化數據的存儲與訪問。

SequoiaDB存儲使用雙引擎架構,將文件大對象與數據記錄分別以最優的結構進行解析與存放,上層輔以統一的事務管理、集群管控、同步復制、會話管理等機制,支持數據與會話的邏輯與物理隔離,使其最大化滿足雲時代的分布式管理與混合業務負載需求。
2017年底SequoiaDB發布了其3.0版本。在其發展路徑中可以看到,SequoiaDB的每一個大版本叠代均在之前的版本上進行了巨大的擴展與增強。其中,2013年正式發布的1.0版本作為單純的JSON數據庫,提供了對半結構化數據的支撐能力。而到了2015年的2.0版本,SequoiaDB開始完全支持了對象存儲。直到2017年底發布的3.0版本更是提供了對MySQL、PGSQL與SparkSQL的完美對接與100%兼容,全面支持NewSQL的分布式事務處理能力。
技術分享圖片
SequoiaDB產品 發展歷程
計算-存儲分離架構
當前業界中常見的分布式架構包括分庫分表與計算存儲分離兩類。其中分庫分表架構以應用中間件切分或MyCat等產品為代表。而如果說分庫分表架構是基於傳統數據庫進行簡單的上層封裝,真正的計算存儲分離架構則意味著在SQL解析與底層的數據存儲均可進行自由的彈性擴展。
當前行業中最主流的雲數據庫實現(例如AWS的Aurora、阿裏雲的PolarDB等)即通過將MySQL服務器直接構建在底層的分布式高性能存儲之上,通過定制化標準的SQL引擎與底層數據通訊接口,實現底層分布式存儲與上層的SQL解析執行器完全松耦合,兩者均可自由動態伸縮。
技術分享圖片
計算(SQL)-存儲 分離架構示意

計算存儲分離體系的設計思想是以松耦合的方式將計算與存儲層分別部署,通過標準接口或插件對各個模塊和組件進行無縫替換,在計算層與存儲層均可實現自由的彈性伸縮。MySQL與MariaDB的架構可以說是關系型數據庫計算存儲松耦合結構的代表。在MySQL 5.7及之前的版本中,其SQL解析引擎與後臺的數據存儲內核通過幾百個C++函數進行通訊。因此,在MySQL數據庫中,DBA可以選擇InnoDB、MyISAM、NDB、Memory、甚至自己實現一套數據庫引擎來與前端的SQL解析執行器進行對接。

技術分享圖片
分布式數據庫“計算-存儲分離”架構詳細示意

計算存儲分離架構的優勢之一在於,用戶可以根據自身的業務特征自由選擇面向交易的SQL解析器(例如MySQL或PGSQL),或面向統計分析的執行引擎(例如SparkSQL)。眾所周知,使用不同的SQL優化與執行方式,數據庫的訪問性能可能會存在上千上萬倍的差距。計算存儲分離的核心思想便是在數據存儲層面進行一體化存儲,而計算層面則有效利用每種執行引擎的特點,針對不同的業務場景進行選擇和優化。
技術分享圖片

SequoiaDB架構示意

同時,由於數據存儲層與計算層完全分離,用戶完全可以在存儲層進行邏輯與物理的隔離,將面向高頻交易的前端業務,與面向高吞吐量的統計分析使用不同的硬件進行存儲,確保在多類型數據訪問時互不幹擾,以真正達到生產環境可用的多租戶與HTAP能力。

得益於SequoiaDB 3.0的分離架構,整個數據庫可以通過自由對接不同的執行引擎,對同一份數據以不同的接口進行訪問。同時,SequoiaDB可以通過配置,指定在線業務訪問三副本中的兩份,而另一份則專門供SparkSQL進行統計分析,從而做到對同一份數據的訪問,在線應用與統計業務在物理硬件層面完全隔離。
技術分享圖片
計算-存儲分離架構下的業務靈活隔離劃分

對於在線交易業務來說,由於所有的分布式事務、鎖、索引等機制都是直接在底層的分布式引擎完成,上層使用任何SQL解析器都可以做到完全的ACID。
彈性伸縮
在雲計算的時代,任何應用程序與中間件早已經通過微服務架構實現了動態擴容縮容。例如,企業可以在雙十一高峰前大規模租賃AWS或阿裏雲的服務器,將應用程序的計算與處理能力幾十倍地擴張。
但是,不同於應用程序,數據層面的彈性伸縮能力往往是應用程序擴展性最大的制約。例如,應用程序可以在一天內不停機地從3個Tomcat服務器擴展到30個,但底層的數據分庫分表機制幾乎不可能輕松自如地增減數據庫的服務節點。
技術分享圖片
SequoiaDB存儲引擎原生分布式架構

SequoiaDB通過一致性散列等機制,對底層數據庫擴容縮容做到完全在線且對應用透明無感知。對於需要存放大量數據的流水類業務,SequoiaDB甚至能夠提供“零數據遷移”策略,確保增加節點後系統不會產生任何需要產生大量I/O的後臺重平衡操作。
SequoiaDB可以通過增加數據分區與數據節點數量,對整個集群的存儲容量與計算能力進行彈性水平橫向擴張。
MySQL全兼容
SequoiaDB通過“計算-存儲分離”架構,提供了應用程序層面的MySQL全兼容能力。SequoiaDB直接利用在MySQL官網下載的MySQL Server,通過其存儲引擎插件的能力,提供了平行於InnoDB的SequoiaDB分布式存儲引擎插件。
SequoiaDB完全利用了大家多年來所習慣使用的MySQL數據庫服務,對於應用程序開發人員與DBA來說並不需要學習任何新的知識與語法,便可以無縫地將其應用程序從傳統的單點架構遷移到分布式數據庫。在從InnoDB存儲引擎向SequoiaDB分布式引擎切換時,所有的數據分區機制對上層應用程序完全透明零感知。同時SequoiaDB也提供了包括離線、在線、實時等多種遷移工具,供用戶在不同場景下進行選擇。
如今MySQL已經被大量互聯網與企業級用戶所使用。相比起需要重新構建SQL解析器與執行器的分庫分表策略,SequoiaDB的計算-存儲分離架構能夠最大化重用開發人員與DBA的原有技能,同時與MySQL社區保持緊密結合互動,通過其分布式存儲能力參與到MySQL的生態建設。
技術分享圖片
SequoiaDB對MySQL完整兼容示意
小結
以Multimodel多模數據存儲引擎為基礎,通過業界主流的計算-存儲分離架構,實現引擎的分布式以及SQL層對於MySQL、PostgreSQL以及SparkSQL的完整兼容。這一整體架構設計相信是雲數據發展的主流架構設計。

SequoiaDB正是應用了這一架構設計,實現了彈性擴張、多租戶、HTAP支持、與MySQL全兼容等能力,這也使開源的SequoiaDB能夠更加緊密地參與到社區建設中,為我國的數據庫基礎軟件發展與MySQL社區的壯大貢獻自己的力量!通過此次融資,巨杉數據庫將持續投入核心研發與技術創新,立足於金融行業覆蓋其他垂直領域市場,拓展更多企業級應用場景,加速國際化步伐,將巨杉數據庫打造成為世界級的分布式數據庫產品!

什麽是最適合雲數據庫的架構設計?