首款國(guó)產(chǎn)開(kāi)源數(shù)據(jù)庫(kù)TBase核心架構(gòu)演進(jìn)
在執(zhí)行計(jì)劃生成層面,我們生成執(zhí)行計(jì)劃的策略有兩種。
第一種是規(guī)則優(yōu)化(RBO),即 RULE BASED OPTIMIZER,顧名思義就是在生成執(zhí)行計(jì)劃的時(shí)候,是根據(jù)SQL的模式,遇到了什么條件,就生成什么樣的執(zhí)行計(jì)劃給它。這種方式其實(shí)在實(shí)踐起來(lái)比較簡(jiǎn)單,某些方面比較高效,缺點(diǎn)是彈性不足,對(duì)一些復(fù)雜場(chǎng)景,它很難去應(yīng)對(duì),沒(méi)有足夠的彈性。
第二種是代價(jià)優(yōu)化(CBO),即COST BASED OPTIMIZER,這是用的比較多的主流優(yōu)化方式。它主要會(huì)從目標(biāo)SQL諸多可能的執(zhí)行路徑中選擇成本比較小的一條作為執(zhí)行計(jì)劃,成本值是根據(jù)目標(biāo)SQL語(yǔ)句所涉及到的表、索引、列等相關(guān)對(duì)象的統(tǒng)計(jì)信息算出來(lái)的。它的適用性會(huì)比較好,特別適合一些復(fù)雜的場(chǎng)景,而且在一些復(fù)雜場(chǎng)景下會(huì)性能表現(xiàn)比較穩(wěn)定。缺點(diǎn)是復(fù)雜度比較高的,有一定的前置條件,包括我們統(tǒng)計(jì)信息的準(zhǔn)確度,代價(jià)計(jì)算模型的一個(gè)精確度。TBase來(lái)講的話,兩塊都會(huì)有,更多的會(huì)偏向于后面的代價(jià)優(yōu)化(CBO)。
TBase在整個(gè)設(shè)計(jì)分布式執(zhí)行方式的時(shí)候,我們有一個(gè)很明確的目標(biāo):希望業(yè)務(wù)的SQL不需要感知集群結(jié)構(gòu),它可以像使用單機(jī)的數(shù)據(jù)庫(kù)一樣來(lái)使用TBase。
也就是說(shuō)客戶和業(yè)務(wù)在使用TBase的時(shí)候,他不用考慮分庫(kù)分表的問(wèn)題,也不用考慮這個(gè)集群里面有多少個(gè)節(jié)點(diǎn),SQL是怎么寫(xiě)的,他就可以像使用普通的單機(jī)的數(shù)據(jù)庫(kù)一樣來(lái)使用TBase。為了達(dá)成這個(gè)目標(biāo),我們使用了前面我們講到的各種各樣能夠幫助我們解決問(wèn)題的技術(shù)。比如說(shuō)我們?cè)谶M(jìn)行查詢優(yōu)化的的時(shí)候,如果發(fā)現(xiàn)表這一列都是按照分布列來(lái)進(jìn)行查詢的,就走規(guī)則的優(yōu)化,查詢直接下推;如果我們不是按照分布列來(lái)進(jìn)行查詢的,是按照表A是分布列,表B是非分布列,這個(gè)時(shí)候進(jìn)行查詢的時(shí)候就會(huì)根據(jù)代價(jià)來(lái)進(jìn)行判斷。如果這個(gè)表B足夠小的話,會(huì)通過(guò)廣播的方式,把表B在每個(gè)節(jié)點(diǎn)上都形成一個(gè)完美的副本,拿表A進(jìn)行查詢。如果表A和表B都很大,這個(gè)時(shí)候我們就會(huì)選擇一個(gè)成本相對(duì)比較低的表來(lái)進(jìn)行重分布,選擇的方式是表B。假如說(shuō)表B相對(duì)于表A要小一點(diǎn),按照表B來(lái)進(jìn)行重分布,來(lái)完成整個(gè)查詢。這個(gè)用在上面,我提到了包括redistribution和replication,還有push down。后面兩個(gè)我們push的是PLAN。
在TBase里面,在MPP的架構(gòu)下,我們具備了并行計(jì)算的架構(gòu)基礎(chǔ)。
全并行大概分幾級(jí),其中第一級(jí)是節(jié)點(diǎn)級(jí)的,也就是說(shuō)一個(gè)SQL來(lái)了之后,我們會(huì)把這個(gè)查詢的同時(shí)發(fā)給三個(gè)節(jié)點(diǎn),三個(gè)節(jié)點(diǎn)同時(shí)開(kāi)始計(jì)算。然后在節(jié)點(diǎn)內(nèi)部的話,我們會(huì)進(jìn)行算子級(jí)的并行。比如說(shuō)進(jìn)行一個(gè)Hash JOIN,我們會(huì)多進(jìn)程的完成這樣一個(gè)Hash JOIN的過(guò)程。在每一步計(jì)算的過(guò)程中,還會(huì)使用指令級(jí)的SIMD的一些指令來(lái)加速。這樣其實(shí)做到了從節(jié)點(diǎn)級(jí)到進(jìn)程級(jí)以及指令級(jí)的一個(gè)并行。
前面介紹了我們對(duì)性能進(jìn)行優(yōu)化的方式,這里講一下數(shù)據(jù)庫(kù)常見(jiàn)的容災(zāi)方式。
數(shù)據(jù)庫(kù)容災(zāi)方式大概分幾種:
第一種是我們傳統(tǒng)單機(jī)數(shù)據(jù)庫(kù),包括MySQL、PG、ORACLE,常規(guī)的這種容災(zāi)方式也是通過(guò)流復(fù)制的方式,流復(fù)制的基礎(chǔ)是基于日志,或者是基于數(shù)據(jù)塊。復(fù)制方式有同步復(fù)制和異步復(fù)制,所謂同步復(fù)制是等主機(jī)返回請(qǐng)求之前一定要等到備機(jī)的日志可靠落地之后,它才會(huì)返回成功給客戶端。異步的話是主機(jī)事務(wù)日志落盤(pán)后,異步把日志發(fā)送到備機(jī),不用等待備機(jī)事務(wù)的可靠落盤(pán)。同步和異步對(duì)外體現(xiàn)的主要是業(yè)務(wù)的RTO、RPO的影響。這種方式一般來(lái)講下,我們?cè)谥鳈C(jī)上提供讀寫(xiě)能力,在備機(jī)上提供只讀能力。
第二種容災(zāi)方式大家看到的比較多,主要是使用一致性協(xié)議來(lái)復(fù)制日志,也就是說(shuō)每個(gè)寫(xiě)入請(qǐng)求來(lái)的時(shí)候,它都會(huì)通過(guò)一致性協(xié)議進(jìn)行集群內(nèi)部的協(xié)商來(lái)達(dá)成最終的一致。這樣的架構(gòu)的好處是每個(gè)副本都可以寫(xiě)入,但缺點(diǎn)也比較明顯,每個(gè)寫(xiě)入都需要經(jīng)過(guò)若干次的網(wǎng)絡(luò)同步,效率其實(shí)要比基于流復(fù)制的容災(zāi)方式弱一些。因?yàn)樗拿總(gè)副本都有完整的一個(gè)數(shù)據(jù),而且都可以進(jìn)行導(dǎo)換,所以它的RTO表現(xiàn)會(huì)好一點(diǎn)。從這里其實(shí)我們可以看出來(lái),數(shù)據(jù)庫(kù)容災(zāi)的本質(zhì)其實(shí)就是數(shù)據(jù)的多副本,各種方案的區(qū)別主要是在于多副本我們是怎么實(shí)現(xiàn)的。TBase多副本實(shí)現(xiàn)沒(méi)有使用一致性協(xié)議。
接下來(lái)給大家介紹下TBase運(yùn)維管控架構(gòu),TBase作為一個(gè)分布式系統(tǒng),整體的架構(gòu)是比較復(fù)雜。
我們需要一個(gè)運(yùn)維管控系統(tǒng)來(lái)保證整個(gè)系統(tǒng)的可靠運(yùn)行和高效的運(yùn)維。整個(gè)TBase的運(yùn)維管控系統(tǒng)如圖所示,圖中最上層是ETCD集群,即TBase的元數(shù)據(jù)管控集群。另外它提供一些控制中心的選主的能力。第二層是運(yùn)維管控中心,它實(shí)時(shí)的監(jiān)控集群的狀態(tài),同時(shí)這里也可以去觸發(fā)一些故障處理邏輯。第三層是數(shù)據(jù)探活集群,這一層主要是有部署在每臺(tái)服務(wù)器上的Agent來(lái)完成,它會(huì)實(shí)時(shí)的去探測(cè)每個(gè)數(shù)據(jù)庫(kù)實(shí)例的健康度并進(jìn)行上報(bào),同時(shí)它也會(huì)執(zhí)行上層的運(yùn)維管控中心下發(fā)的一些指令。最下層是數(shù)據(jù)庫(kù)實(shí)例,這一層其實(shí)是通過(guò)資源池化的方式來(lái)進(jìn)行資源隔離,同時(shí)內(nèi)部也進(jìn)行了一些容災(zāi)的控制。
這里我提一下數(shù)據(jù)庫(kù)里面比較重要的備份問(wèn)題。我們?yōu)槭裁匆M(jìn)行冷備?
前一段時(shí)間發(fā)生的數(shù)據(jù)冷備被刪除,導(dǎo)致業(yè)務(wù)中斷估計(jì)大家還有印象。所謂的冷備其實(shí)也是數(shù)據(jù)庫(kù)安全的最后一套防線,我們一般什么時(shí)候用到冷備呢?經(jīng)常是在發(fā)生重大的誤操作的時(shí)候,比如說(shuō)我不小心把庫(kù)刪了,或者說(shuō)整個(gè)機(jī)房所有的副本都掛了,另外如果說(shuō)數(shù)據(jù)做了惡意的修改或者篡改之后,需要把數(shù)據(jù)恢復(fù)到一定時(shí)間以前的數(shù)據(jù),冷備是數(shù)據(jù)庫(kù)的最后一個(gè)保護(hù)傘,對(duì)數(shù)據(jù)庫(kù)來(lái)講是非常重要的。
冷備可能會(huì)存在的一些問(wèn)題。
分布式場(chǎng)景下數(shù)據(jù)庫(kù)的冷備存在的問(wèn)題和分布式事務(wù)存在的問(wèn)題是很類似的。我們集群內(nèi)部會(huì)有多個(gè)節(jié)點(diǎn)在并行跑事務(wù),最難搞的問(wèn)題是在分布式冷備系統(tǒng)中如何找到一致性的恢復(fù)點(diǎn)。如圖,集群里有兩個(gè)節(jié)點(diǎn)DB1和DB2,冷備點(diǎn)1和4的,恢復(fù)就是一致的。冷備點(diǎn)2和冷備點(diǎn)3就是不一致的。整體一致點(diǎn)的選擇非常重要。如果選擇不當(dāng)就會(huì)造成數(shù)據(jù)的損失和不一致。
分布式數(shù)據(jù)庫(kù)里面,如何尋找一致的冷備點(diǎn)也有一些方法可以參考。
第一種是要求在做冷備的時(shí)候,通過(guò)設(shè)置事務(wù)柵欄來(lái)保證整個(gè)事務(wù)的一致性,我們會(huì)在所有的日志里面設(shè)置一致性標(biāo)簽,然后恢復(fù)的時(shí)候,指令說(shuō)恢復(fù)這個(gè)標(biāo)簽就停下來(lái),這樣可以保證整個(gè)事務(wù)的一致性。但是這里有一個(gè)缺點(diǎn),在進(jìn)行一致創(chuàng)建的時(shí)候,必須得去阻塞或者延遲當(dāng)前事務(wù)的執(zhí)行,對(duì)系統(tǒng)的影響其實(shí)還是比較大的。TBase是通過(guò)時(shí)間戳的方式,每個(gè)事務(wù)都有一個(gè)時(shí)間戳,那么在選擇冷備點(diǎn)的時(shí)候,就可以決定說(shuō)要恢復(fù)到某個(gè)具體的時(shí)間戳,通過(guò)事務(wù)的時(shí)間戳我們就可以很好的保證整個(gè)冷備恢復(fù)的一致性。
前面介紹了TBase在執(zhí)行和冷備及可靠性分析的設(shè)計(jì),接下來(lái)介紹下TBase特有的安全能力,在支撐公司業(yè)務(wù)過(guò)程中摸索出來(lái)的一套比較有效的數(shù)據(jù)安全管理體系,我們管它叫MLS(multiple layer security)。
這個(gè)數(shù)據(jù)安全體系的基礎(chǔ)是三權(quán)分立,所謂的三權(quán)分立指的是:安全管理員、審計(jì)管理員、數(shù)據(jù)管理員三個(gè)角色在系統(tǒng)里面相互隔離。安全管理員主要是負(fù)責(zé)安全規(guī)則的制定;審計(jì)管理員主要負(fù)責(zé)審計(jì)規(guī)則的制定;數(shù)據(jù)管理員更多的相當(dāng)于我們之前的DBA的一個(gè)角色。這三個(gè)角色之間在權(quán)限上和能力上來(lái)講是完全隔離的,相互之間在功能上沒(méi)有交叉。安全管理員的安全規(guī)則會(huì)約束到審計(jì)管理員和數(shù)據(jù)管理員,然后審計(jì)管理員的審計(jì)規(guī)則會(huì)約束到安全管理員和數(shù)據(jù)管理員。接下來(lái)給大家分別介紹下:TBase的行級(jí)強(qiáng)制安全規(guī)則、列級(jí)的安全規(guī)則、數(shù)據(jù)脫敏和加密。
1、TBase的行級(jí)強(qiáng)制安全規(guī)則。
行級(jí)安全規(guī)則保證在TBase中我們可以做到數(shù)據(jù)行級(jí)安全的權(quán)限控制。安全規(guī)則三元組:一個(gè)是level(安全級(jí)別),這個(gè)安全級(jí)別是從上往下兼容,也就是說(shuō)我如果具有絕密級(jí)別的安全權(quán)限的話,我就可以獲取到機(jī)密、保密和公開(kāi)級(jí)別的數(shù)據(jù)的一個(gè)訪問(wèn)權(quán)限。第二個(gè)是Catalog/compartment(目錄控制Catalog/compartment,這是一個(gè)集合的概念。也就是說(shuō)如果有了α、β和∑這三個(gè)對(duì)象整體的權(quán)限的話,我就可以單獨(dú)的去訪問(wèn)只有α或者β或者∑其中一個(gè)或者幾個(gè)組合的數(shù)據(jù)。最后一個(gè)是Group(組),這個(gè)概念比較容易理解,類似于公司組織關(guān)系,上級(jí)節(jié)點(diǎn)具有下級(jí)節(jié)點(diǎn)的權(quán)限。

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會(huì)
-
即日-5.15立即報(bào)名>>> 【在線會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書(shū)】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評(píng) >> 【評(píng)選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評(píng)選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開(kāi)始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺(tái)
- 5 國(guó)產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來(lái)商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽(yáng)光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開(kāi)成長(zhǎng)空間
- 8 地平線自動(dòng)駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營(yíng)收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?