你真的了解 Htap 嗎?
HTAP是目前數(shù)據(jù)庫領(lǐng)域談得最多的一個(gè)詞,也是我們存在最多誤解的詞。曾經(jīng)有一個(gè)企業(yè)的IT主管和我說,如果我選一款HTAP數(shù)據(jù)庫產(chǎn)品,是不是我都可以把數(shù)據(jù)倉庫拆了,今后只有在線交易系統(tǒng)和大數(shù)據(jù)平臺(tái)就行了。這里面實(shí)際上包含了對HTAP的巨大的誤解。HTAP=OLTP+OLAP,上面的這個(gè)公式真的成立嗎?今天我們來簡單地了解一下傳統(tǒng)的OLTP和OLAP是什么樣的。
            
                
                    
                        
                        
						
                        
                    
                
            
        
上面是一個(gè)傳統(tǒng)的交易域和數(shù)倉域分離的傳統(tǒng)數(shù)據(jù)倉庫架構(gòu)。大量的在線交易系統(tǒng)首先把數(shù)據(jù)復(fù)制到貼貼源層的ODS,然后經(jīng)過ETL工具加載到數(shù)據(jù)倉庫中,同時(shí)數(shù)據(jù)倉庫中還會(huì)存儲(chǔ)一些來自外部的數(shù)據(jù),甚至一些外購的數(shù)據(jù)。存儲(chǔ)在數(shù)據(jù)倉庫中的是高價(jià)值數(shù)據(jù),經(jīng)過處理后形成一系列的數(shù)據(jù)集市,供業(yè)務(wù)系統(tǒng)使用。這種架構(gòu)中將在線交易與數(shù)據(jù)分析兩種截然不同的負(fù)載區(qū)分開來,避免相互干擾。
不過這種架構(gòu)最大的問題是,ETL的延時(shí)比較大,很多需要及時(shí)分析的業(yè)務(wù)無法得到保證。因此縮短在線交易系統(tǒng)到數(shù)據(jù)倉庫之間的延時(shí)就十分重要了。

Oracle公司推出了一套基于準(zhǔn)實(shí)時(shí)ETL產(chǎn)品ODI的解決方案。生產(chǎn)系統(tǒng)使用ORACLE的交易型數(shù)據(jù)庫模式,通過ODI捕獲生產(chǎn)系統(tǒng)的變化,并通過定義好的轉(zhuǎn)換規(guī)則,準(zhǔn)實(shí)時(shí)進(jìn)行ETL操作,復(fù)制數(shù)據(jù)到ORACLE OLAP模式的數(shù)據(jù)倉庫中。上面的優(yōu)化模式雖然能解決一部分?jǐn)?shù)據(jù)倉庫的延時(shí)問題,但是對于實(shí)時(shí)性要求更高的一些業(yè)務(wù)就無法滿足了。
因此在在線交易系統(tǒng)中支撐比較強(qiáng)大的數(shù)據(jù)分析功能的需求就應(yīng)運(yùn)而生了,這個(gè)需求就是HTAP計(jì)算模式。不過聰明的朋友可能也看出來了,這種HTAP計(jì)算并不等同于在線交易+數(shù)據(jù)倉庫業(yè)務(wù)。因?yàn)槿绻覀円岩粋€(gè)企業(yè)的所有高價(jià)值數(shù)據(jù)都存儲(chǔ)在一個(gè)數(shù)據(jù)庫里,才能實(shí)現(xiàn)這個(gè)替代數(shù)據(jù)倉庫的目標(biāo)。而這種設(shè)計(jì)會(huì)讓單一的數(shù)據(jù)庫太重了,一旦這個(gè)數(shù)據(jù)庫出現(xiàn)一點(diǎn)點(diǎn)問題,可能就會(huì)影響整個(gè)企業(yè)的業(yè)務(wù),這是我們無法承受的。
企業(yè)需要的HTAP能力不需要完全覆蓋數(shù)據(jù)倉庫業(yè)務(wù),僅僅需要對核心業(yè)務(wù)需要的在線分析能力做一定的提升就可以了。因此在HTAP數(shù)據(jù)庫中需要存儲(chǔ)的就是OLTP系統(tǒng)本身的數(shù)據(jù)以及部分分析必須的從外部提取過來的高價(jià)值數(shù)據(jù)。

