摘要:在技術(shù)探索中,選擇了更適合云數(shù)據(jù)庫(kù)場(chǎng)景的架構(gòu)和引擎設(shè)計(jì)。目前,巨杉數(shù)據(jù)庫(kù)付費(fèi)企業(yè)級(jí)客戶與社區(qū)用戶總數(shù)超過家,并已在超過家強(qiáng)級(jí)別的銀行保險(xiǎn)證券等大型金融機(jī)構(gòu)核心生產(chǎn)業(yè)務(wù)上線。這一整體架構(gòu)設(shè)計(jì)相信是云數(shù)據(jù)發(fā)展的主流架構(gòu)設(shè)計(jì)。
分布式數(shù)據(jù)庫(kù)技術(shù)發(fā)展多年,但是在應(yīng)用、業(yè)務(wù)的驅(qū)動(dòng)下,分布式數(shù)據(jù)庫(kù)的架構(gòu)一直在不斷發(fā)展和演進(jìn)。
開源金融級(jí)分布式數(shù)據(jù)庫(kù)SequoiaDB,經(jīng)過6年的研發(fā),堅(jiān)持從零開始打造數(shù)據(jù)庫(kù)核心引擎。在技術(shù)探索中,選擇了更適合云數(shù)據(jù)庫(kù)場(chǎng)景的架構(gòu)和引擎設(shè)計(jì)。本文也將詳細(xì)展開,介紹目前SequoiaDB的架構(gòu)與設(shè)計(jì)理念。
SequoiaDB近日也完成由嘉實(shí)投資領(lǐng)投的C輪融資。本輪的領(lǐng)投方為嘉實(shí)投資,啟明創(chuàng)投與DCM作為早期投資方跟投。SequoiaDB巨杉數(shù)據(jù)庫(kù)一直堅(jiān)持技術(shù)驅(qū)動(dòng)產(chǎn)品,專注打造金融級(jí)分布式數(shù)據(jù)庫(kù),成為中國(guó)首次入選Gartner數(shù)據(jù)庫(kù)報(bào)告的數(shù)據(jù)庫(kù)廠商。目前,巨杉數(shù)據(jù)庫(kù)付費(fèi)企業(yè)級(jí)客戶與社區(qū)用戶總數(shù)超過1000家,并已在超過50家500強(qiáng)級(jí)別的銀行、保險(xiǎn)、證券等大型金融機(jī)構(gòu)核心生產(chǎn)業(yè)務(wù)上線。
Multimodel多模數(shù)據(jù)庫(kù)引擎
在云計(jì)算與分布式時(shí)代,為單一結(jié)構(gòu)化數(shù)據(jù)服務(wù)的傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)也開始了不斷地發(fā)展。從2007年IBM DB2支持XML以來(lái),越來(lái)越多的關(guān)系型數(shù)據(jù)庫(kù)開始支持XML與JSON等半結(jié)構(gòu)化數(shù)據(jù)。因此,Gartner認(rèn)為未來(lái)數(shù)據(jù)庫(kù)的發(fā)展方向是多模式的時(shí)代,一款成熟的數(shù)據(jù)庫(kù)產(chǎn)品需要利用分布式技術(shù),支持除了關(guān)系型以外的多種訪問方式。
SequoiaDB則是一款典型的多模(Multi-Model)數(shù)據(jù)庫(kù),全面覆蓋了結(jié)構(gòu)化、半結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù),同時(shí)滿足交易、影像存儲(chǔ)業(yè)務(wù)、以及統(tǒng)計(jì)分析業(yè)務(wù)的需求。
SequoiaDB通過其計(jì)算存儲(chǔ)分離架構(gòu),在NewSQL結(jié)構(gòu)化數(shù)據(jù)領(lǐng)域有效利用MySQL、SparkSQL與PGSQL解析執(zhí)行器,在保持行業(yè)標(biāo)準(zhǔn)100%兼容的同時(shí),完美實(shí)現(xiàn)了在線交易與離線分析的HTAP混合交易分析負(fù)載的支撐。同時(shí)SequoiaDB使用API滿足企業(yè)對(duì)半結(jié)構(gòu)化JSON數(shù)據(jù)的支持,以及通過兼容Posix文件系統(tǒng)以及S3接口實(shí)現(xiàn)了非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)與訪問。
SequoiaDB存儲(chǔ)使用雙引擎架構(gòu),將文件大對(duì)象與數(shù)據(jù)記錄分別以最優(yōu)的結(jié)構(gòu)進(jìn)行解析與存放,上層輔以統(tǒng)一的事務(wù)管理、集群管控、同步復(fù)制、會(huì)話管理等機(jī)制,支持?jǐn)?shù)據(jù)與會(huì)話的邏輯與物理隔離,使其最大化滿足云時(shí)代的分布式管理與混合業(yè)務(wù)負(fù)載需求。
2017年底SequoiaDB發(fā)布了其3.0版本。在其發(fā)展路徑中可以看到,SequoiaDB的每一個(gè)大版本迭代均在之前的版本上進(jìn)行了巨大的擴(kuò)展與增強(qiáng)。其中,2013年正式發(fā)布的1.0版本作為單純的JSON數(shù)據(jù)庫(kù),提供了對(duì)半結(jié)構(gòu)化數(shù)據(jù)的支撐能力。而到了2015年的2.0版本,SequoiaDB開始完全支持了對(duì)象存儲(chǔ)。直到2017年底發(fā)布的3.0版本更是提供了對(duì)MySQL、PGSQL與SparkSQL的完美對(duì)接與100%兼容,全面支持NewSQL的分布式事務(wù)處理能力。
SequoiaDB產(chǎn)品 發(fā)展歷程
計(jì)算-存儲(chǔ)分離架構(gòu)
當(dāng)前業(yè)界中常見的分布式架構(gòu)包括分庫(kù)分表與計(jì)算存儲(chǔ)分離兩類。其中分庫(kù)分表架構(gòu)以應(yīng)用中間件切分或MyCat等產(chǎn)品為代表。而如果說(shuō)分庫(kù)分表架構(gòu)是基于傳統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行簡(jiǎn)單的上層封裝,真正的計(jì)算存儲(chǔ)分離架構(gòu)則意味著在SQL解析與底層的數(shù)據(jù)存儲(chǔ)均可進(jìn)行自由的彈性擴(kuò)展。
當(dāng)前行業(yè)中最主流的云數(shù)據(jù)庫(kù)實(shí)現(xiàn)(例如AWS的Aurora、阿里云的PolarDB等)即通過將MySQL服務(wù)器直接構(gòu)建在底層的分布式高性能存儲(chǔ)之上,通過定制化標(biāo)準(zhǔn)的SQL引擎與底層數(shù)據(jù)通訊接口,實(shí)現(xiàn)底層分布式存儲(chǔ)與上層的SQL解析執(zhí)行器完全松耦合,兩者均可自由動(dòng)態(tài)伸縮。
計(jì)算(SQL)-存儲(chǔ) 分離架構(gòu)示意
計(jì)算存儲(chǔ)分離體系的設(shè)計(jì)思想是以松耦合的方式將計(jì)算與存儲(chǔ)層分別部署,通過標(biāo)準(zhǔn)接口或插件對(duì)各個(gè)模塊和組件進(jìn)行無(wú)縫替換,在計(jì)算層與存儲(chǔ)層均可實(shí)現(xiàn)自由的彈性伸縮。MySQL與MariaDB的架構(gòu)可以說(shuō)是關(guān)系型數(shù)據(jù)庫(kù)計(jì)算存儲(chǔ)松耦合結(jié)構(gòu)的代表。在MySQL 5.7及之前的版本中,其SQL解析引擎與后臺(tái)的數(shù)據(jù)存儲(chǔ)內(nèi)核通過幾百個(gè)C++函數(shù)進(jìn)行通訊。因此,在MySQL數(shù)據(jù)庫(kù)中,DBA可以選擇InnoDB、MyISAM、NDB、Memory、甚至自己實(shí)現(xiàn)一套數(shù)據(jù)庫(kù)引擎來(lái)與前端的SQL解析執(zhí)行器進(jìn)行對(duì)接。
分布式數(shù)據(jù)庫(kù)“計(jì)算-存儲(chǔ)分離”架構(gòu)詳細(xì)示意
計(jì)算存儲(chǔ)分離架構(gòu)的優(yōu)勢(shì)之一在于,用戶可以根據(jù)自身的業(yè)務(wù)特征自由選擇面向交易的SQL解析器(例如MySQL或PGSQL),或面向統(tǒng)計(jì)分析的執(zhí)行引擎(例如SparkSQL)。眾所周知,使用不同的SQL優(yōu)化與執(zhí)行方式,數(shù)據(jù)庫(kù)的訪問性能可能會(huì)存在上千上萬(wàn)倍的差距。計(jì)算存儲(chǔ)分離的核心思想便是在數(shù)據(jù)存儲(chǔ)層面進(jìn)行一體化存儲(chǔ),而計(jì)算層面則有效利用每種執(zhí)行引擎的特點(diǎn),針對(duì)不同的業(yè)務(wù)場(chǎng)景進(jìn)行選擇和優(yōu)化。
SequoiaDB架構(gòu)示意
同時(shí),由于數(shù)據(jù)存儲(chǔ)層與計(jì)算層完全分離,用戶完全可以在存儲(chǔ)層進(jìn)行邏輯與物理的隔離,將面向高頻交易的前端業(yè)務(wù),與面向高吞吐量的統(tǒng)計(jì)分析使用不同的硬件進(jìn)行存儲(chǔ),確保在多類型數(shù)據(jù)訪問時(shí)互不干擾,以真正達(dá)到生產(chǎn)環(huán)境可用的多租戶與HTAP能力。
得益于SequoiaDB 3.0的分離架構(gòu),整個(gè)數(shù)據(jù)庫(kù)可以通過自由對(duì)接不同的執(zhí)行引擎,對(duì)同一份數(shù)據(jù)以不同的接口進(jìn)行訪問。同時(shí),SequoiaDB可以通過配置,指定在線業(yè)務(wù)訪問三副本中的兩份,而另一份則專門供SparkSQL進(jìn)行統(tǒng)計(jì)分析,從而做到對(duì)同一份數(shù)據(jù)的訪問,在線應(yīng)用與統(tǒng)計(jì)業(yè)務(wù)在物理硬件層面完全隔離。
計(jì)算-存儲(chǔ)分離架構(gòu)下的業(yè)務(wù)靈活隔離劃分
對(duì)于在線交易業(yè)務(wù)來(lái)說(shuō),由于所有的分布式事務(wù)、鎖、索引等機(jī)制都是直接在底層的分布式引擎完成,上層使用任何SQL解析器都可以做到完全的ACID。
彈性伸縮
在云計(jì)算的時(shí)代,任何應(yīng)用程序與中間件早已經(jīng)通過微服務(wù)架構(gòu)實(shí)現(xiàn)了動(dòng)態(tài)擴(kuò)容縮容。例如,企業(yè)可以在雙十一高峰前大規(guī)模租賃AWS或阿里云的服務(wù)器,將應(yīng)用程序的計(jì)算與處理能力幾十倍地?cái)U(kuò)張。
但是,不同于應(yīng)用程序,數(shù)據(jù)層面的彈性伸縮能力往往是應(yīng)用程序擴(kuò)展性最大的制約。例如,應(yīng)用程序可以在一天內(nèi)不停機(jī)地從3個(gè)Tomcat服務(wù)器擴(kuò)展到30個(gè),但底層的數(shù)據(jù)分庫(kù)分表機(jī)制幾乎不可能輕松自如地增減數(shù)據(jù)庫(kù)的服務(wù)節(jié)點(diǎn)。
SequoiaDB存儲(chǔ)引擎原生分布式架構(gòu)
SequoiaDB通過一致性散列等機(jī)制,對(duì)底層數(shù)據(jù)庫(kù)擴(kuò)容縮容做到完全在線且對(duì)應(yīng)用透明無(wú)感知。對(duì)于需要存放大量數(shù)據(jù)的流水類業(yè)務(wù),SequoiaDB甚至能夠提供“零數(shù)據(jù)遷移”策略,確保增加節(jié)點(diǎn)后系統(tǒng)不會(huì)產(chǎn)生任何需要產(chǎn)生大量I/O的后臺(tái)重平衡操作。
SequoiaDB可以通過增加數(shù)據(jù)分區(qū)與數(shù)據(jù)節(jié)點(diǎn)數(shù)量,對(duì)整個(gè)集群的存儲(chǔ)容量與計(jì)算能力進(jìn)行彈性水平橫向擴(kuò)張。
MySQL全兼容
SequoiaDB通過“計(jì)算-存儲(chǔ)分離”架構(gòu),提供了應(yīng)用程序?qū)用娴腗ySQL全兼容能力。SequoiaDB直接利用在MySQL官網(wǎng)下載的MySQL Server,通過其存儲(chǔ)引擎插件的能力,提供了平行于InnoDB的SequoiaDB分布式存儲(chǔ)引擎插件。
SequoiaDB完全利用了大家多年來(lái)所習(xí)慣使用的MySQL數(shù)據(jù)庫(kù)服務(wù),對(duì)于應(yīng)用程序開發(fā)人員與DBA來(lái)說(shuō)并不需要學(xué)習(xí)任何新的知識(shí)與語(yǔ)法,便可以無(wú)縫地將其應(yīng)用程序從傳統(tǒng)的單點(diǎn)架構(gòu)遷移到分布式數(shù)據(jù)庫(kù)。在從InnoDB存儲(chǔ)引擎向SequoiaDB分布式引擎切換時(shí),所有的數(shù)據(jù)分區(qū)機(jī)制對(duì)上層應(yīng)用程序完全透明零感知。同時(shí)SequoiaDB也提供了包括離線、在線、實(shí)時(shí)等多種遷移工具,供用戶在不同場(chǎng)景下進(jìn)行選擇。
如今MySQL已經(jīng)被大量互聯(lián)網(wǎng)與企業(yè)級(jí)用戶所使用。相比起需要重新構(gòu)建SQL解析器與執(zhí)行器的分庫(kù)分表策略,SequoiaDB的計(jì)算-存儲(chǔ)分離架構(gòu)能夠最大化重用開發(fā)人員與DBA的原有技能,同時(shí)與MySQL社區(qū)保持緊密結(jié)合互動(dòng),通過其分布式存儲(chǔ)能力參與到MySQL的生態(tài)建設(shè)。
SequoiaDB對(duì)MySQL完整兼容示意
小結(jié)
以Multimodel多模數(shù)據(jù)存儲(chǔ)引擎為基礎(chǔ),通過業(yè)界主流的計(jì)算-存儲(chǔ)分離架構(gòu),實(shí)現(xiàn)引擎的分布式以及SQL層對(duì)于MySQL、PostgreSQL以及SparkSQL的完整兼容。這一整體架構(gòu)設(shè)計(jì)相信是云數(shù)據(jù)發(fā)展的主流架構(gòu)設(shè)計(jì)。
SequoiaDB正是應(yīng)用了這一架構(gòu)設(shè)計(jì),實(shí)現(xiàn)了彈性擴(kuò)張、多租戶、HTAP支持、與MySQL全兼容等能力,這也使開源的SequoiaDB能夠更加緊密地參與到社區(qū)建設(shè)中,為我國(guó)的數(shù)據(jù)庫(kù)基礎(chǔ)軟件發(fā)展與MySQL社區(qū)的壯大貢獻(xiàn)自己的力量!通過此次融資,巨杉數(shù)據(jù)庫(kù)將持續(xù)投入核心研發(fā)與技術(shù)創(chuàng)新,立足于金融行業(yè)覆蓋其他垂直領(lǐng)域市場(chǎng),拓展更多企業(yè)級(jí)應(yīng)用場(chǎng)景,加速國(guó)際化步伐,將巨杉數(shù)據(jù)庫(kù)打造成為世界級(jí)的分布式數(shù)據(jù)庫(kù)產(chǎn)品!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17799.html
摘要:云平臺(tái)涵蓋了硬件運(yùn)行時(shí)代碼庫(kù)框架服務(wù)及服務(wù)管理系統(tǒng)等。云平臺(tái)作為企業(yè)信息系統(tǒng)的底層支撐系統(tǒng),更是要著眼于業(yè)務(wù)。 這兒講的平臺(tái),是指計(jì)算平臺(tái)(conputing platform),這是一種環(huán)境,軟件在這種環(huán)境里運(yùn)行。更進(jìn)一步,云平臺(tái),我們把它定義為企業(yè)級(jí)的云計(jì)算化的平臺(tái),直接面向業(yè)務(wù)的軟件運(yùn)行在這個(gè)平臺(tái)上,并且利用這個(gè)平臺(tái)環(huán)境,新的業(yè)務(wù)軟件可以迅速被開發(fā)出來(lái)。云平臺(tái)涵蓋了硬件、運(yùn)行時(shí)代...
摘要:相關(guān)推薦,豆瓣評(píng)分,人評(píng)價(jià)本書介紹了在編程中條極具實(shí)用價(jià)值的經(jīng)驗(yàn)規(guī)則,這些經(jīng)驗(yàn)規(guī)則涵蓋了大多數(shù)開發(fā)人員每天所面臨的問題的解決方案。實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)推薦豆瓣評(píng)分,書的質(zhì)量沒的說(shuō),推薦大家好好看一下。 該文已加入開源文檔:JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識(shí))。地址:https://github.com/Snailclimb... 【強(qiáng)烈推薦!非廣告!】...
閱讀 3245·2021-11-24 10:43
閱讀 4207·2021-11-24 10:33
閱讀 3787·2021-11-22 09:34
閱讀 2135·2021-10-11 10:58
閱讀 3756·2021-10-11 10:58
閱讀 870·2021-09-27 13:36
閱讀 3587·2019-08-30 15:54
閱讀 2975·2019-08-29 18:41