“HTAP”作為數(shù)據(jù)庫(kù)領(lǐng)域的當(dāng)紅炸子雞,其熱捧度逐年遞增。特別是在隨著國(guó)產(chǎn)化數(shù)據(jù)庫(kù)浪潮逐漸替代原有數(shù)據(jù)庫(kù)架構(gòu)的進(jìn)程中,業(yè)務(wù)系統(tǒng)中各類的復(fù)雜數(shù)據(jù)查詢與在線交易交織的場(chǎng)景需求日益增多,使得業(yè)務(wù)對(duì)數(shù)據(jù)庫(kù)HTAP的能力要求逐漸嚴(yán)格起來(lái)。
隨著各大廠商的不斷努力,市面上也涌現(xiàn)了一大批優(yōu)秀的HTAP數(shù)據(jù)庫(kù)產(chǎn)品。TDSQL很早就對(duì)外提供了HTAP能力,并在多行業(yè)場(chǎng)景應(yīng)用中落地,很多小伙伴也都很關(guān)注TDSQL的HTAP架構(gòu)到底是如何實(shí)現(xiàn)的,今天就好好跟大家說(shuō)道說(shuō)道。
一套“簡(jiǎn)單即可靠”的架構(gòu)
在討論這個(gè)問(wèn)題之前,我們需要知道TDSQL是什么產(chǎn)品?TDSQL是基于騰訊自研內(nèi)核TXSQL打造的企業(yè)級(jí)分布式數(shù)據(jù)庫(kù),在TXSQL的基礎(chǔ)之上解決了透明分布式事務(wù)、一致性、高可用、擴(kuò)容、性能等問(wèn)題,同時(shí)做了大量?jī)?nèi)核工作,如線程池、主備的強(qiáng)同步優(yōu)化、binlog優(yōu)化、復(fù)制限速、大表刪除、透明加密、審計(jì)、讀寫分離等。
但作為HTAP數(shù)據(jù)庫(kù)而言,不同負(fù)載場(chǎng)景下的“隔離性”、高并發(fā)場(chǎng)景下TP與AP各自的極限性能、數(shù)據(jù)的“新鮮程度”,都是數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中需要進(jìn)一步考慮的問(wèn)題。為此,TDSQL在已經(jīng)有著優(yōu)秀的“在線交易處理內(nèi)核能力”的基礎(chǔ)上,秉承“簡(jiǎn)單即可靠”的設(shè)計(jì)理念,通過(guò)松耦合的方式擴(kuò)展了一個(gè)全新的分析引擎。
下圖即是TDSQL全新的HTAP產(chǎn)品架構(gòu),TDSQL在底層通過(guò)多個(gè)數(shù)據(jù)分片將數(shù)據(jù)表均勻分散在不同的存儲(chǔ)節(jié)點(diǎn)中,并通過(guò)主從復(fù)制的能力實(shí)現(xiàn)數(shù)據(jù)高可用。
TDSQL的SQL Engine負(fù)責(zé)接收用戶的業(yè)務(wù)SQL,并在此基礎(chǔ)之上實(shí)現(xiàn)分布式事務(wù)等相關(guān)能力。在行存數(shù)據(jù)節(jié)點(diǎn)中,數(shù)據(jù)均是以"行"的形式進(jìn)行存儲(chǔ)的,這種模式能夠很好地兼顧數(shù)據(jù)庫(kù)的擴(kuò)展性和高并發(fā)的數(shù)據(jù)變更與查詢,以支撐到超高并發(fā)的在線交易型業(yè)務(wù)。
那么在多表join、數(shù)據(jù)聚集、排序等復(fù)雜查詢場(chǎng)景下又是如何實(shí)現(xiàn)的呢?前文中也有提到,TDSQL在行存節(jié)點(diǎn)的基礎(chǔ)之上擴(kuò)展了一個(gè)分析引擎,因?yàn)門DSQL是多分片的模式,分析引擎為每一個(gè)TDSQL分片(SET)啟動(dòng)一個(gè)列存的從庫(kù),然后自動(dòng)同步對(duì)應(yīng)的分片數(shù)據(jù)到列存從庫(kù)中,最后由統(tǒng)一的MPP SQL Engine組件解析用戶的復(fù)雜SQL,并生成MPP計(jì)劃下推到各列存節(jié)點(diǎn)中執(zhí)行,從而最終加速了復(fù)雜查詢的執(zhí)行效率。
當(dāng)然分析引擎的能力肯定不僅僅是MPP和列存,其中還包括了向量化的執(zhí)行引擎、基于代價(jià)的優(yōu)化器優(yōu)化、數(shù)據(jù)壓縮等各類關(guān)于分析型查詢的能力加持。
TDSQL的優(yōu)勢(shì)
在這樣一套“簡(jiǎn)單”的架構(gòu)下,TDSQL提供了哪些HTAP能力優(yōu)勢(shì)呢?
松耦合度行列混存架構(gòu)(隔離性好)
TDSQL最終采用了松耦合的部署模式,對(duì)同一份數(shù)據(jù)采用行存與列存分別存儲(chǔ),雖然增加了存儲(chǔ)消耗,但這樣做的好處是保證了在線交易性能又保證高速的分析能力。通過(guò)這種分散的部署方式確保了隔離性,避免互相影響。
分布式MPP計(jì)算引擎與向量化執(zhí)行(性能優(yōu))
因?yàn)門DSQL是shared nothing的分布式架構(gòu),相對(duì)而言無(wú)論是豎向還是橫向的擴(kuò)容都能支持。并且分析引擎還擴(kuò)展支持了全節(jié)點(diǎn)并行處理,與高效向量化執(zhí)行引擎,能夠支持?jǐn)?shù)億級(jí)數(shù)據(jù)join場(chǎng)景下的超高性能。
高穩(wěn)定性列式數(shù)據(jù)存儲(chǔ)(穩(wěn)定性高)
底層列式存儲(chǔ)是基于類LSM Tree引擎結(jié)構(gòu)的實(shí)現(xiàn),支持高壓縮比的數(shù)據(jù)存儲(chǔ)。因?yàn)長(zhǎng)SM Tree對(duì)數(shù)據(jù)的更新采用append的方式進(jìn)行,后端會(huì)定期的compaction,而compaction占用大量IO從而影響系統(tǒng)性能的穩(wěn)定,所以我們對(duì)于LSM Tree的compaction的機(jī)制進(jìn)行了較大的優(yōu)化和能力提升,能夠支持HTAP場(chǎng)景中存儲(chǔ)的超高性能穩(wěn)定性,在高數(shù)據(jù)變更負(fù)載情況下,查詢性能依然波動(dòng)較低。
可插拔引擎與可選擇式加速(成本低)
作為TDSQL的一個(gè)分析引擎組件,可根據(jù)實(shí)際情況進(jìn)行開(kāi)啟或關(guān)閉,并且同樣支持按需指定對(duì)象進(jìn)行分析加速,無(wú)需占用過(guò)多磁盤空間。
實(shí)時(shí)數(shù)據(jù)分析與查詢(實(shí)時(shí)性高)
TDSQL列存引擎的數(shù)據(jù)是實(shí)時(shí)從行存節(jié)點(diǎn)中進(jìn)行同步而來(lái)。行存與列存數(shù)據(jù)默認(rèn)異步同步模式,可達(dá)到毫秒級(jí)同步延遲。
統(tǒng)一訪問(wèn)入口,業(yè)務(wù)改造量?。ㄒ子眯愿撸?/p>
完全兼容和適配TDSQL架構(gòu)與語(yǔ)法。對(duì)現(xiàn)有TDSQL集群升級(jí)簡(jiǎn)單,影響小,并且支持多種數(shù)據(jù)訪問(wèn)模式,可充分滿足業(yè)務(wù)的實(shí)際需求,接入門檻低。
適用場(chǎng)景
那么當(dāng)前的TDSQL HTAP適用于什么業(yè)務(wù)場(chǎng)景呢?
超大數(shù)據(jù)規(guī)模的HTAP混合查詢類業(yè)務(wù)
在大型SaaS類業(yè)務(wù)中,用戶規(guī)模大,不同用戶以租戶維度共用一套實(shí)例,并且伴隨著數(shù)據(jù)量增大,在線數(shù)據(jù)更新也比較頻繁。同時(shí)還需要對(duì)數(shù)據(jù)進(jìn)行報(bào)告分析,實(shí)時(shí)為決策者提供詳細(xì)報(bào)表,以供經(jīng)營(yíng)分析。
或者如廣告業(yè)務(wù)推薦,業(yè)務(wù)后端需要利用數(shù)據(jù)針對(duì)不同客戶情況進(jìn)行廣告推薦,需要大量復(fù)雜查詢。
通過(guò)引入TDSQL HTAP的解決方案,可以使用分布式數(shù)據(jù)庫(kù)的能力應(yīng)對(duì)用戶超高并發(fā)的在線交易業(yè)務(wù),并且在某些混合復(fù)雜查詢業(yè)務(wù)的場(chǎng)景下,通過(guò)分析引擎進(jìn)行加速,以達(dá)到超高的執(zhí)行和查詢效率。
2020年,TDSQL助力“第七次全國(guó)人口普查”電子化高效推進(jìn),實(shí)現(xiàn)海量數(shù)據(jù)高速入庫(kù)和海量數(shù)據(jù)的多維統(tǒng)計(jì)分析,支持了十億級(jí)用戶數(shù)據(jù)、七百萬(wàn)個(gè)終端和百萬(wàn)級(jí)峰值TPS(每秒事務(wù)處理量),平穩(wěn)、高效支撐第七次全國(guó)人口普查工作完成。詳情點(diǎn)擊閱讀:14億人的大項(xiàng)目,拿下!
流批一體大數(shù)據(jù)架構(gòu)替換場(chǎng)景
一般流批一體的大數(shù)據(jù)架構(gòu)實(shí)際上更適用于PB以上的超大數(shù)據(jù)集的在線和離線分析。但是無(wú)論怎么樣,必然會(huì)涉及到時(shí)間同步的延遲性問(wèn)題,以及多種的異構(gòu)數(shù)據(jù)庫(kù)產(chǎn)品,維護(hù)成本較高昂。
而采用TDSQL HTAP一體化的架構(gòu)實(shí)現(xiàn),可滿足在一定量數(shù)據(jù)量級(jí)下的數(shù)據(jù)在線實(shí)時(shí)分析,通過(guò)在TDSQL基礎(chǔ)上擴(kuò)展資源,總體成本可降低80%,運(yùn)維復(fù)雜度也極大的減少。
數(shù)據(jù)跑批歸檔與定時(shí)報(bào)表
當(dāng)客戶場(chǎng)景有著大量數(shù)據(jù)密集型分析業(yè)務(wù),如銀行風(fēng)控/貸款等業(yè)務(wù)場(chǎng)景中,業(yè)務(wù)決策者不僅需要實(shí)時(shí)查看業(yè)務(wù)報(bào)表,還伴隨著超大規(guī)模數(shù)據(jù)并發(fā)讀寫,定時(shí)數(shù)據(jù)批量查詢寫入下游業(yè)務(wù)的大數(shù)據(jù)跑批,并且需要保證分析性能與交易數(shù)據(jù)完整性,要求既能滿足超高線上TPS的交易業(yè)務(wù),又能夠同時(shí)滿足實(shí)時(shí)分析的需求,兩者不能互相影響。
通過(guò)引入TDSQL HTAP可提升:
分析時(shí)效提升:數(shù)據(jù)實(shí)時(shí)查詢,幾乎無(wú)延時(shí)。
分析性能:報(bào)表查詢基本秒級(jí)返回,無(wú)需等待BI緩慢刷新,對(duì)比傳統(tǒng)數(shù)據(jù)庫(kù)性能提升210%。
成本降低:將原有的數(shù)據(jù)分散管理變?yōu)榧谢瘮?shù)據(jù)管控和數(shù)據(jù)治理,降低維護(hù)成本。
數(shù)據(jù)降級(jí)存儲(chǔ)
隨著業(yè)務(wù)規(guī)模的增長(zhǎng),業(yè)務(wù)數(shù)據(jù)規(guī)模逐步增長(zhǎng),為了確保在線交易性能,需要定時(shí)歸檔數(shù)據(jù)。而在歸檔后數(shù)據(jù)不能直接刪除,需要合并查詢輸出報(bào)告或者留存。在此類場(chǎng)中對(duì)數(shù)據(jù)庫(kù)吞吐性能要求高,且不能影響在線業(yè)務(wù)。
通過(guò)引入TDSQL HTAP可支持:
高效歸檔效率:隨時(shí)支持動(dòng)態(tài)數(shù)據(jù)停止同步,以及歷史數(shù)據(jù)刪除,效率高。
多級(jí)歸檔機(jī)制:支持列存壓縮歸檔方案與落冷磁盤歸檔方案。
歸檔數(shù)據(jù)定時(shí)查詢:完成歸檔后的數(shù)據(jù)依然支持超高速查詢,不影響數(shù)據(jù)訪問(wèn)。
結(jié)語(yǔ)
當(dāng)然,本文僅簡(jiǎn)單介紹了一些TDSQL HTAP方面實(shí)現(xiàn)的能力和架構(gòu),詳細(xì)的介紹在后續(xù)的文章中也會(huì)逐步提到,歡迎保持關(guān)注“騰訊云數(shù)據(jù)庫(kù)”官方微信公眾號(hào),我們將為您分享更多價(jià)值內(nèi)容。目前整體使用TDSQL HTAP中分析引擎的集群規(guī)模已經(jīng)突破數(shù)萬(wàn)核心、存儲(chǔ)容量達(dá)到10PB,支撐了數(shù)百家內(nèi)外客戶的生產(chǎn)環(huán)境作業(yè)。
歡迎更多用戶體驗(yàn)全新的TDSQL HTAP解決方案,相信在實(shí)際的體驗(yàn)中會(huì)發(fā)現(xiàn),無(wú)論是性能的提升還是能力的擴(kuò)展都將是一場(chǎng)驚喜之旅。