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