上面的圖看上去是不是簡單多了,不過這個(gè)簡化了的業(yè)務(wù)需求也并不容易實(shí)現(xiàn)。這是因?yàn)門P系統(tǒng)跑的是穩(wěn)定,高并發(fā),低延時(shí),大多數(shù)通過索引訪問,大量寫操作的小業(yè)務(wù),對于并發(fā)寫入量較大的表,盡可能減少不必要的索引;而AP系統(tǒng)跑的是隨機(jī)性大,資源開銷極大,大部分需要對大表進(jìn)行并行掃描,持續(xù)時(shí)間很長的的以讀為主的分析類業(yè)務(wù)。讀寫操作之間會(huì)有相互影響,大量的寫操作希望索引越少越好,而大量的讀操作希望索引越豐富越好。AP操作的臨時(shí)性資源開銷可能會(huì)導(dǎo)致TP業(yè)務(wù)的延時(shí)出現(xiàn)經(jīng)常性的抖動(dòng),這些都是會(huì)讓TP業(yè)務(wù)無法忍受的。
TP業(yè)務(wù)經(jīng)常需要訪問一張表中的多個(gè)字段,從而實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,因此用行存儲(chǔ)的方式性能最佳。AP業(yè)務(wù)經(jīng)常對某一列的數(shù)據(jù)做掃描分析,因此如果數(shù)據(jù)按列存儲(chǔ)具有較好的性能。這些業(yè)務(wù)之間的矛盾都使一個(gè)數(shù)據(jù)庫中承載混合的HTAP負(fù)載十分困難。
而實(shí)際上,我們的OLTP系統(tǒng)中,真的都需要HTAP工作負(fù)載嗎?答案是否定的。大多數(shù)OLTP系統(tǒng)中僅僅需要一定量的批處理負(fù)載,用于對數(shù)據(jù)進(jìn)行一些復(fù)雜的加工。在一個(gè)設(shè)計(jì)的比較好的OLTP系統(tǒng)中,通過定期自動(dòng)匯總數(shù)據(jù),物化視圖等方式,可以大幅度減少開銷極大的AP工作負(fù)載。只有極少數(shù)的系統(tǒng)是真的必須有復(fù)雜的準(zhǔn)實(shí)時(shí)OLAP需求的。而對于AP的實(shí)時(shí)性要求,如果通過更實(shí)時(shí)的數(shù)據(jù)復(fù)制和ETL,大部分問題是可以解決的。
此外,分布式SQL引擎的效率、OLTP/OLAP的資源隔離與防干擾措施、數(shù)據(jù)存儲(chǔ)格式、大型集群管理、讀寫副本的使用方式、主副本切換帶來的性能抖動(dòng)等都會(huì)影響數(shù)據(jù)庫的HTAP能力。
既然HTAP負(fù)載并不是業(yè)務(wù)系統(tǒng)一定要追求的,那么為什么現(xiàn)在我們隨便看到一個(gè)分布式數(shù)據(jù)庫,就一定說自己是HTAP數(shù)據(jù)庫呢?
這實(shí)際上是和分布式數(shù)據(jù)庫的發(fā)展歷史分不開的。分布式數(shù)據(jù)庫剛剛出現(xiàn)的時(shí)候,主要還是為了高并發(fā)的OLTP寫入業(yè)務(wù)。因此這些數(shù)據(jù)庫產(chǎn)品的多表關(guān)聯(lián),復(fù)雜分析功能是很弱的。分布數(shù)據(jù)庫廠家也在不斷地優(yōu)化產(chǎn)品,努力提升這方面的能力。因此為了標(biāo)榜自己的技術(shù)優(yōu)勢,大家都在HTAP能力上開展起軍備競賽了。
雖然如此,如果真的有一個(gè)HTAP能力極強(qiáng)的數(shù)據(jù)庫產(chǎn)品放在我們面前,對于用戶和軟件開發(fā)商來說,肯定是一件好事情。這會(huì)讓我們的管理系統(tǒng),交易系統(tǒng)的功能變得更加豐富。對于某些行業(yè)的業(yè)務(wù)系統(tǒng)來說,可能會(huì)促進(jìn)業(yè)務(wù)的革命性變革。比如說能源行業(yè)鼓吹了多年的源網(wǎng)核儲(chǔ)互動(dòng),因?yàn)槲覀兊臄?shù)據(jù)處理能力不足,不及時(shí),導(dǎo)致我們在電力生產(chǎn)、消費(fèi)、儲(chǔ)能、調(diào)度等方面的數(shù)據(jù)無法及時(shí)進(jìn)行處理分析,大大降低了能源的綜合利用率。
目前來說,電是不可大規(guī)模存儲(chǔ)的資源,而且電源側(cè)發(fā)出的電必須平衡的被消耗掉,否則多發(fā)出來的電必須被盡快消耗掉,而某個(gè)局部網(wǎng)絡(luò)上的電能不足時(shí),就只能拉閘限電,確保電能在網(wǎng)絡(luò)上整個(gè)是平衡的。當(dāng)電源側(cè)發(fā)電量過大,或者用電需求過大,供給不足或者電力調(diào)度不及時(shí),導(dǎo)致用電缺口達(dá)到一定程度的時(shí)候,電網(wǎng)會(huì)因?yàn)椴黄胶舛饬眩?013年洛杉磯大停電或者前幾年美國德州大停電的慘劇就會(huì)重演了。
我們國家這些年沒有出現(xiàn)過類似的情況,這說明我國的大電網(wǎng)調(diào)度運(yùn)營水平是很高的。不過這種水平很高并不意味著很高效。我們的電網(wǎng)調(diào)度十分依賴于相對穩(wěn)定的電源,比如火力發(fā)電。而水電、光伏、風(fēng)能這些清潔能源因?yàn)槠洳环€(wěn)定,會(huì)大大加大電網(wǎng)調(diào)度的難度。因此目前我國棄風(fēng)棄光的比例一直是高于西方發(fā)達(dá)國家的。
為了完成碳中和目標(biāo),加大清潔能源供給是必然的,因此源網(wǎng)核儲(chǔ)互動(dòng)能力的提升十分關(guān)鍵。而要提升源網(wǎng)核儲(chǔ)互動(dòng)的效率,精準(zhǔn)及時(shí)的數(shù)據(jù)采集與數(shù)據(jù)分析是關(guān)鍵。我們必須提高電能表采集的頻率(歐洲最先進(jìn)的電網(wǎng)計(jì)量已經(jīng)實(shí)現(xiàn)了5分鐘全量采集,而我們目前的主流水平還只是重點(diǎn)電表15分鐘間隔采集),提升與發(fā)電企業(yè)之間的數(shù)據(jù)交換的水平,對氣候、社會(huì)熱點(diǎn)、制造業(yè)增長態(tài)勢、外貿(mào)等數(shù)據(jù)進(jìn)行更廣泛的采集與處理分析,這樣才能逐步提升電網(wǎng)調(diào)度計(jì)劃的水平。以目前電能采集系統(tǒng)到大數(shù)據(jù)平臺(tái)數(shù)據(jù)復(fù)制的一天時(shí)延來看,要實(shí)現(xiàn)這個(gè)任務(wù)是幾乎不可能的。
具有強(qiáng)大HTAP處理能力的數(shù)據(jù)庫是解決這個(gè)計(jì)算難題的十分關(guān)鍵的IT基礎(chǔ)設(shè)施,這是一個(gè)十分現(xiàn)實(shí)的HTAP計(jì)算場景。十分可惜的是,在我們?yōu)檫@個(gè)場景選擇數(shù)據(jù)庫產(chǎn)品的時(shí)候,還沒有找到一款國產(chǎn)數(shù)據(jù)庫產(chǎn)品具備處理這個(gè)業(yè)務(wù)場景的能力。
其他行業(yè)中,也可以找出很多類似這樣的計(jì)算場景,在提升企業(yè)效率,降低企業(yè)成本的業(yè)務(wù)創(chuàng)新中,這種需求也會(huì)越來越多。因此數(shù)據(jù)庫產(chǎn)品發(fā)展HTAP能力是十分重要的。只是說,目前我們的國產(chǎn)數(shù)據(jù)庫的HTAP能力建設(shè)還處于初級階段,目前大多數(shù)國產(chǎn)數(shù)據(jù)庫能夠提供的HTAP能力大部分可以通過業(yè)務(wù)系統(tǒng)優(yōu)化來避開,而真正對HTAP強(qiáng)需求的場景,我們的產(chǎn)品的支撐能力還略顯不足。















 
 
 








 
 
 
 