吳齊躍
(北京科技大學(xué) 東凌經(jīng)濟(jì)管理學(xué)院,北京 100083)
基于列存儲的大規(guī)模并行數(shù)據(jù)庫應(yīng)用技術(shù)
吳齊躍
(北京科技大學(xué) 東凌經(jīng)濟(jì)管理學(xué)院,北京 100083)
大數(shù)據(jù)分析已經(jīng)成為當(dāng)前研究和應(yīng)用的熱點(diǎn)問題,針對當(dāng)前傳統(tǒng)數(shù)據(jù)庫技術(shù)對大數(shù)據(jù)進(jìn)行分析時系統(tǒng)性能嚴(yán)重下降、查詢效率受限的問題,綜合比較列存儲和MPP數(shù)據(jù)庫技術(shù)的特點(diǎn),重點(diǎn)研究了列存儲與大規(guī)模并行(MPP)數(shù)據(jù)庫的融合,探討大數(shù)據(jù)實(shí)時分析方案以提高大數(shù)據(jù)的存儲效率和處理性能。
大數(shù)據(jù);列存儲;MPP數(shù)據(jù)庫
在信息化技術(shù)高度發(fā)展的今天,大數(shù)據(jù)應(yīng)用變得日漸普及而且非常重要。鑒于傳統(tǒng)關(guān)系型數(shù)據(jù)庫在大數(shù)據(jù)應(yīng)用領(lǐng)域應(yīng)用時遇到的困難,基于分布式的海量數(shù)據(jù)管理是當(dāng)前的研究熱點(diǎn),其中就包括如何有效地存儲和處理這些增長迅速的海量數(shù)據(jù)。
現(xiàn)有大數(shù)據(jù)處理技術(shù)主要有對稱多處理機(jī)架構(gòu) (SMP)和大規(guī)模并行處理架構(gòu)(MPP)兩大類。在數(shù)據(jù)量極速增長的大數(shù)據(jù)背景下,計(jì)算分布和存儲分布的MPP架構(gòu)成為主流。MapReduce[1]分布式并行計(jì)算是MPP架構(gòu)的代表。Hadoop[2]是MapReduce分布式計(jì)算框架的實(shí)現(xiàn),為大數(shù)據(jù)處理大型分布式集群,通過分布式存儲系統(tǒng) HDFS(Hadoop Distributed File System)[3]來管理海量數(shù)據(jù)。本文重點(diǎn)研究了列存儲結(jié)構(gòu)在MPP數(shù)據(jù)庫中的應(yīng)用,概述了列存儲技術(shù)和MPP數(shù)據(jù)庫,用Vertica為例分析了基于列存儲的MPP數(shù)據(jù)庫關(guān)鍵技術(shù),并展望了未來MPP數(shù)據(jù)庫研究的的發(fā)展方向。
列存儲最核心的技術(shù)就是基于垂直分區(qū)的存儲設(shè)計(jì)和訪問模式。列存儲數(shù)據(jù)庫完全劃分為多個獨(dú)立的列的集合進(jìn)行存儲,這種技術(shù)的特點(diǎn)是對復(fù)雜數(shù)據(jù)的查詢效率高,讀取磁盤少,存儲空間占用少。這些特點(diǎn)使其成為大數(shù)據(jù)和OLAP應(yīng)用存儲的理想結(jié)構(gòu)。
列存儲數(shù)據(jù)庫只需查詢讀取涉及關(guān)系中某些數(shù)據(jù)列,避免無關(guān)列的提取,不像行存儲那樣需要從磁盤讀取整行信息并去除不需要的屬性信息,從而減少I/O和內(nèi)存帶寬的占用,提高查詢效率。而同一列數(shù)據(jù)屬性相同,可以使用針對性的壓縮算法,因此壓縮效率高。C-Store[4]和 Monet DB[5]是其中有影響力的代表性成果,它們在存儲結(jié)構(gòu)、查詢優(yōu)化、壓縮等方面進(jìn)行了很多技術(shù)創(chuàng)新,使得列存儲相比較行存儲而言更適合大規(guī)模的訪問和查詢。
列存儲技術(shù)的學(xué)術(shù)價值和商業(yè)價值以及主要關(guān)鍵技術(shù),包括基于其主要存儲原理的存儲壓縮、延時物化、成組疊代、查詢優(yōu)化、索引及加密等。列存儲的應(yīng)用價值來自它對復(fù)雜查詢的靈活快速以及壓縮所帶來的存儲優(yōu)勢,這使其在數(shù)據(jù)倉庫和商務(wù)智能方面具有良好的應(yīng)用前景,已經(jīng)有許多分析性數(shù)據(jù)庫引入了列存儲技術(shù),其中Vertica以及Greenplunm等都是采用了列存儲技術(shù)的MPP數(shù)據(jù)庫,在企業(yè)決策分析與決策領(lǐng)域有許多成功應(yīng)用。
列存儲數(shù)據(jù)分析在商務(wù)智能領(lǐng)域應(yīng)用中有著先天的優(yōu)勢:獨(dú)特的存儲方式,能夠迅速地執(zhí)行復(fù)雜查詢;列數(shù)據(jù)庫的壓縮技術(shù),更是能為數(shù)據(jù)倉庫、商務(wù)智能應(yīng)用中巨大的數(shù)據(jù)節(jié)約存儲成本;列數(shù)據(jù)庫先進(jìn)的索引技術(shù)也大大提高了數(shù)據(jù)庫的管理。按列存儲的結(jié)構(gòu),便于在列上對數(shù)據(jù)進(jìn)行輕量級的壓縮,列上多個相同的值只需要存儲一份,按列存儲和壓縮能將更多的數(shù)據(jù)壓縮在一起,則在每次讀取時就可以獲得更多的數(shù)據(jù),壓縮能夠大量地降低存儲成本。按列存儲和壓縮能將更多的數(shù)據(jù)壓縮在一起,則在每次讀取時就可以獲得更多的數(shù)據(jù)。列存儲技術(shù)在數(shù)據(jù)分析領(lǐng)域的應(yīng)用優(yōu)勢主要體現(xiàn)在:對于列的DML (Data Manipulation Language)操作,僅對列所對應(yīng)的數(shù)據(jù)掃描,不對全表進(jìn)行數(shù)據(jù)訪問,可以有效降低DML操作的 I/O,同時按列壓縮的特點(diǎn)也同樣能減少數(shù)據(jù)挖掘時的I/O吞吐量[6]。
列存儲的關(guān)鍵技術(shù)有壓縮技術(shù)、物化技術(shù)、成組迭代等。Abadi DJ[7]在SIGMOD06會議上提出列存儲的主要壓縮方法有:行程編碼算法、詞典編碼算法、位向量編碼算法;延時物化,如Abadi DJ在文獻(xiàn)[8]中,詳細(xì)介紹了提前物化和延遲物化兩種物化方式的實(shí)驗(yàn)過程,證明延時物化許多性能上的潛力只有在列存儲數(shù)據(jù)庫中才能發(fā)揮,在文獻(xiàn)[9]比較了提前物化和延時物化的優(yōu)劣,在延時物化引入橫向信息傳遞技術(shù)應(yīng)用,有效解決了溢出連接產(chǎn)生的性能下降問題。
3.1 MPP數(shù)據(jù)庫
大數(shù)據(jù)處理的傳統(tǒng)方法是使用并行數(shù)據(jù)庫系統(tǒng)。并行數(shù)據(jù)庫系統(tǒng)是在大規(guī)模并行處理系統(tǒng)(MPP)和集群并行計(jì)算環(huán)境的基礎(chǔ)上建立的高性能數(shù)據(jù)庫系統(tǒng)。這樣的系統(tǒng)是由許多松耦合處理單元組成的,指的是處理單元而不是處理器。每個單元內(nèi)的CPU都有自己私有的資源,如總線、內(nèi)存、硬盤等。在每個單元內(nèi)都有操作系統(tǒng)和管理數(shù)據(jù)庫的實(shí)例復(fù)本。這種結(jié)構(gòu)最大的特點(diǎn)在于不共享資源。20世紀(jì)80年代和90年代初期是大規(guī)模并行處理技術(shù)的飛速發(fā)展時期,Gamma[10]和Teradata[11]正式這一階段發(fā)展起來的MPP數(shù)據(jù)庫項(xiàng)目的先驅(qū)。
并行數(shù)據(jù)庫系統(tǒng)的構(gòu)建有三種架構(gòu)方案:共享處理器、共享內(nèi)存、共享磁盤。
在共享內(nèi)存的架構(gòu)中[12],所有處理器訪問統(tǒng)一的內(nèi)存和所有的磁盤,這種結(jié)構(gòu)的局限性在于快速訪問共享內(nèi)存的是其瓶頸。在共享磁盤的架構(gòu)中[8],所有處理器有自己的內(nèi)存,但是共享對磁盤的訪問,這種架構(gòu)因?yàn)檫B接所有處理器對磁盤訪問的復(fù)雜性較高使得其比較昂貴。
如圖1所示,并行處理Shared-nothing架構(gòu)各節(jié)點(diǎn)擁有自己的處理器和內(nèi)存以及磁盤,只是共享通訊網(wǎng)絡(luò),過去的幾十年中,并行處理Shared-nothing架構(gòu)為學(xué)術(shù)界和工業(yè)界所認(rèn)可,很多并行處理的原型系統(tǒng)都是基于Shared-nothing架構(gòu)的,具體包括:Bubba[13],Gamma[6],Greenplum[14],IBM DB2 Parallel Edi-tion[15],Netezza[16],SQL Server Parallel DataWarehouse[17],Teradata[7]等。
圖1并行處理Shared-nothing架構(gòu)
圖2表示了通過高速網(wǎng)絡(luò)連接的“share-nothing節(jié)點(diǎn)”(具有獨(dú)立CPU,主存和磁盤)組成的集群的全新并行數(shù)據(jù)庫架構(gòu)模式。
圖2并行數(shù)據(jù)庫架構(gòu)
3.2 HP-Vertica技術(shù)和特性分析
作為新一代MPP數(shù)據(jù)庫的代表產(chǎn)品,HP Vertica帶來了很多創(chuàng)新,Vertica采用高性能的列式存儲和計(jì)算技術(shù),支持主動數(shù)據(jù)壓縮,高級分析,對大數(shù)據(jù)實(shí)時分析有較好的支撐。圖3展示了Vertica的架構(gòu),其融合列存儲技術(shù)和MPP并行處理架構(gòu)[18]。
圖3 Vertica架構(gòu)
(1)列式存儲和計(jì)算
區(qū)別于傳統(tǒng)的行存儲數(shù)據(jù)庫,Vertica將每列數(shù)據(jù)是獨(dú)立地存儲在連續(xù)的硬盤存儲塊中。支持延遲物化技術(shù),對于大多數(shù)的分析查詢而言,往往只需要獲取所有列數(shù)據(jù)的一個子集。Vertica采用列式優(yōu)化器和執(zhí)行引擎可以在列式存儲中跳過無關(guān)的列,從而節(jié)省了大量的I/O資源消耗,提高查詢效率。如圖4所示。
圖4 Vertica列存儲
根據(jù)查詢的要求和數(shù)據(jù)的特點(diǎn)主動選擇合理的排序方式和壓縮算法,降低數(shù)據(jù)所占的存儲空間,從而降低查詢的 I/O消耗,進(jìn)一步提升查詢性能,同時通過采用延遲解壓縮技術(shù),充分利用列式計(jì)算技術(shù),支持在查詢條件和關(guān)聯(lián)中直接訪問數(shù)據(jù)編碼后的值,而不需要先解碼,大大節(jié)省在數(shù)據(jù)查詢期間的CPU開銷,進(jìn)而提升整體的查詢性能。
(2)壓縮技術(shù)
Vertica支持超過12種壓縮算法,如:行程長度算法(run length encoding),增量編碼(delta value encoding),針對整數(shù)數(shù)據(jù)的整數(shù)壓縮,針對字符數(shù)據(jù)的塊字典編碼,針對其他數(shù)據(jù)類型的Lempel-Ziv編碼等,根據(jù)每列的數(shù)據(jù)類型、基數(shù)和查詢特點(diǎn),選擇適用的排序方式和壓縮算法,以盡可能減少數(shù)據(jù)所占的存儲空間,如圖5所示。通過降低查詢的I/O消耗,從而提升查詢性能。從I/O資源消耗節(jié)約的角度來看,對I/O是主要瓶頸的分析系統(tǒng)而言,相較于傳統(tǒng)的行式數(shù)據(jù)庫,主動壓縮技術(shù)可以帶來約一個數(shù)量級的性能提升。
圖5 Vertica壓縮示意圖
(3)“橫向擴(kuò)展式”大規(guī)模并行處理 (MPP)
Vertica采用無資源共享的大規(guī)模并行處理架構(gòu)。節(jié)點(diǎn)間通過TCP/IP網(wǎng)絡(luò)進(jìn)行通信。每節(jié)點(diǎn)采用本地磁盤來存儲數(shù)據(jù),也支持通過存儲域網(wǎng)絡(luò)(SAN)方式連接外部存儲中的不同LUN。集群中的所有節(jié)點(diǎn)完全對等,不需要主節(jié)點(diǎn),數(shù)據(jù)加載、數(shù)據(jù)導(dǎo)出和查詢都可以并行地在所有節(jié)點(diǎn)同時執(zhí)行。由于沒有資源共享,增加節(jié)點(diǎn)就可以線性地擴(kuò)展 Vertica的數(shù)據(jù)容量和計(jì)算能力,可以輕松從幾個節(jié)點(diǎn)到上千節(jié)點(diǎn)、或從幾個TB到數(shù)10 PB規(guī)模擴(kuò)展和收縮,滿足業(yè)務(wù)規(guī)模增長的要求。
(4)高性能和高并發(fā)
Vertica的列式存儲和計(jì)算技術(shù),通過針對列數(shù)據(jù)特點(diǎn)的主動壓縮技術(shù)和延遲物化、延遲解壓,節(jié)省了近2個量級CPU和I/O資源消耗,分析查詢性能比傳統(tǒng)行式數(shù)據(jù)庫快快50到1 000倍。同時,CPU和I/O資源的大幅節(jié)約,也大幅提升了數(shù)據(jù)裝載、數(shù)據(jù)導(dǎo)出、數(shù)據(jù)處理和備份恢復(fù)等操作的性能。
(5)混合存儲和實(shí)時分析
Vertica借鑒C-store的設(shè)計(jì),如圖6所示,除了把數(shù)據(jù)按列式存儲到磁盤中外 (Vertica稱這塊存儲區(qū)域?yàn)樽x優(yōu)化存儲,ROS),還專門為實(shí)時裝載的數(shù)據(jù)在內(nèi)存中開辟了一塊存儲區(qū)域(Vertica稱這塊存儲區(qū)域?yàn)閷憙?yōu)化存儲,WOS),通過內(nèi)存的快速讀寫能力來提升數(shù)據(jù)實(shí)時裝載能力。
圖6 Vertica混合存儲架構(gòu)
MPP數(shù)據(jù)庫在設(shè)計(jì)上充分考慮和利用了列式存儲的優(yōu)越性,使數(shù)據(jù)庫的整體性能、易用性及可靠性方面都達(dá)到了較高的水平,因此這幾年的發(fā)展速度也很快,值得關(guān)注。MPP數(shù)據(jù)庫在Hadoop和大數(shù)據(jù)時代仍然是個好選擇,在未來很長的一段時間內(nèi)MPP數(shù)據(jù)庫有足夠的空間和機(jī)會成長和繁榮,MPP數(shù)據(jù)庫和Hadoop/MapReduce技術(shù)的融合也將是未來大數(shù)據(jù)分析領(lǐng)域的重要方向。
主要參考文獻(xiàn)
[1]Dean J,Ghemawat S.MapReduce:Simplified Data Processing on Large Clusters[J].In Proceedings of Operating Systems Design and Implementation(OSDI,2004,51(1):107-113.
[2]White T.Hadoop:The Definitive Guide[M].Sebastopol:O’Reilly,2012.
[3]Borthakur D.The Hadoop Distributed File System:Architecture and Design[J].Hadoop Project Website,2007,11(11):1-10.
[4]Stonebraker M.,Abadi D J.,Batkin A,et al.,C-store:A Column-oriented DBMS.Proceeding of the 31st VLDB Conference,Trondheim,2005.
[5]Boncz P A,Zukowski M,Nes N J.MonetDB/X100:Hyper-Pipelining Query Execution[J].Cidr,2005.
[6]田立中,徐瑞余,周昭濤.列存儲在數(shù)據(jù)挖掘中的應(yīng)用[J].金融電子化,2008(9).
[7]Abadi D J,Madden S R,Hachem N.Column-stores vs.Row-stores:How Different are They Really?[C]//Proceedings of the ACM SIGMOD International Conference on Management of Data,SIGMOD 2008,Vancouver,BC,Canada,June 10-12,2008.2008:967-980.
[8]Abadi,D.J.,Myers D,S.,et al.,Materialization Strategies in a Column-Oriented DBMS.IEEE International Conference on Data Engineering,2007:466-475.
[9]Shrinivas L,Bodagala S,Varadarajan R,et al.Materialization Strategies in the Vertica Analytic Database:Lessons Learned[C]//2013 IEEE 29th International Conference on Data Engineering(ICDE).IEEE Computer Society,2013:1196-1207.
[10]David J Dewitt,Shahram Ghandeharizadeh,Donovan A.Schneider,et al.The Gamma Database Machine Project.IEEE Trans.on Knowledge and Data Engineering,1990,2(1):44-62.
[11]Teradata,2016,http://cn.teradata.com/
[12]David J.DeWitt,Jim Gray.Parallel Database Systems:The Future of High Performance Database Systems[J].Communications of the ACM,1992,35(6):85-98.
[13]H.Boral,W.Alexander,L.Clay,et al.Prototyping Bubba,a Highly Parallel Database System.IEEE Trans.on Knowledge and Data Engineering,2002,2(1):4-24.
[14]Greenplum,2016,http://pivotal.io/big-data/pivotal-greenplum/
[15]C.K.Baru,G.Fecteau,A.Goyal,H.Hsiao,et al.DB2 Parallel Edition.IBM Systems Journal,1995,34(2):292-322.
[16]IBM Netezza Data Warehouse Appliances,2016.http://www-01.ibm. com/software/data/netezza/.
[17]SQL Server Parallel Data Warehouse,2016.http://www.microsoft.com/ en-us/sqlserver/solutions-technologies/data-warehousing/pdw.aspx.
[18]Vertica,2016,http://www8.hp.com/cn/.
10.3969/j.issn.1673-0194.2016.11.106
TP309.3
A
1673-0194(2016)11-0177-04
2016-03-18