吳齊躍
(北京科技大學 東凌經濟管理學院,北京 100083)
基于列存儲的大規模并行數據庫應用技術
吳齊躍
(北京科技大學 東凌經濟管理學院,北京 100083)
大數據分析已經成為當前研究和應用的熱點問題,針對當前傳統數據庫技術對大數據進行分析時系統性能嚴重下降、查詢效率受限的問題,綜合比較列存儲和MPP數據庫技術的特點,重點研究了列存儲與大規模并行(MPP)數據庫的融合,探討大數據實時分析方案以提高大數據的存儲效率和處理性能。
大數據;列存儲;MPP數據庫
在信息化技術高度發展的今天,大數據應用變得日漸普及而且非常重要。鑒于傳統關系型數據庫在大數據應用領域應用時遇到的困難,基于分布式的海量數據管理是當前的研究熱點,其中就包括如何有效地存儲和處理這些增長迅速的海量數據。
現有大數據處理技術主要有對稱多處理機架構 (SMP)和大規模并行處理架構(MPP)兩大類。在數據量極速增長的大數據背景下,計算分布和存儲分布的MPP架構成為主流。MapReduce[1]分布式并行計算是MPP架構的代表。Hadoop[2]是MapReduce分布式計算框架的實現,為大數據處理大型分布式集群,通過分布式存儲系統 HDFS(Hadoop Distributed File System)[3]來管理海量數據。本文重點研究了列存儲結構在MPP數據庫中的應用,概述了列存儲技術和MPP數據庫,用Vertica為例分析了基于列存儲的MPP數據庫關鍵技術,并展望了未來MPP數據庫研究的的發展方向。
列存儲最核心的技術就是基于垂直分區的存儲設計和訪問模式。列存儲數據庫完全劃分為多個獨立的列的集合進行存儲,這種技術的特點是對復雜數據的查詢效率高,讀取磁盤少,存儲空間占用少。這些特點使其成為大數據和OLAP應用存儲的理想結構。
列存儲數據庫只需查詢讀取涉及關系中某些數據列,避免無關列的提取,不像行存儲那樣需要從磁盤讀取整行信息并去除不需要的屬性信息,從而減少I/O和內存帶寬的占用,提高查詢效率。而同一列數據屬性相同,可以使用針對性的壓縮算法,因此壓縮效率高。C-Store[4]和 Monet DB[5]是其中有影響力的代表性成果,它們在存儲結構、查詢優化、壓縮等方面進行了很多技術創新,使得列存儲相比較行存儲而言更適合大規模的訪問和查詢。
列存儲技術的學術價值和商業價值以及主要關鍵技術,包括基于其主要存儲原理的存儲壓縮、延時物化、成組疊代、查詢優化、索引及加密等。列存儲的應用價值來自它對復雜查詢的靈活快速以及壓縮所帶來的存儲優勢,這使其在數據倉庫和商務智能方面具有良好的應用前景,已經有許多分析性數據庫引入了列存儲技術,其中Vertica以及Greenplunm等都是采用了列存儲技術的MPP數據庫,在企業決策分析與決策領域有許多成功應用。
列存儲數據分析在商務智能領域應用中有著先天的優勢:獨特的存儲方式,能夠迅速地執行復雜查詢;列數據庫的壓縮技術,更是能為數據倉庫、商務智能應用中巨大的數據節約存儲成本;列數據庫先進的索引技術也大大提高了數據庫的管理。按列存儲的結構,便于在列上對數據進行輕量級的壓縮,列上多個相同的值只需要存儲一份,按列存儲和壓縮能將更多的數據壓縮在一起,則在每次讀取時就可以獲得更多的數據,壓縮能夠大量地降低存儲成本。按列存儲和壓縮能將更多的數據壓縮在一起,則在每次讀取時就可以獲得更多的數據。列存儲技術在數據分析領域的應用優勢主要體現在:對于列的DML (Data Manipulation Language)操作,僅對列所對應的數據掃描,不對全表進行數據訪問,可以有效降低DML操作的 I/O,同時按列壓縮的特點也同樣能減少數據挖掘時的I/O吞吐量[6]。
列存儲的關鍵技術有壓縮技術、物化技術、成組迭代等。Abadi DJ[7]在SIGMOD06會議上提出列存儲的主要壓縮方法有:行程編碼算法、詞典編碼算法、位向量編碼算法;延時物化,如Abadi DJ在文獻[8]中,詳細介紹了提前物化和延遲物化兩種物化方式的實驗過程,證明延時物化許多性能上的潛力只有在列存儲數據庫中才能發揮,在文獻[9]比較了提前物化和延時物化的優劣,在延時物化引入橫向信息傳遞技術應用,有效解決了溢出連接產生的性能下降問題。
3.1 MPP數據庫
大數據處理的傳統方法是使用并行數據庫系統。并行數據庫系統是在大規模并行處理系統(MPP)和集群并行計算環境的基礎上建立的高性能數據庫系統。這樣的系統是由許多松耦合處理單元組成的,指的是處理單元而不是處理器。每個單元內的CPU都有自己私有的資源,如總線、內存、硬盤等。在每個單元內都有操作系統和管理數據庫的實例復本。這種結構最大的特點在于不共享資源。20世紀80年代和90年代初期是大規模并行處理技術的飛速發展時期,Gamma[10]和Teradata[11]正式這一階段發展起來的MPP數據庫項目的先驅。
并行數據庫系統的構建有三種架構方案:共享處理器、共享內存、共享磁盤。
在共享內存的架構中[12],所有處理器訪問統一的內存和所有的磁盤,這種結構的局限性在于快速訪問共享內存的是其瓶頸。在共享磁盤的架構中[8],所有處理器有自己的內存,但是共享對磁盤的訪問,這種架構因為連接所有處理器對磁盤訪問的復雜性較高使得其比較昂貴。
如圖1所示,并行處理Shared-nothing架構各節點擁有自己的處理器和內存以及磁盤,只是共享通訊網絡,過去的幾十年中,并行處理Shared-nothing架構為學術界和工業界所認可,很多并行處理的原型系統都是基于Shared-nothing架構的,具體包括:Bubba[13],Gamma[6],Greenplum[14],IBM DB2 Parallel Edi-tion[15],Netezza[16],SQL Server Parallel DataWarehouse[17],Teradata[7]等。

