亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        GBase8aMPP:一種新型關(guān)系數(shù)據(jù)庫的設(shè)計(jì)和實(shí)踐

        2016-07-02 07:29:29天津南大通用數(shù)據(jù)技術(shù)股份有限公司解決方案技術(shù)總監(jiān)
        信息通信技術(shù)與政策 2016年4期
        關(guān)鍵詞:關(guān)系數(shù)據(jù)庫大數(shù)據(jù)

        李 瀚 天津南大通用數(shù)據(jù)技術(shù)股份有限公司解決方案技術(shù)總監(jiān)

        ?

        GBase8aMPP:一種新型關(guān)系數(shù)據(jù)庫的設(shè)計(jì)和實(shí)踐

        李瀚天津南大通用數(shù)據(jù)技術(shù)股份有限公司解決方案技術(shù)總監(jiān)

        摘要:隨著行業(yè)大數(shù)據(jù)應(yīng)用的迅速發(fā)展,對(duì)基于海量數(shù)據(jù)的行業(yè)大數(shù)據(jù)的存儲(chǔ)、處理和管理提出了更高要求,傳統(tǒng)的小機(jī)+存儲(chǔ)陣列的架構(gòu)已經(jīng)無法滿足海量數(shù)據(jù)增長(zhǎng)和系統(tǒng)擴(kuò)展性的要求。本文總結(jié)了一種基于MPP架構(gòu)+列式存儲(chǔ)設(shè)計(jì)的新型關(guān)系數(shù)據(jù)庫技術(shù)的產(chǎn)品——GBase8aMPP的技術(shù)設(shè)計(jì)思路,這些技術(shù)有效解決了傳統(tǒng)架構(gòu)下的擴(kuò)展性問題和大規(guī)模并行計(jì)算問題,并且通過內(nèi)部高可用機(jī)制實(shí)現(xiàn)在低價(jià)計(jì)算平臺(tái)上的大數(shù)據(jù)平臺(tái)可靠性。

        關(guān)鍵詞:大數(shù)據(jù);MPP(大規(guī)模并行計(jì)算)關(guān)系數(shù)據(jù)庫;列式存儲(chǔ);關(guān)系運(yùn)算

        1 引言

        關(guān)系數(shù)據(jù)庫是20世紀(jì)70年代基于關(guān)系代數(shù)理論發(fā)展的數(shù)據(jù)管理技術(shù),它將數(shù)據(jù)以表為單位組織,每個(gè)表的數(shù)據(jù)表現(xiàn)為一個(gè)實(shí)體,并通過基于范式的數(shù)據(jù)組織和關(guān)聯(lián)運(yùn)算使用SQL言語實(shí)現(xiàn)對(duì)數(shù)據(jù)的動(dòng)態(tài)關(guān)系生成,這種數(shù)據(jù)管理概念最大程度反映了應(yīng)用的實(shí)際需求,簡(jiǎn)化了信息系統(tǒng)開發(fā)時(shí)從模型設(shè)計(jì)到計(jì)算程序開發(fā)的流程,所以在信息處理領(lǐng)域具有重大的意義。在過去40年的關(guān)系數(shù)據(jù)庫發(fā)展中,數(shù)據(jù)庫一直基于集中存儲(chǔ)和集中計(jì)算的計(jì)算模式來實(shí)現(xiàn)其架構(gòu),因?yàn)檫@種模式十分適合關(guān)系計(jì)算的特征。早期的關(guān)系數(shù)據(jù)庫應(yīng)用主要適用于金融等典型的交易型領(lǐng)域,后隨著關(guān)系數(shù)據(jù)庫應(yīng)用的發(fā)展,應(yīng)運(yùn)產(chǎn)生了數(shù)據(jù)倉庫應(yīng)用和BI等相關(guān)領(lǐng)域,關(guān)系數(shù)據(jù)庫的應(yīng)用到達(dá)了一個(gè)頂峰。隨之,數(shù)據(jù)量逐漸增大,企業(yè)在數(shù)據(jù)庫相關(guān)的基礎(chǔ)設(shè)施的投入上,負(fù)擔(dān)也越來越大,“小機(jī)+存儲(chǔ)陣列”模式的系統(tǒng)架構(gòu)曾經(jīng)一度成為大企業(yè)構(gòu)建數(shù)據(jù)庫的標(biāo)準(zhǔn)平臺(tái),對(duì)于這樣的平臺(tái),企業(yè)動(dòng)輒用數(shù)千萬元投資去維持系統(tǒng)對(duì)海量數(shù)據(jù)的支撐和管理。隨著大數(shù)據(jù)時(shí)代的到來,傳統(tǒng)架構(gòu)和傳統(tǒng)數(shù)據(jù)庫所面臨的問題愈加顯著,系統(tǒng)面臨著數(shù)據(jù)庫系統(tǒng)可擴(kuò)展性難題,企業(yè)開始對(duì)傳統(tǒng)數(shù)據(jù)庫能否管理好如此大規(guī)模的數(shù)據(jù)量,能否可以處理海量數(shù)據(jù)等發(fā)生了懷疑。

        傳統(tǒng)數(shù)據(jù)庫所面臨的問題列舉如下:

        (1)數(shù)據(jù)計(jì)算模式依存于集中存儲(chǔ),而集中存儲(chǔ)的限制引起“小機(jī)+存儲(chǔ)陣列”模式無法承載更加大量數(shù)據(jù)的存儲(chǔ)和處理,并且造成I/O成為瓶頸。此模式下擴(kuò)展性差,通過傳統(tǒng)Scale UP模式的系統(tǒng)能力幾乎到達(dá)極限。

        (2)關(guān)系數(shù)據(jù)庫為了按照元組單位管理數(shù)據(jù),建立了基于AVL樹的索引機(jī)制,這種平衡樹結(jié)構(gòu)雖然引擎能夠保證按照最小路徑尋找數(shù)據(jù),但當(dāng)數(shù)據(jù)量增長(zhǎng)后,索引結(jié)構(gòu)的維護(hù)代價(jià)將隨著數(shù)據(jù)量的增加越來越大,導(dǎo)致大數(shù)據(jù)應(yīng)用下的數(shù)據(jù)批量寫入自身就成為難以解決的問題。

        (3)隨著數(shù)據(jù)量增加,更多的數(shù)據(jù)無法保證維持在內(nèi)存中,I/O的瓶頸效應(yīng)將進(jìn)一步顯著化。

        (4)為了保證數(shù)據(jù)庫數(shù)據(jù)的持久性和一致性,傳統(tǒng)數(shù)據(jù)庫管理系統(tǒng)提供基于日志的恢復(fù)機(jī)制,關(guān)系數(shù)據(jù)庫事務(wù)中對(duì)數(shù)據(jù)的更新需要首先記錄到日志中,而日志需要按照預(yù)先定義的策略(如WAL)更新到磁盤上,這個(gè)無疑會(huì)降低數(shù)據(jù)處理的性能。

        (5)單一SMP服務(wù)器下的處理能力已經(jīng)到達(dá)極限,對(duì)于海量數(shù)據(jù)條件下的關(guān)系運(yùn)算的關(guān)聯(lián)運(yùn)算和聚集運(yùn)算所需要的計(jì)算能力難以滿足。

        基于以上問題,從結(jié)構(gòu)上調(diào)整傳統(tǒng)關(guān)系型數(shù)據(jù)庫的體系架構(gòu)就成為必然。其中,NoSQL和NewSQL技術(shù)就是解決上述傳統(tǒng)關(guān)系數(shù)據(jù)庫問題時(shí)發(fā)展而來的新型技術(shù),它們均采用了以ScaleOut為代表的橫向擴(kuò)展性技術(shù),并且在存儲(chǔ)結(jié)構(gòu)上引入了列式存儲(chǔ)和I/O讀取時(shí)的智能過濾技術(shù);在事務(wù)控制技術(shù)上,NoSQL和NewSQL技術(shù)都采用了一系列的弱化或者簡(jiǎn)化措施,使得海量數(shù)據(jù)的處理一致性保障機(jī)制獲得一定簡(jiǎn)化。

        而NewSQL比較NoSQL,它保持了關(guān)系數(shù)據(jù)庫處理復(fù)雜關(guān)系運(yùn)算的特性,使關(guān)系數(shù)據(jù)庫中的多表關(guān)聯(lián)和其他復(fù)雜的SQL運(yùn)算等的高級(jí)功能在分布式結(jié)構(gòu)上仍能得到實(shí)現(xiàn),對(duì)于需要與結(jié)構(gòu)化數(shù)據(jù)和關(guān)系計(jì)算相關(guān)的“高級(jí)功能”時(shí),NewSQL就成為最佳的選擇。而除去互聯(lián)網(wǎng)等行業(yè),對(duì)于廣大行業(yè)大數(shù)據(jù)應(yīng)用而言,結(jié)構(gòu)化數(shù)據(jù)的相關(guān)處理占據(jù)了70%以上的行業(yè)大數(shù)據(jù)市場(chǎng),這也是以MPP數(shù)據(jù)庫為代表的NewSQL得以存在和發(fā)展的實(shí)質(zhì)原因。

        2 傳統(tǒng)關(guān)系數(shù)據(jù)庫的改造設(shè)計(jì)原則

        針對(duì)以上傳統(tǒng)數(shù)據(jù)庫所面臨的在存儲(chǔ)、處理結(jié)構(gòu)和事務(wù)處理機(jī)制上對(duì)于大數(shù)據(jù)應(yīng)用場(chǎng)景的瓶頸,在新型關(guān)系數(shù)據(jù)庫設(shè)計(jì)之初,考慮了以下幾方面的技術(shù)設(shè)計(jì)思路,這些設(shè)計(jì)思路符合當(dāng)前對(duì)關(guān)系型大數(shù)據(jù)平臺(tái)的架構(gòu)設(shè)計(jì)的基本趨勢(shì)。

        (1)為了實(shí)現(xiàn)存儲(chǔ)和處理能力的擴(kuò)展性,采取MPP分布式架構(gòu),通過ScaleOut方式實(shí)現(xiàn)橫向擴(kuò)展。

        (2)通過分布式架構(gòu)下的SharedNothing架構(gòu)實(shí)現(xiàn)并行I/O,從物理上解決集中存儲(chǔ)所面臨的I/O瓶頸問題。同時(shí),為了保證數(shù)據(jù)的快速讀取,應(yīng)盡可能保證數(shù)據(jù)存儲(chǔ)規(guī)則和處理查詢規(guī)則的一致性,為了解決這個(gè)問題,采用Hash規(guī)則實(shí)現(xiàn)對(duì)各元組入庫時(shí)的規(guī)則擺放,從而實(shí)現(xiàn)SharedNothing架構(gòu)下的數(shù)據(jù)快速定位。

        (3)通過列式存儲(chǔ)和數(shù)據(jù)壓縮技術(shù)實(shí)現(xiàn)數(shù)據(jù)I/O量吞吐的減少,節(jié)約了緩存的消耗。

        (4)隨著數(shù)據(jù)量增加,為了保持?jǐn)?shù)據(jù)存取性能的線性,建立更加簡(jiǎn)單的索引結(jié)構(gòu),通過對(duì)某一大小的數(shù)據(jù)單元生成摘要的方式,實(shí)現(xiàn)對(duì)數(shù)據(jù)條件的過濾,即從為數(shù)據(jù)精準(zhǔn)定位的索引機(jī)制過渡到數(shù)據(jù)過濾機(jī)制,從基于元組的細(xì)粒度的索引過渡成為基于數(shù)據(jù)塊的粗粒度索引機(jī)制。

        (5)充分考慮關(guān)系計(jì)算的各個(gè)特征,例如Select (Where)、Join、Group By、Order By、Distinct、窗口函數(shù)、Insert Into等,最大限度實(shí)現(xiàn)在分布式架構(gòu)下對(duì)這些操作符的并行處理能力,并同時(shí)減少節(jié)點(diǎn)之間的網(wǎng)絡(luò)流量。

        (6)對(duì)于大數(shù)據(jù)平臺(tái),更新操作,系統(tǒng)內(nèi)部實(shí)際通過Appendonly+有效標(biāo)記位的位置實(shí)現(xiàn),同時(shí)通過有效標(biāo)記控制數(shù)據(jù)提交和讀取結(jié)果(系統(tǒng)內(nèi)部可以通過保存多個(gè)版本的有效標(biāo)記位數(shù)組來實(shí)現(xiàn)事務(wù)隔離),這樣可以簡(jiǎn)化大數(shù)據(jù)處理下的事務(wù)控制。而數(shù)據(jù)的恢復(fù),因?yàn)橄到y(tǒng)為了保證更新寫的性能,所以無法按照傳統(tǒng)數(shù)據(jù)庫的WAL機(jī)制實(shí)現(xiàn)細(xì)粒度日志,而是通過副本作為數(shù)據(jù)標(biāo)準(zhǔn),實(shí)現(xiàn)故障恢復(fù)。這些機(jī)制既能保證大數(shù)據(jù)量下的數(shù)據(jù)寫的正確性,也能實(shí)現(xiàn)處理效率的提升。

        3 傳統(tǒng)關(guān)系數(shù)據(jù)庫的分布式化設(shè)計(jì)中的課題

        對(duì)于任何技術(shù)革新,在引入新技術(shù)設(shè)計(jì)概念的同時(shí),都是有代價(jià)的——必然同時(shí)引入另一些的問題,對(duì)于MPP分布式關(guān)系型數(shù)據(jù),則可以列舉以下問題:

        (1)當(dāng)一個(gè)關(guān)系數(shù)據(jù)庫集群規(guī)模擴(kuò)大時(shí),對(duì)于一個(gè)大規(guī)模集群控制所需的集群協(xié)議,協(xié)議執(zhí)行的通信代價(jià)將以節(jié)點(diǎn)數(shù)的平方規(guī)模擴(kuò)大,通信模式的復(fù)雜性將導(dǎo)致集群崩潰的可能性增大。

        (2)對(duì)于關(guān)系計(jì)算,即使通過MPP+SharedNothing結(jié)構(gòu)實(shí)現(xiàn)了數(shù)據(jù)的物理分離和在分布式存儲(chǔ)上的規(guī)則擺放,但很大程度上還是需要將數(shù)據(jù)層面當(dāng)作一個(gè)整體看待,尤其對(duì)于多表Join處理,這就需要一個(gè)在分布式上透明實(shí)現(xiàn)相關(guān)能力的全局機(jī)制。

        (3)數(shù)據(jù)劃分是按照Hash Sharding的分片方式實(shí)現(xiàn),所以數(shù)據(jù)分布與節(jié)點(diǎn)個(gè)數(shù)存在緊耦合性,數(shù)據(jù)節(jié)點(diǎn)一旦出現(xiàn)變化,需要有Hash重新計(jì)算的過程,所以擴(kuò)容實(shí)施代價(jià)高。

        (4)同樣基于以上類似的原因,當(dāng)一個(gè)Hash Sharding下的數(shù)據(jù)分片是一個(gè)按照某種規(guī)則連續(xù)擺放在一起的數(shù)據(jù)文件時(shí),它的副本也必然是一個(gè)較大片連續(xù)的數(shù)據(jù)單元,這種單元比起單純物理上的文件塊要大很多,所以這就決定了副本分布的集中性,由此導(dǎo)致1臺(tái)服務(wù)器宕機(jī)后,存有和它同樣分片數(shù)據(jù)的服務(wù)器上要增加處理包括副分片在內(nèi)的活動(dòng)數(shù)據(jù),從而使副分片上數(shù)據(jù)處理能力迅速降低從而導(dǎo)致“木桶效應(yīng)”,進(jìn)而引起集群整體的性能下降。這一點(diǎn)對(duì)于會(huì)頻繁發(fā)生故障的PCServer服務(wù)器所組成的大規(guī)模MPP集群尤其重要,因?yàn)镻CServer服務(wù)器的故障率比小機(jī)類型要高出近10倍以上,并且隨著集群規(guī)模的增加,在整個(gè)集群中1臺(tái)PCServer發(fā)生故障的概率會(huì)明顯增加,而MPP集群的高可用結(jié)構(gòu)造成1臺(tái)PCServer宕機(jī)就會(huì)引起全MPP集群能力的下降。

        (5)數(shù)據(jù)在按照列式組織存儲(chǔ)時(shí),導(dǎo)致實(shí)現(xiàn)表一級(jí)的鎖操作,從而導(dǎo)致鎖粒度的升高,造成并發(fā)能力的下降等。

        4 GBase8 a MPP作為一種新型關(guān)系數(shù)據(jù)庫的技術(shù)設(shè)計(jì)思路

        GBase8aMPP作為一種典型的NewSQL型的新型關(guān)系數(shù)據(jù)庫產(chǎn)品,是天津南大通用數(shù)據(jù)技術(shù)股份有限公司(簡(jiǎn)稱“南大通用”)完全自主開發(fā)的一套國產(chǎn)化支撐結(jié)構(gòu)化大數(shù)據(jù)處理的MPP型關(guān)系數(shù)據(jù)庫,它于2007年開始了產(chǎn)品開發(fā)立項(xiàng);2010年正式發(fā)布第一代單機(jī)型列式存儲(chǔ)數(shù)據(jù)庫;2011年發(fā)布了MPP集群版數(shù)據(jù)庫;2012年參加了中國移動(dòng)集團(tuán)VGOP投標(biāo)的大規(guī)模集群測(cè)試;于2013年之后,開始了GBase8a MPP在電信、金融等核心行業(yè)領(lǐng)域的國產(chǎn)MPP數(shù)據(jù)庫的實(shí)際應(yīng)用;截至2016年1月,已經(jīng)在全國70家行業(yè)中有過實(shí)際應(yīng)用,共安裝部署節(jié)點(diǎn)超過1000臺(tái),實(shí)際承載數(shù)據(jù)量達(dá)到5PB級(jí)別,對(duì)于50節(jié)點(diǎn)以上節(jié)點(diǎn)數(shù)的超大規(guī)模MPP集群,GBase8aMPP幾乎覆蓋了超大規(guī)模MPP集群部署和使用的主要案例。下面就GBase8aMPP集群的主要技術(shù)設(shè)計(jì)思路進(jìn)行說明和介紹。

        4.1GBase8aMPP的整體架構(gòu)設(shè)計(jì)和構(gòu)成元素

        GBase8a MPP集群由GCluster、GNode和GCware 的3個(gè)處理要素構(gòu)成,這3個(gè)要素構(gòu)成了MPP集群的任務(wù)調(diào)度、實(shí)際數(shù)據(jù)的存儲(chǔ)和任務(wù)執(zhí)行以及集群控制的3項(xiàng)基本要素,作為一個(gè)比喻,它們分別相當(dāng)于MPP集群的“頭”、“腳”和“神經(jīng)”,具體參見圖1。下面是3個(gè)構(gòu)成要素的具體功能:

        圖1 GBase 8a MPP功能架構(gòu)圖

        (1)GCluster集群

        從GCware獲得節(jié)點(diǎn)的拓?fù)浜凸?jié)點(diǎn)數(shù)據(jù)分片的狀態(tài),使用GCware提供的信息(包括集群結(jié)構(gòu)、節(jié)點(diǎn)狀態(tài)、Eventlog等),并負(fù)責(zé)SQL解析、SQL優(yōu)化、分布式執(zhí)行計(jì)劃生成、執(zhí)行調(diào)度。

        (2)GCware集群

        通過集群各節(jié)點(diǎn)之間的廣播通信協(xié)議,維持各節(jié)點(diǎn)間共享集群狀態(tài)信息(包括集群結(jié)構(gòu)、節(jié)點(diǎn)狀態(tài)、節(jié)點(diǎn)資源:包含Scn、Tableid、集群鎖、Eventlog信息等),以及控制故障時(shí)的任務(wù)切換和故障恢復(fù)時(shí)的數(shù)據(jù)修復(fù),并在多副本操作中控制各節(jié)點(diǎn)數(shù)據(jù)的一致性狀態(tài)。

        (3)GNode集群

        集群中最基本的存儲(chǔ)和計(jì)算單元。GNode負(fù)責(zé)集群數(shù)據(jù)在節(jié)點(diǎn)上的實(shí)際存儲(chǔ),并從GCluster接收和執(zhí)行GCluster產(chǎn)生的執(zhí)行計(jì)劃,執(zhí)行結(jié)果返回給GCluster。數(shù)據(jù)加載時(shí),GNode直接從集群加載服務(wù)接收數(shù)據(jù),寫入本地存儲(chǔ)空間。

        4.2GBase8aMPP的海量數(shù)據(jù)的存儲(chǔ)設(shè)計(jì)

        對(duì)于承載大規(guī)模海量數(shù)據(jù)的GBase8a MPP平臺(tái),首先要解決海量數(shù)據(jù)在平臺(tái)上有效的存儲(chǔ)和管理,其中對(duì)于關(guān)系數(shù)據(jù)庫,一個(gè)重要的需要解決的問題就是數(shù)據(jù)定位,以及簡(jiǎn)化存儲(chǔ)路徑的問題。

        首先,GBase8a MPP在集群層次會(huì)依照在建表時(shí)指定的Hash規(guī)則,對(duì)數(shù)據(jù)進(jìn)行在節(jié)點(diǎn)之間的精確擺放,數(shù)據(jù)的擺放原則,可以簡(jiǎn)單理解為通過2層的映射,對(duì)數(shù)據(jù)確定準(zhǔn)確的擺放節(jié)點(diǎn)。

        設(shè)一個(gè)記錄的哈希鍵值為Hashkey,對(duì)應(yīng)這條記錄的Hashvalue = Hash_func(Hashkey),繼而對(duì)應(yīng)這條Hash Value的擺放節(jié)點(diǎn)為:HashNode = HashMap (Hashvalue)。

        對(duì)于同一節(jié)點(diǎn)內(nèi)部的數(shù)據(jù)定位,GBase8a MPP采取了數(shù)據(jù)列式存儲(chǔ)和智能索引技術(shù)。列式存儲(chǔ)下,各個(gè)列上的數(shù)據(jù)是按照列式文件的格式進(jìn)行存儲(chǔ)的,也就是說數(shù)據(jù)列一旦確定,數(shù)據(jù)文件就可以確定,從某種意義上說,這就像行式存儲(chǔ)下的分區(qū)存儲(chǔ),通過對(duì)邏輯上同一張表的數(shù)據(jù)在物理存儲(chǔ)上的分解,可以進(jìn)一步確定一個(gè)數(shù)據(jù)的存儲(chǔ)區(qū)域。數(shù)據(jù)在按照列式存儲(chǔ)時(shí),又以65536行作為一個(gè)I/O單位(GBase8a將這個(gè)單位叫做一個(gè)DataCell,即一個(gè)數(shù)據(jù)塊)對(duì)其進(jìn)行壓縮和智能索引的編制工作。智能索引可以起到很好的數(shù)據(jù)過濾作用,并且它具有很好的空間和時(shí)間效率。這里將1 個(gè)DataCell數(shù)據(jù)塊中的數(shù)據(jù)作為1個(gè)集合,而智能索引使用一些標(biāo)志性的摘要信息來表征一個(gè)數(shù)據(jù)塊中所包含數(shù)據(jù)的特征集合。實(shí)際數(shù)據(jù)讀取時(shí),不需要直接掃描數(shù)據(jù)本身,而只需要查看智能索引中的特征集合,就可以判斷要查詢的數(shù)據(jù)是否在這個(gè)數(shù)據(jù)塊中存在,而特征集合的數(shù)據(jù)要大大小于存儲(chǔ)數(shù)據(jù)本身的數(shù)據(jù)量,并且這個(gè)特征集合生成的代價(jià)不會(huì)因?yàn)楸韮?nèi)整體數(shù)據(jù)量的增加而不斷增大,即它是線形的,這與基于傳統(tǒng)關(guān)系庫的索引結(jié)構(gòu)有本質(zhì)不同,傳統(tǒng)數(shù)據(jù)庫的索引是與表整體的全局?jǐn)?shù)據(jù)相關(guān)聯(lián)的,表的數(shù)據(jù)量越大,傳統(tǒng)關(guān)系庫的索引生成代價(jià)就越大。作為這個(gè)智能索引中包含的數(shù)據(jù)特征,在GBase8a中包含這樣幾個(gè)基本信息,數(shù)據(jù)的MaxValue,MinValue或者使用Hash函數(shù)構(gòu)成的位數(shù)組等,但數(shù)據(jù)可能會(huì)產(chǎn)生誤判(即數(shù)據(jù)實(shí)際不在該數(shù)據(jù)塊中,但智能索引中的特征集合又表明數(shù)據(jù)可能存在于該數(shù)據(jù)塊中),為了減少誤判,就需要數(shù)據(jù)在入庫時(shí)盡量達(dá)到一定的有序性(即使是局部有序性,也可以達(dá)到減少誤判的效果)。

        讀取數(shù)據(jù)時(shí)為了減少數(shù)據(jù)I/O吞吐,GBase8a利用列式存儲(chǔ)下數(shù)據(jù)的相似性,實(shí)現(xiàn)了3~30倍的數(shù)據(jù)高壓縮比(具體數(shù)據(jù)壓縮比還依存于數(shù)據(jù)自身的特征和所選擇的數(shù)據(jù)壓縮算法)。

        對(duì)于不同的數(shù)據(jù)類型,GBase8a提供不同的壓縮算法。

        (1)對(duì)數(shù)值類型的壓縮算法

        ●輕量級(jí)壓縮。

        ●PPM壓縮(壓縮速度快、解壓速度慢)。

        ●RAPIDZ壓縮,適用于對(duì)性能要求較高的用戶場(chǎng)合。

        (2)對(duì)字符類型的壓縮算法

        ●輕量級(jí)壓縮。

        ●PPM壓縮(壓縮速度快、解壓速度慢)。

        ●RAPIDZ壓縮,適用于對(duì)性能要求較高的業(yè)務(wù)場(chǎng)景。

        在實(shí)際應(yīng)用中,這些算法可以根據(jù)實(shí)際需要,去適應(yīng)性地適配不同種類數(shù)據(jù)的壓縮,例如對(duì)大規(guī)模海量數(shù)據(jù)的存儲(chǔ),可以根據(jù)歷史周期,對(duì)近期數(shù)據(jù)的存儲(chǔ)采用較輕量級(jí)壓縮算法;而對(duì)于沉淀較長(zhǎng)的歷史數(shù)據(jù),由于實(shí)際參與處理的機(jī)會(huì)較少,可以使用PPM算法對(duì)其壓縮,這樣會(huì)在提供高壓縮率的同時(shí),會(huì)部分犧牲解壓處理時(shí)的性能等。

        4.3GBase8aMPP集群的可擴(kuò)展性設(shè)計(jì)

        GBase8aMPP從設(shè)計(jì)之初,就充分考慮了作為集群數(shù)據(jù)庫的可擴(kuò)展性。隨著行業(yè)大數(shù)據(jù)的飛速發(fā)展,單一集群的數(shù)據(jù)承載量正在從十TB級(jí),到百TB級(jí),再到PB級(jí),所以早期的十?dāng)?shù)節(jié)點(diǎn)集群,和現(xiàn)在的數(shù)十節(jié)點(diǎn)集群很快就將無法滿足作為大數(shù)據(jù)處理平臺(tái)的MPP集群的規(guī)模需求,對(duì)于GBase8aMPP集群能否支撐上百節(jié)點(diǎn)乃至數(shù)百節(jié)點(diǎn)的MPP集群規(guī)模就成為設(shè)計(jì)關(guān)鍵。GBase8aMPP在設(shè)計(jì)上,從集群協(xié)議棧設(shè)計(jì),和數(shù)據(jù)在節(jié)點(diǎn)之間的組織和重分部算法的兩個(gè)層面作了優(yōu)化設(shè)計(jì),使MPP集群解決了大規(guī)模節(jié)點(diǎn)支持的問題。

        在架構(gòu)設(shè)計(jì)上,GBase 8a MPP采用了Shared Nothing的聯(lián)邦分布式架構(gòu),由GCluster集群、GCware集群(實(shí)際上GCluster和GCware集群往往部署在1個(gè)物理集群上)和GNode集群組成。GCluster集群和GCware集群部署在相同的物理節(jié)點(diǎn)上,每個(gè)物理節(jié)點(diǎn)上部署GCluster服務(wù)和GCware服務(wù),GCluster服務(wù)負(fù)責(zé)集群任務(wù)的調(diào)度,GCware服務(wù)用于各節(jié)點(diǎn)GCluster服務(wù)間共享信息。GNode集群的物理節(jié)點(diǎn)上部署GNode服務(wù),每個(gè)GNode服務(wù)就是最基本的存儲(chǔ)和計(jì)算單元。

        在聯(lián)邦架構(gòu)的集群內(nèi)部,無論是處理協(xié)調(diào)調(diào)度的GCluster層,還是實(shí)際進(jìn)行數(shù)據(jù)存取處理的GNode層,都構(gòu)成了各自處理層的集群結(jié)構(gòu),從而解決了集群的單點(diǎn)瓶頸或者單點(diǎn)故障問題。而對(duì)于集群內(nèi)部的數(shù)據(jù)元數(shù)據(jù)和集群結(jié)構(gòu)元數(shù)據(jù)的一致性范圍,在聯(lián)邦架構(gòu)下,僅僅局限在了上層的主節(jié)點(diǎn)集群上(GCluster集群),這樣達(dá)成元數(shù)據(jù)一致性所需要的節(jié)點(diǎn)之間的廣播也將被約束到小范圍節(jié)點(diǎn)內(nèi),從而防止了因節(jié)點(diǎn)數(shù)增加而導(dǎo)致的節(jié)點(diǎn)間廣播量的膨脹,對(duì)于更大規(guī)模的處理工作集群(GNode集群),因?yàn)楣?jié)點(diǎn)之間不需要達(dá)成共享元數(shù)據(jù)一致性,所以這一層集群的節(jié)點(diǎn)之間不存在復(fù)雜的廣播通信機(jī)制(節(jié)點(diǎn)之間除了副本數(shù)據(jù)同步,以及在執(zhí)行Join或者Aggregation運(yùn)算時(shí)的節(jié)點(diǎn)之間拉表處理等外,節(jié)點(diǎn)之間不存在P2P的通信)。作為GNode集群狀態(tài)的維護(hù),主要通過上層集群(GCluster)節(jié)點(diǎn)與下層集群(GNode)節(jié)點(diǎn)之間的Heartbeat簡(jiǎn)易通信機(jī)制來實(shí)現(xiàn)(簡(jiǎn)易的HB機(jī)制是有別于集群層面的協(xié)議的,HB機(jī)制主要用于兩點(diǎn)之間的死活確認(rèn),而不需要在集群中的多個(gè)節(jié)點(diǎn)間具備達(dá)成狀態(tài)一致性的通信算法)。這樣聯(lián)邦架構(gòu)下的可擴(kuò)展性因素中,就突破了集群協(xié)議的規(guī)模限制,考慮GCluster節(jié)點(diǎn)上最大Socket張開數(shù)等物理限制條件和并發(fā)處理數(shù)等,最大合理的集群數(shù)可以達(dá)到300節(jié)點(diǎn)程度。

        集群的可擴(kuò)展性,還依存于數(shù)據(jù)在節(jié)點(diǎn)之間重分布的復(fù)雜度,對(duì)于MPP集群,當(dāng)它在集群計(jì)算Join結(jié)果還是擴(kuò)容時(shí)算出搬運(yùn)結(jié)果集時(shí),它都需要對(duì)各個(gè)紀(jì)錄進(jìn)行HashValue的重計(jì)算,而這種重分布計(jì)算會(huì)嚴(yán)重影響數(shù)據(jù)搬運(yùn)的速度,例如對(duì)于實(shí)際擴(kuò)容處理來說,當(dāng)考慮實(shí)際的HashValue重計(jì)算等因素,真正的數(shù)據(jù)在節(jié)點(diǎn)之間的搬運(yùn)速度只有60MBytes/s左右,而理想的I/O的落地速度可以達(dá)到200MBytes/s,也就是說為了維持MPP集群內(nèi)節(jié)點(diǎn)之間數(shù)據(jù)分布的Hash規(guī)則性,數(shù)據(jù)的搬運(yùn)效率下降了近70%,這個(gè)也是MPP比較NoSQL或者Hadoop等非結(jié)構(gòu)化的分布式平臺(tái)在擴(kuò)展性上的天然不利因素。為了解決這一問題(其實(shí)這一問題和后來的高可用專題也有相關(guān)),即將每個(gè)MPP物理節(jié)點(diǎn)下的分片再進(jìn)行細(xì)分,在數(shù)據(jù)第一次入庫時(shí)就將Hashvalue類似的數(shù)據(jù)列分布在同一列簇文件上,這個(gè)列簇文件的粒度越細(xì),在進(jìn)行數(shù)據(jù)重分布時(shí),就越能減少Hashvalue重計(jì)算的壓力,甚至在一些情況下(如擴(kuò)容時(shí),當(dāng)擴(kuò)容后集群規(guī)模恰好是擴(kuò)容前2倍時(shí)),可以將這些細(xì)粒度的分片列簇文件直接整片地傳輸?shù)叫碌墓?jié)點(diǎn)上,這樣擴(kuò)容時(shí)數(shù)據(jù)搬運(yùn)速度就會(huì)接近理想的磁盤I/O速度,此擴(kuò)容方式參見圖2。

        4.4GBase8aMPP內(nèi)部復(fù)雜關(guān)系計(jì)算的實(shí)現(xiàn)設(shè)計(jì)

        GBase8a MPP執(zhí)行復(fù)雜查詢以及生成執(zhí)行計(jì)劃時(shí),要遵循以下幾個(gè)基本目標(biāo):

        (1)最大程度地進(jìn)行并行化。(2)最大化數(shù)據(jù)局部性,即計(jì)算離數(shù)據(jù)越近越好。(3)關(guān)聯(lián)(Join)運(yùn)算的兩個(gè)表的數(shù)據(jù),要符合“關(guān)聯(lián)臨近性”原則,實(shí)現(xiàn)在同一物理節(jié)點(diǎn)上進(jìn)行。

        在這里最終目標(biāo)是為了盡可能減少M(fèi)PP節(jié)點(diǎn)之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸。

        而對(duì)于MPP型的關(guān)系數(shù)據(jù)庫引擎,在生成執(zhí)行計(jì)劃邏輯樹時(shí),有一些基本的原則是與傳統(tǒng)關(guān)系數(shù)據(jù)庫相類似的,例如:

        (1)盡可能將一元運(yùn)算遷移到查詢樹的底部(樹葉部分),使之優(yōu)先執(zhí)行一元計(jì)算。

        (2)利用投影和選擇的串接定律,縮減每一關(guān)系,以減少中間結(jié)果集數(shù)據(jù)尺寸。

        (3)將葉子節(jié)點(diǎn)之前的選擇運(yùn)算作用于所涉及的表,以減少后期運(yùn)算的結(jié)果集。

        (4)在查詢樹中,將連接運(yùn)算下移到并運(yùn)算(Union All)之前執(zhí)行。

        (5)消去不影響查詢運(yùn)算的垂直片段。

        遵循以上規(guī)則得到邏輯層的執(zhí)行計(jì)劃,從計(jì)算邏輯上可以降低每個(gè)中間步驟的結(jié)果集,從而降低物理上的網(wǎng)絡(luò)傳輸量和I/O代價(jià)。

        而GBase8a MPP在從上述原則得到最佳邏輯樹后,需要進(jìn)一步將邏輯樹轉(zhuǎn)換成為物理執(zhí)行樹,這其中關(guān)鍵就是要利用MPP集群的跨節(jié)點(diǎn)的并行計(jì)算能力,而針對(duì)關(guān)系數(shù)據(jù)庫的各個(gè)操作符的特點(diǎn)(包括Scan、HashJoin、HashAggregation、Union、TopN等),對(duì)操作符節(jié)點(diǎn)樹進(jìn)行劃分,劃分為若干計(jì)劃分片,GBase8aMPP內(nèi)部的邏輯執(zhí)行計(jì)劃與物理執(zhí)行計(jì)劃之間關(guān)系如圖3所示。下面是最典型的關(guān)系操作符的并行化策略:

        (1)Join操作

        采用靜態(tài)Hash或者動(dòng)態(tài)Hash以及復(fù)制廣播方式,實(shí)現(xiàn)MPP集群下的數(shù)據(jù)并行關(guān)聯(lián)運(yùn)算。所謂靜態(tài)Hash,就是關(guān)聯(lián)表之間的HashKey重合,并且關(guān)聯(lián)鍵與Hash Key重合,此時(shí)MPP數(shù)據(jù)庫的GCluster只要將關(guān)聯(lián)操作直接下發(fā)到各個(gè)單節(jié)點(diǎn)上,從各個(gè)單節(jié)點(diǎn)返回的結(jié)果集的合并結(jié)果就是關(guān)聯(lián)運(yùn)算的結(jié)果集;而所謂動(dòng)態(tài)Hash,就是關(guān)聯(lián)表之間的Hash Key不重合時(shí),將對(duì)關(guān)聯(lián)鍵與Hash鍵不重合的表的數(shù)據(jù)按照關(guān)聯(lián)鍵進(jìn)行重分布,從而使Hash重分布后的兩個(gè)表的數(shù)據(jù)成為HashKey重合的狀態(tài)(就是類似靜態(tài)Hash的數(shù)據(jù)分布狀態(tài));而作為復(fù)制廣播方式,也是在HashKey與關(guān)聯(lián)鍵不重合的方式下的使用的又一種關(guān)聯(lián)執(zhí)行機(jī)制,這種方式下一般關(guān)聯(lián)的兩個(gè)表中一個(gè)表較小,即可以將這個(gè)小表通過廣播的方式向所有節(jié)點(diǎn)進(jìn)行動(dòng)態(tài)復(fù)制,這樣就可以保證在全節(jié)點(diǎn)上并行執(zhí)行關(guān)聯(lián)操作。

        圖2 基于分片文件搬運(yùn)的擴(kuò)容方式

        (2)聚合操作

        操作符節(jié)點(diǎn)首先在各個(gè)單節(jié)點(diǎn)上執(zhí)行局部聚合,之后做全部聚合操作。有時(shí)也根據(jù)Group by鍵的Distinct個(gè)數(shù),對(duì)于這個(gè)數(shù)字很大的Groupby鍵,則在聚合運(yùn)算的第二階段,按照Groupby鍵將第一階段的聚合結(jié)果再次進(jìn)行重分布,在第二階段以并行計(jì)算的方式繼續(xù)進(jìn)行全局聚合結(jié)果。

        (3)Orderby排序操作

        操作符節(jié)點(diǎn)首先執(zhí)行本地的Orderby操作,之后對(duì)局部排序后的信息進(jìn)行全局的Order by操作。GBase8aMPP對(duì)Orderby可以進(jìn)行局部排序與全局排序間的流水式并行。

        GBase8aMPP作為關(guān)系數(shù)據(jù)庫同樣采用基于成本(CB-Cost Based)的執(zhí)行計(jì)劃優(yōu)化器方式(CBO),主要基于數(shù)據(jù)動(dòng)態(tài)的統(tǒng)計(jì)特性,實(shí)現(xiàn)執(zhí)行成本的估算。這些統(tǒng)計(jì)信息一般包括表數(shù)據(jù)的行數(shù),生成中間關(guān)聯(lián)結(jié)果集的大小評(píng)估,各列的寬度,以及列的Distinct值等。GBase8a MPP的引擎會(huì)根據(jù)這些統(tǒng)計(jì)信息,在執(zhí)行一個(gè)復(fù)雜SQL時(shí),去估算一個(gè)查詢?nèi)蝿?wù)的代價(jià),并且生成多條執(zhí)行路徑以進(jìn)行執(zhí)行成本的比較,從其中選擇代價(jià)最小的執(zhí)行路徑執(zhí)行本次查詢?nèi)蝿?wù)。

        4.5GBase8aMPP的可用性設(shè)計(jì)

        圖3 MPP內(nèi)部高度并行的執(zhí)行計(jì)劃

        MPP數(shù)據(jù)庫為了實(shí)現(xiàn)最大的并行,采用了計(jì)算和存儲(chǔ)緊密耦合的設(shè)計(jì)策略,這樣可以有效控制每行數(shù)據(jù)的存儲(chǔ)位置和每個(gè)數(shù)據(jù)塊的存儲(chǔ)格式,在統(tǒng)計(jì)分析場(chǎng)景中性能表現(xiàn)優(yōu)越。

        具體說,MPP分片是按照數(shù)學(xué)規(guī)則(如Hash函數(shù))來分布的,所以數(shù)據(jù)的分片規(guī)則不能像Hadoop那樣按照數(shù)據(jù)塊(Block)這樣的小粒度單位任意實(shí)現(xiàn)(這種小粒度分片可以使1臺(tái)物理機(jī)上的數(shù)據(jù)分片的副本分散到多臺(tái)物理機(jī)上),這樣的數(shù)據(jù)集合單位無法實(shí)現(xiàn)更加細(xì)粒度的數(shù)據(jù)分離,而作為高可用的策略的數(shù)據(jù)副本的分布策略,也是依存上述的數(shù)據(jù)分片策略下的集合粒度。

        如果1臺(tái)物理服務(wù)器上只設(shè)置1個(gè)分片,就會(huì)使單個(gè)分片和對(duì)應(yīng)這個(gè)分片的副本的粒度過大,從而導(dǎo)致1臺(tái)服務(wù)器宕機(jī)后,持有副本的那一節(jié)點(diǎn)的負(fù)載成為故障切換前正常狀態(tài)的2倍。而對(duì)于MPP這樣的集群系統(tǒng),系統(tǒng)的處理能力將取決于集群中處理最慢的那一節(jié)點(diǎn),這種效應(yīng)就是木桶效應(yīng),因?yàn)楣收锨袚Q,導(dǎo)致Safegroup(是一種GBase8a MPP的高可用的舊機(jī)制)的另一節(jié)點(diǎn)的處理能力會(huì)下降一半,并根據(jù)上述的木桶效應(yīng),整個(gè)集群的處理也將會(huì)下降一半。

        為了解決上述問題,GBase8a MPP實(shí)現(xiàn)了基于虛擬分片的副本分布機(jī)制:即1個(gè)物理節(jié)點(diǎn)可以部署多個(gè)邏輯分片,并且每個(gè)邏輯分片的副本分片可以部署在不同物理機(jī)上,這樣一臺(tái)物理機(jī)宕機(jī)后,這臺(tái)物理機(jī)上邏輯分片的副本因?yàn)榉稚⒌蕉嗯_(tái)節(jié)點(diǎn)上,所以可以保證宕機(jī)服務(wù)器的負(fù)載不僅可以實(shí)現(xiàn)故障轉(zhuǎn)移,而且可以實(shí)現(xiàn)故障服務(wù)器上負(fù)載在故障轉(zhuǎn)移后的負(fù)載均衡,具體基于虛擬分片的高可用機(jī)制實(shí)現(xiàn)如圖4所示。

        圖4 GBase 8a PP的虛擬分片和副本技術(shù)

        4.6GBase8aMPP下的事務(wù)控制設(shè)計(jì)

        作為數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的最大區(qū)別,就是數(shù)據(jù)庫系統(tǒng)要支持基于DML操作的數(shù)據(jù)更新,并且作為關(guān)系數(shù)據(jù)庫的又一關(guān)鍵特性就是要保證數(shù)據(jù)的一致性和在任務(wù)并發(fā)時(shí)的讀寫數(shù)據(jù)之間的邏輯一致性。傳統(tǒng)數(shù)據(jù)庫提出WAL(預(yù)寫日志記錄,Writeahead Log)機(jī)制保證了這種數(shù)據(jù)的邏輯一致性,但它的代價(jià)很大,因?yàn)檫@種機(jī)制會(huì)在執(zhí)行任意更新時(shí)需要將更新永久化到磁盤的日志文件上。GBase8aMPP數(shù)據(jù)庫設(shè)計(jì)之初就是要考慮數(shù)百億,數(shù)千億行所組成的表的數(shù)據(jù)管理,所以它無法采用WAL式的做法,并且GBase8aMPP在內(nèi)部進(jìn)行任務(wù)數(shù)據(jù)寫處理時(shí),包括load加載處理,還是insert,update操作,最終都是通過對(duì)各個(gè)列式數(shù)據(jù)文件(多個(gè)分片時(shí),就被分割成為列簇文件)的Append處理實(shí)現(xiàn)的。與傳統(tǒng)數(shù)據(jù)庫不同,不可能對(duì)數(shù)據(jù)更新設(shè)置更大的Buffer區(qū)域,數(shù)據(jù)寫入磁盤的操作基本是按照之前說的數(shù)據(jù)塊(DataCell)單位進(jìn)行的(也可以設(shè)置DC的Windows Size,這樣就可以按照Windows Size個(gè)數(shù)個(gè)DC進(jìn)行批量寫入操作),數(shù)據(jù)更新基本就是按照寫滿1個(gè)DC之后(或是1個(gè)DC窗口),就永久化到磁盤的方式進(jìn)行更新的。而一個(gè)MPP下的事務(wù)單位很大,有可能是成千上萬個(gè)DC,所以MPP為了標(biāo)記已經(jīng)一時(shí)寫入到磁盤上的DC的有效性,就設(shè)置了1個(gè)Valid_flag數(shù)據(jù)有效性標(biāo)志,當(dāng)途中不斷將數(shù)據(jù)寫入到磁盤時(shí),數(shù)據(jù)的有效標(biāo)志設(shè)置為“0”,這說明這個(gè)數(shù)據(jù)塊的數(shù)據(jù)暫時(shí)無效,如果同時(shí)發(fā)生讀操作時(shí),這樣的數(shù)據(jù)是不會(huì)被讀到的。但當(dāng)任務(wù)完成,數(shù)據(jù)集體提交時(shí),各個(gè)數(shù)據(jù)上的Valid_flag會(huì)批量更新成“1”,從而使數(shù)據(jù)對(duì)其他任務(wù)也生效,可以讓其他任務(wù)開始讀取到這里提交的數(shù)據(jù)。對(duì)于Update這樣的操作,在將更新后的數(shù)據(jù)完成Append處理后,它還要進(jìn)而對(duì)更新前數(shù)據(jù)進(jìn)行Valid_flag=“0”的重置操作,最終才能進(jìn)行提交操作(對(duì)更新后數(shù)據(jù)對(duì)應(yīng)的Valid_flag置為“1”)。當(dāng)然在整個(gè)過程中,如有出現(xiàn)系統(tǒng)故障,系統(tǒng)會(huì)保持更新操作前的Valid_flag狀態(tài),從而保證數(shù)據(jù)更新到中途的內(nèi)容不會(huì)被其他任務(wù)看到。GBase8aMPP內(nèi)部的有效符機(jī)制如圖5所示。

        圖5 GBase 8a MPP內(nèi)部的有效標(biāo)識(shí)符

        而對(duì)于Valid_flag自身的更新操作,考慮其數(shù)據(jù)量較小,可以使用類似WAL預(yù)寫日志的方式,保證Valid_flag提交時(shí)的事務(wù)性。對(duì)于事務(wù)自身參照自身產(chǎn)生的數(shù)據(jù)時(shí),則采用對(duì)Valid_flag的多版本管理(MVCCforValid_flag)機(jī)制實(shí)現(xiàn)對(duì)自身更新中數(shù)據(jù)的最新參照。

        對(duì)于1個(gè)MPP集群系統(tǒng)來說,還必須考慮主分片與副分片之間的數(shù)據(jù)一致性,主副分片的一致性機(jī)制一般可以通過經(jīng)典的預(yù)備提交(也稱兩階段提交)來實(shí)現(xiàn),GBase8aMPP可以通過兩種方式實(shí)現(xiàn):

        (1)一種方式是在兩個(gè)分片上同時(shí)處理DML等關(guān)系數(shù)據(jù)庫操作,當(dāng)主分片需要提交時(shí)(即按照上述的Valid_flag置位方式實(shí)現(xiàn)),會(huì)向副分片發(fā)出提交請(qǐng)求,如果副分片已經(jīng)處理完本次任務(wù),它會(huì)直接返回主分片一個(gè)ACK+消息,如果副分片還沒有完成本次任務(wù),它會(huì)返回主分片一個(gè)ACK-消息,表明還需要等待(GBase8a MPP可以設(shè)置等待超時(shí)),當(dāng)主分片接到從副分片發(fā)來的ACK+消息時(shí),它會(huì)指示副分片一塊提交更新完的數(shù)據(jù)。

        (2)作為另一種方式,是先更新主分片上數(shù)據(jù),再由主分片將數(shù)據(jù)轉(zhuǎn)發(fā)到副分片上,這個(gè)數(shù)據(jù)轉(zhuǎn)發(fā)機(jī)制可以保證更新數(shù)據(jù)按照增分傳輸?shù)姆绞剑瑴?zhǔn)確傳輸?shù)礁狈制?,而?dāng)主分片完成數(shù)據(jù)更新后,它會(huì)按照與上面第一種DML提交同樣的方式,提交本次更新。GBase 8a MPP內(nèi)部的副本生成機(jī)制如圖6所示。

        實(shí)際MPP集群對(duì)副本的一致性進(jìn)行了一定的緩和,即當(dāng)主副分片中有任意一個(gè)分片無法工作的時(shí)刻,集群可以允許主副分片之間的數(shù)據(jù)非一致性,并允許集群整體的事務(wù)可以強(qiáng)制提交,這時(shí)集群的GCware會(huì)在健康的分片上保留1個(gè)Eventlog事件日志,記錄故障分片上丟失的那個(gè)操作(這個(gè)操作可能是一個(gè)DML數(shù)據(jù)更新操作,也可能是一個(gè)DDL操作),而此后當(dāng)故障節(jié)點(diǎn)上的那個(gè)分片恢復(fù)正常的時(shí)候,GCware會(huì)從Eventlog的事件日志中探測(cè)出需要恢復(fù)的操作,進(jìn)而調(diào)用相關(guān)進(jìn)程完成故障節(jié)點(diǎn)分片向健康分片上數(shù)據(jù)的數(shù)據(jù)追平,從而完成故障后數(shù)據(jù)恢復(fù)。

        此外,對(duì)于GBase8aMPP集群,為了完成并發(fā)下的事務(wù)正確的執(zhí)行能力,采用了適合于MPP和列式存儲(chǔ)的并發(fā)控制策略。作為GBase8aMPP采用的最簡(jiǎn)單的并發(fā)控制方式,是采用表級(jí)鎖機(jī)制,之后采用對(duì)DCWindowssize內(nèi)的連續(xù)數(shù)據(jù)塊的DC鎖機(jī)制從而減少鎖粒度,這種機(jī)制實(shí)際上就是在內(nèi)存區(qū)域上設(shè)置了針對(duì)各個(gè)事務(wù)的獨(dú)立的數(shù)據(jù)更新區(qū)域,既提高了寫操作的速度,也同時(shí)提高并發(fā)的處理能力。隨著GBase 8aMPP的分片文件自身的細(xì)化,數(shù)據(jù)分片將變得更小,將數(shù)據(jù)從內(nèi)存中的DC寫入到分片文件時(shí),由于分片文件存在多個(gè),1個(gè)Hash段內(nèi)的DC數(shù)據(jù)在向?qū)?yīng)分片數(shù)據(jù)寫入數(shù)據(jù)時(shí),如果遇到文件被鎖住的情況,它還可以將另一Hash段內(nèi)的DC數(shù)據(jù)寫入其他分片文件上,這樣就減少了因鎖而導(dǎo)致的數(shù)據(jù)寫性能的下降。

        圖6 GBase 8a MPP內(nèi)部的副本生成機(jī)制

        5 GBase8 aMPP數(shù)據(jù)庫的應(yīng)用實(shí)踐

        GBase8a MPP作為一種分布式的列式關(guān)系數(shù)據(jù)庫,已經(jīng)應(yīng)用到了電信和金融等核心行業(yè),從實(shí)際項(xiàng)目中我們總結(jié)了大量項(xiàng)目經(jīng)驗(yàn),這些經(jīng)驗(yàn)對(duì)于充分發(fā)揮MPP數(shù)據(jù)庫的能力是十分有益的。

        5.1基于MPP+Hadoop的混搭技術(shù)

        MPP作為一種基于分布式列式關(guān)系數(shù)據(jù)庫,能夠支撐在海量結(jié)構(gòu)化數(shù)據(jù)基礎(chǔ)之上的關(guān)系運(yùn)算,但作為非結(jié)構(gòu)化數(shù)據(jù)的處理和關(guān)系型運(yùn)算以外的算法,MPP并不擅長(zhǎng),而作為實(shí)際的大數(shù)據(jù)應(yīng)用,則發(fā)現(xiàn)大數(shù)據(jù)的4V特性經(jīng)常會(huì)同時(shí)成為需求特征,這就需要構(gòu)建一個(gè)綜合的大數(shù)據(jù)平臺(tái),而從實(shí)際工程中,總結(jié)了MPP+ Hadoop的混搭結(jié)構(gòu)能夠有效解決此類問題。作為一個(gè)最典型的場(chǎng)景,Hadoop作為MPP的前端ETL平臺(tái),可以對(duì)非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行結(jié)構(gòu)化轉(zhuǎn)換和低層匯總,或者是從圖像等完全非結(jié)構(gòu)化數(shù)據(jù)中提取特征量等,之后將提煉的結(jié)構(gòu)化數(shù)據(jù)結(jié)果集載入MPP,利用MPP庫內(nèi)強(qiáng)大的數(shù)據(jù)表的關(guān)聯(lián)能力,將Hadoop平臺(tái)的生成數(shù)據(jù)與載入MPP的從其他業(yè)務(wù)系統(tǒng)數(shù)據(jù)源載入的數(shù)據(jù)進(jìn)行關(guān)聯(lián)融合,從而得到傳統(tǒng)數(shù)據(jù)倉庫下無法實(shí)現(xiàn)的深度分析能力。對(duì)于一個(gè)電信運(yùn)營(yíng)商的大數(shù)據(jù)系統(tǒng),就經(jīng)常使用這一模式構(gòu)建大數(shù)據(jù)平臺(tái),使用Hadoop對(duì)信令和位置信息進(jìn)行結(jié)構(gòu)化轉(zhuǎn)換和低層匯總。另外,從BOSS、CRM等業(yè)務(wù)系統(tǒng)整合而來的業(yè)務(wù)結(jié)構(gòu)化數(shù)據(jù)同Hadoop加工后的數(shù)據(jù)結(jié)果一并放入GBase 8a MPP,在GBase8aMPP庫內(nèi)綜合客戶資料和用為行為軌跡以及上網(wǎng)行為等的全用戶圖像信息(這些信息可以適用于精準(zhǔn)營(yíng)銷場(chǎng)景中)。

        5.2Hashkey的合理選擇

        合理設(shè)置數(shù)據(jù)表的Hash Key對(duì)于提高M(jìn)PP的計(jì)算并行度以及減少節(jié)點(diǎn)之間的數(shù)據(jù)傳輸至關(guān)重要,所以HashKey的選擇在GBase8aMPP工程實(shí)施過程中,是作為數(shù)據(jù)模型設(shè)計(jì)階段最重要的工作被認(rèn)知,根據(jù)眾多工程經(jīng)驗(yàn),總結(jié)以下因素是在建立HashKey時(shí)最重要的考慮因素。

        ●盡量選擇Count(Distinct)值大的列做Hash分布列,讓數(shù)據(jù)均勻分布,避免數(shù)據(jù)傾斜產(chǎn)生木桶效應(yīng)。

        ●優(yōu)先考慮大表間的Join,盡量讓大表Join條件的列為Hash分布列(相關(guān)子查詢的相關(guān)Join也可以參考此原則),以使得大表間的Join可以直接分布式執(zhí)行。

        ●其次考慮Groupby,盡量讓Groupby帶有Hash分布列,讓分組聚合一步完成。

        ●通常是等值查詢的列,并且使用的頻率很高的應(yīng)考慮建立為Hash分布列。

        5.3列式存儲(chǔ)下寬表的使用

        列存以列為單位組織底層文件存儲(chǔ),在Select投影列一定的情況下,表寬對(duì)查詢性能沒有影響,并且考慮數(shù)據(jù)壓縮等優(yōu)勢(shì),利用寬表設(shè)計(jì)可在無任何負(fù)面影響的前提下,提升關(guān)系計(jì)算結(jié)果集生成時(shí)的效率。工程項(xiàng)目現(xiàn)場(chǎng)總結(jié)的經(jīng)驗(yàn):對(duì)于需要大表關(guān)聯(lián)生成查詢結(jié)果的一些場(chǎng)景(多個(gè)大表關(guān)聯(lián)并有一些過濾條件),在數(shù)據(jù)膨脹率可接受的情況下可以將大表關(guān)聯(lián)提前進(jìn)行預(yù)處理,并將預(yù)處理結(jié)果保存為一張寬表,將原來的基于大表多表關(guān)聯(lián)的查詢轉(zhuǎn)化為基于預(yù)處理結(jié)果表的單表查詢,可以有效提升這類SQL查詢的執(zhí)行效率,同時(shí)提高此類查詢的并發(fā)能力。

        5.4合理利用壓縮算法

        壓縮在節(jié)省存儲(chǔ)空間的同時(shí),可減少I/O吞吐,從而提升性能。但考慮解壓等因素等,壓縮在某種場(chǎng)景下,如果使用不合理,可能會(huì)導(dǎo)致性能的“不生而降”。

        對(duì)于GBase8aMPP的實(shí)際應(yīng)用場(chǎng)景,總結(jié)了以下經(jīng)驗(yàn):

        ●如果對(duì)存儲(chǔ)空間要求高,對(duì)性能不太要求時(shí),建議使用高壓縮比壓縮算法。

        ●如果對(duì)存儲(chǔ)空間要求不高,對(duì)性能要求高時(shí),建議使用一般壓縮比壓縮算法。

        5.5提高數(shù)據(jù)質(zhì)量以提高處理效率

        GBase8aMPP處理的效率直接依存于入庫時(shí)的數(shù)據(jù)質(zhì)量,數(shù)據(jù)質(zhì)量的惡劣可能導(dǎo)致數(shù)據(jù)Hash分布的無效性或者智能索引的無效性。下面是針對(duì)GBase8a MPP在實(shí)際項(xiàng)目中運(yùn)用時(shí),總結(jié)的一些和數(shù)據(jù)質(zhì)量控制相關(guān)的最佳經(jīng)驗(yàn)。

        ●數(shù)值類型的處理性能比字符串要好,建議選擇數(shù)值類型。

        ●對(duì)于表間關(guān)聯(lián)常用的字段,各表應(yīng)該設(shè)計(jì)成同樣的字段類型。

        ●在表關(guān)聯(lián)運(yùn)算中,如果對(duì)各表的Hash分布列加Rtrim、ltrim函數(shù)會(huì)改變Hash Join的執(zhí)行計(jì)劃,必須去掉。為回避此類情形,必須保證加載入庫前的數(shù)據(jù)文件內(nèi)的數(shù)據(jù)質(zhì)量,以保證字段數(shù)據(jù)的正確性。

        類似經(jīng)驗(yàn)還很多,出于文章篇幅原因,這里不再一一講解。但有一點(diǎn)要注意,就是GBase8aMPP雖然作為一種關(guān)系數(shù)據(jù)庫,由于其存儲(chǔ)架構(gòu)和處理架構(gòu)上的不同,所導(dǎo)致數(shù)據(jù)庫設(shè)計(jì)規(guī)范會(huì)與傳統(tǒng)關(guān)系數(shù)據(jù)庫有所差別,從傳統(tǒng)數(shù)據(jù)庫遷移到GBase8aMPP時(shí),需要考慮相關(guān)的調(diào)整因素,以充分發(fā)揮遷移到MPP后的應(yīng)用性能的改善效果。

        6 結(jié)束語

        GBase8aMPP作為一款在國內(nèi)行業(yè)大數(shù)據(jù)市場(chǎng)最廣泛使用的新型關(guān)系型數(shù)據(jù)庫(NewSQL),在設(shè)計(jì)上根本突破了傳統(tǒng)型關(guān)系數(shù)據(jù)庫的限制,在列式存儲(chǔ)架構(gòu)和MPP+Shared Nothing大規(guī)模處理并行架構(gòu)設(shè)計(jì)上作了各種富有創(chuàng)造性的功能特性開發(fā),在充分發(fā)揮MPP型列式數(shù)據(jù)庫的處理優(yōu)勢(shì)同時(shí),回避了由于MPP分布式和列式存儲(chǔ)等所導(dǎo)致的新派生問題,并且保證了系統(tǒng)的可靠性。

        同時(shí),GBase8a MPP在進(jìn)入行業(yè)市場(chǎng)的近6年時(shí)間里,從工程實(shí)施到實(shí)際運(yùn)用部署,積累了大量的實(shí)踐經(jīng)驗(yàn),這些都有力消化了新技術(shù)在向?qū)嶋H行業(yè)應(yīng)用導(dǎo)入時(shí)的各項(xiàng)風(fēng)險(xiǎn),并且通過迅速的技術(shù)迭代,GBase8a MPP正在成為大數(shù)據(jù)行業(yè)最有競(jìng)爭(zhēng)力的逐步成熟的大數(shù)據(jù)平臺(tái)級(jí)產(chǎn)品。

        參考文獻(xiàn)

        [1]舍恩伯格.大數(shù)據(jù)時(shí)代[M].杭州:浙江人民出版社,2012.

        [2].張俊林.大數(shù)據(jù)日知錄:架構(gòu)和算法[M].北京:電子工業(yè)出版社,2014.

        [3]陸嘉恒.大數(shù)據(jù)挑戰(zhàn)與NoSQL數(shù)據(jù)庫技術(shù)[M].北京:電子工業(yè)出版社,2013.

        [4]邵佩英.分布式數(shù)據(jù)庫系統(tǒng)及其應(yīng)用[M].北京:科學(xué)出版社,2005.

        [5]George Coulouris,Jean Dollimore,Tim Kindberg,Gordon Blair.分布式系統(tǒng):概念與設(shè)計(jì)(原書第5版)[M].北京:機(jī)械工業(yè)出版社,2013.

        [6]BonifatA,ChrysanthisPK,OukselAM.Distributeddatabases and peer to peer database:past and present[J]. SIGMOD record,2008.

        [7]Copeland GP,Khoshafian SN.Adecompositionstoragemodel [C].ProcofThe1985ACMSIGMODInternationalconferenceon ManagementofData,1985.

        AnewSQLtechniques’s architecture design and practice for relational database

        LIHan

        Abstract:With the rapid development of the industrial big data, the Big Data applications in industrial fields have proposed more higher demands for data management techniques such as data storage and data processing.As traditional architecture of mini-computer and array storage,it has limited the capacity and scalability ofDBMSsystem. This paper have summarized the key techniques a kind of NewSQLDBMS-GBase 8a MPPbased on MPPand column-oriented architecture. By the advanced techniques of GBase 8aMPP, we can effectively solve the restrications faced by traditional database such as scalability, parallel computing capacity for massive data, and high availability under inexpensive hardware conditions.

        Keywords:big data; massive parallel processing; relational database; column-orientedDBMS;relational operator

        收稿日期:(2016-03-28)

        猜你喜歡
        關(guān)系數(shù)據(jù)庫大數(shù)據(jù)
        關(guān)系數(shù)據(jù)庫在高爐數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
        山東冶金(2022年2期)2022-08-08 01:51:30
        關(guān)系數(shù)據(jù)庫技術(shù)在計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中的應(yīng)用
        計(jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)中關(guān)系數(shù)據(jù)庫技術(shù)的應(yīng)用
        大數(shù)據(jù)環(huán)境下基于移動(dòng)客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路
        新聞世界(2016年10期)2016-10-11 20:13:53
        基于大數(shù)據(jù)背景下的智慧城市建設(shè)研究
        科技視界(2016年20期)2016-09-29 10:53:22
        數(shù)據(jù)+輿情:南方報(bào)業(yè)創(chuàng)新轉(zhuǎn)型提高服務(wù)能力的探索
        中國記者(2016年6期)2016-08-26 12:36:20
        基于索引結(jié)構(gòu)的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索
        一種基于數(shù)據(jù)圖劃分的關(guān)系數(shù)據(jù)庫關(guān)鍵詞檢索方法
        基于用戶反饋的關(guān)系數(shù)據(jù)庫關(guān)鍵字查詢系統(tǒng)
        91精品福利观看| 亚洲av无码一区东京热久久| 国产青榴视频在线观看| 草草网站影院白丝内射| 欧美性受xxxx狂喷水| 亚洲一区二区三区在线看| 男女性爽大片视频| 亚洲精品国偷拍自产在线观看蜜臀| 日韩久久av电影| 亚洲欧美国产日韩字幕| 中文字幕亚洲乱亚洲乱妇| 久久精品久99精品免费| 毛片免费视频在线观看| 伊人久久网国产伊人| 亚洲一区二区女优av| 丰满少妇人妻久久精品| 日韩吃奶摸下aa片免费观看| 亚洲 国产 哟| 亚洲伊人伊成久久人综合| 伦伦影院午夜理论片| 中国丰满熟妇xxxx| 久久99久久99精品免观看女同 | 免费高清日本一区二区| 欧美老妇牲交videos| 无遮无挡爽爽免费视频| 久久99中文字幕久久| 日韩美女av一区二区三区四区| 亚洲第一最快av网站| 免费一级特黄欧美大片久久网| 扒开双腿操女人逼的免费视频| 国产精品主播在线一区二区| 黑人巨大无码中文字幕无码| 2021国内精品久久久久精免费| 蜜臀人妻精品一区二区免费| 一本一道av无码中文字幕麻豆| 国产AV无码专区亚洲AⅤ| av福利资源在线观看| 日本伊人精品一区二区三区| 日日av拍夜夜添久久免费 | 四虎影永久在线观看精品| 国产成人亚洲合色婷婷|