1月8日,2020年MongoDB中文社區(qū)年終大會于線上隆重舉行,大會以“重新認(rèn)識MongoDB”為中心探討了MongoDB的技術(shù)能力創(chuàng)新、行業(yè)解決方案,以及未來發(fā)展方向。華為云DDS數(shù)據(jù)庫架構(gòu)師受邀參加并發(fā)表了《MongoDB內(nèi)核源碼分布式事務(wù)》主題演講,分享了MongoDB社區(qū)版的技術(shù)能力、存算分離架構(gòu)下的GaussDB(for Mongo)技術(shù)創(chuàng)新,以及DDS在社區(qū)源碼上的實(shí)踐,對企業(yè)上云和未來發(fā)展具有重大意義。
演進(jìn)中的MongoDB社區(qū)版
MongoDB作為全球備受歡迎的非關(guān)系型數(shù)據(jù)庫典型代表,擁有龐大的用戶量和優(yōu)秀的技術(shù)能力,并在不斷演進(jìn)升級中創(chuàng)造出了一系列產(chǎn)品能力。崔鑫從分片、復(fù)制、事務(wù)、分布式事務(wù)等方面詳細(xì)介紹了MongoDB社區(qū)版的技術(shù)能力,如針對物理時(shí)鐘偏差問題,社區(qū)版推出混合邏輯時(shí)鐘(HLC),通過HLC的統(tǒng)一邏輯、分配、動態(tài)推進(jìn)等方式,解決MongoDB時(shí)間一致性問題;針對低吞吐、高時(shí)延問題,社區(qū)版基于Replication與Raft協(xié)議,保障數(shù)據(jù)一致性,以及基于時(shí)間戳保障事務(wù)的一致性等。
存算分離架構(gòu)下的GaussDB(for Mongo)
隨著企業(yè)數(shù)字化轉(zhuǎn)型升級的加速,企業(yè)對云數(shù)據(jù)庫的要求水漲船高,更高可靠、高可用、高安全的云數(shù)據(jù)庫成為企業(yè)的上云首選。GaussDB(for Mongo)是一款基于計(jì)算存儲分離架構(gòu),兼容MongoDB生態(tài)的云原生NoSQL數(shù)據(jù)庫。在華為云高性能、高可用、高可靠、高安全、可彈性伸縮的基礎(chǔ)上,提供了一鍵部署、快速備份恢復(fù)、計(jì)算存儲獨(dú)立擴(kuò)容、監(jiān)控告警等服務(wù)能力。
相比社區(qū)版,GaussDB(for Mongo)優(yōu)勢明顯,如添加Secondary節(jié)點(diǎn)從小時(shí)級縮短為秒級;基于WAL復(fù)制,Secondary節(jié)點(diǎn)無寫IO,從根本上解決社區(qū)版Seconary節(jié)點(diǎn)Oplog脫節(jié)問題;Primary/Seconary無任何IO交互,Secondary節(jié)點(diǎn)個(gè)數(shù)理論無上限,可支持百萬級OPS;LSMTree Compaction計(jì)算/IO卸載到Compaction統(tǒng)一調(diào)度池,集中管理,不浪費(fèi)用戶讀寫IO;基于共享存儲,Chunk分裂/遷移動作不引起真實(shí)IO,只更新路由元數(shù)據(jù),秒級分裂/均衡。
華為云數(shù)據(jù)庫GaussDB(for Mongo)架構(gòu)圖
DDS在MongoDB社區(qū)源碼上的實(shí)踐
基于云上MongoDB承載更多業(yè)務(wù)訴求的現(xiàn)狀,華為云文檔數(shù)據(jù)庫服務(wù)DDS在MongoDB社區(qū)版開放了7大源碼實(shí)踐能力,如集群模式下支持多文檔事務(wù),即通過在Mongos上增加了對Session的支持,Mongos側(cè)的Session對象跟蹤事務(wù)執(zhí)行的狀態(tài)并路由到對應(yīng)的Shard上執(zhí)行,而且集群模式下的事務(wù)使用方式與副本集完全一致;操作審計(jì)功能,即支持用戶/庫/表/操作級別的審計(jì)功能;查詢內(nèi)存限制,避免并發(fā)查詢下的OOM問題;以及中文全文檢索、Mongos路由自動刷新、MongoRocks、數(shù)據(jù)庫層面物理熱備等。
崔鑫最后表示,2021年華為云數(shù)據(jù)庫將從MongoDB集群單shard事務(wù)、集群分布式事務(wù)、物化視圖等方面去提升改進(jìn),未來將以rocksdb存儲引擎為主,在存儲架構(gòu)層面同時(shí)發(fā)展計(jì)算存儲分離和計(jì)算存儲混合的兩種產(chǎn)品形態(tài),充分利用華為軟硬件優(yōu)勢持續(xù)構(gòu)建業(yè)內(nèi)領(lǐng)先的技術(shù)和服務(wù),未來的GaussDB(for Mongo)和DDS會更優(yōu)秀。