架構 新一代分布式資料庫架構詳解

2021-10-12 12:45:31 字數 3145 閱讀 9901

分布式資料庫技術發展多年,但是在應用、業務的驅動下,分布式資料庫的架構一直在不斷發展和演進。開源金融級分布式資料庫sequoiadb,經過6年的研發,堅持從零開始打造資料庫核心引擎。在技術探索中,選擇了更適合雲資料庫場景的架構和引擎設計。本文也將詳細展開,介紹目前sequoiadb的架構與設計理念。

sequoiadb巨杉資料庫一直堅持技術驅動產品,專注打造金融級分布式資料庫,成為中國首次入選gartner資料庫報告的資料庫廠商。目前,巨杉資料庫付費企業級客戶與社群使用者總數超過1000家,並已在超過50家500強級別的銀行、保險、**等大型金融機構核心生產業務上線。

在雲計算與分布式時代,為單一結構化資料服務的傳統關係型資料庫也開始了不斷地發展。從2023年ibm db2支援xml以來,越來越多的關係型資料庫開始支援xml與json等半結構化資料。因此,gartner認為未來資料庫的發展方向是多模式的時代,一款成熟的資料庫產品需要利用分布式技術,支援除了關係型以外的多種訪問方式。

sequoiadb則是一款典型的多模(multi-model)資料庫,全面覆蓋了結構化、半結構化與非結構化資料,同時滿**易、影像儲存業務、以及統計分析業務的需求。

sequoiadb儲存使用雙引擎架構,將檔案大物件與資料記錄分別以最優的結構進行解析與存放,上層輔以統一的事務管理、集群管控、同步複製、會話管理等機制,支援資料與會話的邏輯與物理隔離,使其最大化滿足雲時代的分布式管理與混合業務負載需求。

2023年底sequoiadb發布了其3.0版本。在其發展路徑中可以看到,sequoiadb的每乙個大版本迭代均在之前的版本上進行了巨大的擴充套件與增強。其中,2023年正式發布的1.0版本作為單純的json資料庫,提供了對半結構化資料的支撐能力。而到了2023年的2.0版本,sequoiadb開始完全支援了物件儲存。直到2023年底發布的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能力。

計算-儲存分離架構下的業務靈活隔離劃分

在雲計算的時代,任何應用程式與中介軟體早已經通過微服務架構實現了動態擴容縮容。例如,企業可以在雙十一高峰前大規模租賃aws或阿里雲的伺服器,將應用程式的計算與處理能力幾十倍地擴張。

但是,不同於應用程式,資料層面的彈性伸縮能力往往是應用程式擴充套件性最大的制約。例如,應用程式可以在一天內不停機地從3個tomcat伺服器擴充套件到30個,但底層的資料分庫分表機制幾乎不可能輕鬆自如地增減資料庫的服務節點。

sequoiadb儲存引擎原生分布式架構

sequoiadb可以通過增加資料分割槽與資料節點數量,對整個集群的儲存容量與計算能力進行彈性水平橫向擴張。

如今mysql已經被大量網際網路與企業級使用者所使用。相比起需要重新構建sql解析器與執行器的分庫分表策略,sequoiadb的計算-儲存分離架構能夠最大化重用開發人員與dba的原有技能,同時與mysql社群保持緊密結合互動,通過其分布式儲存能力參與到mysql的生態建設。

sequoiadb對mysql完整相容示意圖

以multimodel多模資料儲存引擎為基礎,通過業界主流的計算-儲存分離架構,實現引擎的分布式以及sql層對於mysql、postgresql以及sparksql的完整相容。這一整體架構設計相信是雲資料發展的主流架構設計。

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

「NoHadoop」? 新一代海量資料架構分析

在經歷了長達25年的統治地位後,關係型資料庫正面臨越來越火的 nosql 挑戰,而挑戰者是以hadoop為代表的分布式計算開源架構。可以看到,越來越多的訊息表明,不管nosql是被解釋為 no sql 還是 not only sql 如果你面臨海量資料的挑戰,那麼你最應該選的海量資料架構是hadoo...

新一代海量資料架構分析 NoHadoop

但是hadoop就能代表一切嗎?答案顯然是否定的,hadoop的mapreduce在效能上的確是有侷限性的 比如mapreduce沒有索引,只有靠強大的運算能力來處理 此外,mapreduce本身存在一些lower level實現的問題,特別是skew和資料交換等等。因此有些人開始回到關係型資料庫上...

「NoHadoop」? 新一代海量資料架構分析

在經歷了長達25年的統治地位後,關係型資料庫正面臨越來越火的 nosql 挑戰,而挑戰者是以hadoop為代表的分布式計算開源架構。可以看到,越來越多的訊息表明,不管nosql是被解釋為 no sql 還是 not only sql 如果你面臨海量資料的挑戰,那麼你最應該選的海量資料架構是hadoo...