• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      GBase8aMPP:一種新型關(guān)系數(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è)計和實踐

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

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

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

      1 引言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      (1)GCluster集群

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

      (2)GCware集群

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

      (3)GNode集群

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

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

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

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

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

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

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

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

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

      ●輕量級壓縮。

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

      ●RAPIDZ壓縮,適用于對性能要求較高的用戶場合。

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

      ●輕量級壓縮。

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

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

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

      4.3GBase8aMPP集群的可擴展性設(shè)計

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

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

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

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

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

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

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

      在這里最終目標是為了盡可能減少MPP節(jié)點之間的網(wǎng)絡(luò)數(shù)據(jù)傳輸。

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

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

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

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

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

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

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

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

      (1)Join操作

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

      圖2 基于分片文件搬運的擴容方式

      (2)聚合操作

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

      (3)Orderby排序操作

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

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

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

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

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

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

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

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

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

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

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

      圖5 GBase 8a MPP內(nèi)部的有效標識符

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

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

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

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

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

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

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

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

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

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

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

      5.2Hashkey的合理選擇

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

      ●盡量選擇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列式存儲下寬表的使用

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

      5.4合理利用壓縮算法

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

      對于GBase8aMPP的實際應(yīng)用場景,總結(jié)了以下經(jīng)驗:

      ●如果對存儲空間要求高,對性能不太要求時,建議使用高壓縮比壓縮算法。

      ●如果對存儲空間要求不高,對性能要求高時,建議使用一般壓縮比壓縮算法。

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

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

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

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

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

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

      6 結(jié)束語

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

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

      參考文獻

      [1]舍恩伯格.大數(shù)據(jù)時代[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è)計(原書第5版)[M].北京:機械工業(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ù)在計算機網(wǎng)絡(luò)設(shè)計中的應(yīng)用
      計算機網(wǎng)絡(luò)設(shè)計中關(guān)系數(shù)據(jù)庫技術(shù)的應(yīng)用
      大數(shù)據(jù)環(huán)境下基于移動客戶端的傳統(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ù)+輿情:南方報業(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)
      屯留县| 乐都县| 库伦旗| 会理县| 沾益县| 阿坝| 静乐县| 龙山县| 梓潼县| 双柏县| 聂荣县| 景洪市| 高陵县| 雷山县| 兰西县| 定州市| 元氏县| 临西县| 苗栗县| 米脂县| 永胜县| 来凤县| 金沙县| 随州市| 宜昌市| 曲阜市| 新津县| 津市市| 封丘县| 岳阳市| 巴东县| 民勤县| 咸丰县| 镇远县| 马鞍山市| 桦甸市| 四川省| 错那县| 普陀区| 万州区| 游戏|