圖1并行處理Shared-nothing架構
圖2表示了通過高速網絡連接的“share-nothing節點”(具有獨立CPU,主存和磁盤)組成的集群的全新并行數據庫架構模式。

圖2并行數據庫架構
3.2 HP-Vertica技術和特性分析
作為新一代MPP數據庫的代表產品,HP Vertica帶來了很多創新,Vertica采用高性能的列式存儲和計算技術,支持主動數據壓縮,高級分析,對大數據實時分析有較好的支撐。圖3展示了Vertica的架構,其融合列存儲技術和MPP并行處理架構[18]。

圖3 Vertica架構
(1)列式存儲和計算
區別于傳統的行存儲數據庫,Vertica將每列數據是獨立地存儲在連續的硬盤存儲塊中。支持延遲物化技術,對于大多數的分析查詢而言,往往只需要獲取所有列數據的一個子集。Vertica采用列式優化器和執行引擎可以在列式存儲中跳過無關的列,從而節省了大量的I/O資源消耗,提高查詢效率。如圖4所示。

圖4 Vertica列存儲
根據查詢的要求和數據的特點主動選擇合理的排序方式和壓縮算法,降低數據所占的存儲空間,從而降低查詢的 I/O消耗,進一步提升查詢性能,同時通過采用延遲解壓縮技術,充分利用列式計算技術,支持在查詢條件和關聯中直接訪問數據編碼后的值,而不需要先解碼,大大節省在數據查詢期間的CPU開銷,進而提升整體的查詢性能。
(2)壓縮技術
Vertica支持超過12種壓縮算法,如:行程長度算法(run length encoding),增量編碼(delta value encoding),針對整數數據的整數壓縮,針對字符數據的塊字典編碼,針對其他數據類型的Lempel-Ziv編碼等,根據每列的數據類型、基數和查詢特點,選擇適用的排序方式和壓縮算法,以盡可能減少數據所占的存儲空間,如圖5所示。通過降低查詢的I/O消耗,從而提升查詢性能。從I/O資源消耗節約的角度來看,對I/O是主要瓶頸的分析系統而言,相較于傳統的行式數據庫,主動壓縮技術可以帶來約一個數量級的性能提升。

圖5 Vertica壓縮示意圖
(3)“橫向擴展式”大規模并行處理 (MPP)
Vertica采用無資源共享的大規模并行處理架構。節點間通過TCP/IP網絡進行通信。每節點采用本地磁盤來存儲數據,也支持通過存儲域網絡(SAN)方式連接外部存儲中的不同LUN。集群中的所有節點完全對等,不需要主節點,數據加載、數據導出和查詢都可以并行地在所有節點同時執行。由于沒有資源共享,增加節點就可以線性地擴展 Vertica的數據容量和計算能力,可以輕松從幾個節點到上千節點、或從幾個TB到數10 PB規模擴展和收縮,滿足業務規模增長的要求。
(4)高性能和高并發
Vertica的列式存儲和計算技術,通過針對列數據特點的主動壓縮技術和延遲物化、延遲解壓,節省了近2個量級CPU和I/O資源消耗,分析查詢性能比傳統行式數據庫快快50到1 000倍。同時,CPU和I/O資源的大幅節約,也大幅提升了數據裝載、數據導出、數據處理和備份恢復等操作的性能。
(5)混合存儲和實時分析
Vertica借鑒C-store的設計,如圖6所示,除了把數據按列式存儲到磁盤中外 (Vertica稱這塊存儲區域為讀優化存儲,ROS),還專門為實時裝載的數據在內存中開辟了一塊存儲區域(Vertica稱這塊存儲區域為寫優化存儲,WOS),通過內存的快速讀寫能力來提升數據實時裝載能力。

圖6 Vertica混合存儲架構
MPP數據庫在設計上充分考慮和利用了列式存儲的優越性,使數據庫的整體性能、易用性及可靠性方面都達到了較高的水平,因此這幾年的發展速度也很快,值得關注。MPP數據庫在Hadoop和大數據時代仍然是個好選擇,在未來很長的一段時間內MPP數據庫有足夠的空間和機會成長和繁榮,MPP數據庫和Hadoop/MapReduce技術的融合也將是未來大數據分析領域的重要方向。
主要參考文獻
[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]田立中,徐瑞余,周昭濤.列存儲在數據挖掘中的應用[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