摘要:隨著物聯(lián)網(wǎng)及云計算技術(shù)的興起,以及移動互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,以社交網(wǎng)絡(luò)、電商等為代表的新型應(yīng)用在日常生活中使用越來越廣,與此同時它們的數(shù)據(jù)規(guī)模也急劇增加。列存儲數(shù)據(jù)庫在管理海量數(shù)據(jù)、從規(guī)模龐大的數(shù)據(jù)中獲取有用信息方面有突出的優(yōu)勢。在處理海量數(shù)據(jù)時列存儲數(shù)據(jù)庫的性能要明顯優(yōu)于傳統(tǒng)的行存儲數(shù)據(jù)庫,因此研究基于大數(shù)據(jù)的列存儲數(shù)據(jù)庫技術(shù)有重要意義。
關(guān)鍵詞:列存儲,大數(shù)據(jù),數(shù)據(jù)庫,并行查詢
中圖分類號:TP311.13?????????文獻標(biāo)識碼:A
收稿日期:2020-04-29
作者簡介:邱宏(1979-)男,講師,碩士,研究方向:網(wǎng)絡(luò)安全與執(zhí)法。
1 前言
隨著移動互聯(lián)網(wǎng)技術(shù)及計算機技術(shù)的發(fā)展,對海量數(shù)據(jù)進行處理的場景變得越來越常見。傳統(tǒng)的數(shù)據(jù)庫是行存儲的,在處理海量數(shù)據(jù)時存在先天性不足。為了解決大數(shù)據(jù)時代面臨的海量數(shù)據(jù)處理挑戰(zhàn),列存儲數(shù)據(jù)庫技術(shù)應(yīng)運而生。
和傳統(tǒng)的行存儲數(shù)據(jù)庫相比,列存儲數(shù)據(jù)庫處理海量數(shù)據(jù)時的優(yōu)勢主要包括[1]:(1)存儲數(shù)據(jù)前采用壓縮算法先壓縮數(shù)據(jù),對于存在大量重復(fù)的數(shù)據(jù)可以有效提升存儲利用率。(2)可以直接訪問壓縮數(shù)據(jù),提高了數(shù)據(jù)查詢性能。(3)查詢時可以只讀取查詢相關(guān)列,節(jié)省數(shù)據(jù)緩存的同時能夠提升查詢性能。
2 大數(shù)據(jù)理論基礎(chǔ)
Hadoop生態(tài)的MapReduce并行編程技術(shù)是大數(shù)據(jù)的基礎(chǔ),主要目的是解決在分布式集群環(huán)境下的海量數(shù)據(jù)處理問題。和傳統(tǒng)的并行編程技術(shù)相比,MapReduce并行編程模型能夠隔離上層應(yīng)用程序和底層通信,在面向數(shù)據(jù)挖掘、云計算等大數(shù)據(jù)應(yīng)用時應(yīng)用更加廣泛。
MapReduce在處理海量數(shù)據(jù)任務(wù)時,將大數(shù)據(jù)集分成多個獨立的子任務(wù),并且并行執(zhí)行這些子任務(wù),每個并行執(zhí)行的獨立任務(wù)稱為Map任務(wù)。實際執(zhí)行時,Map任務(wù)是分配到不同的機器上并行執(zhí)行的,執(zhí)行完成后會調(diào)用Reduce任務(wù)對各機器執(zhí)行的Map任務(wù)的中間結(jié)果進行匯總。
需要注意的是,MapReduce是一種并行計算模型,Map任務(wù)及Reduce任務(wù)并不是固定不變的,而是用戶根據(jù)自己的需要自行實現(xiàn)的,只要按照固定的輸入、輸出格式實現(xiàn)即可。Map任務(wù)及Reduce任務(wù)的輸入及輸出格式如表1所示:
在采用MapReduce并行計算模型時,分布式集群的Master節(jié)點將數(shù)據(jù)劃分成多個子集,并把整個計算任務(wù)分為Map任務(wù)和Reduce任務(wù),然后把各個任務(wù)分配到集群中空閑的worker節(jié)點。典型的MapReduce任務(wù)過程過程包括[2]:(1)劃分?jǐn)?shù)據(jù)集。用戶提交作業(yè)請求,Master節(jié)點將輸入數(shù)據(jù)分成多個子數(shù)據(jù)塊,并轉(zhuǎn)化為
集群所以節(jié)點計算任務(wù)得到的鍵值對可能有不同的鍵值,為了提高計算消息,可以將相同鍵的數(shù)據(jù)交給同一個Reduc處理,這樣就需要對Map 階段產(chǎn)生的所有鍵值對進行交換和排序,以便將相同key的鍵值對存放在同一數(shù)據(jù)塊中。(4)Reduce階段。調(diào)用Reduce函數(shù)對Map階段得到的所有中間數(shù)據(jù)進行處理。(5)輸出階段。將輸出結(jié)果輸出到指定位置。
MapReduce模型的處理流程如圖1所示:
3 列存儲數(shù)據(jù)庫的自適應(yīng)索引技術(shù)
索引的合理使用可以有效降低查詢讀取的數(shù)據(jù)量,從而能夠顯著提升數(shù)據(jù)庫的查詢性能。影響索引性能的重要指標(biāo)包括初始化成本、查詢執(zhí)行時間以及收斂速度。初始化成本指的是第一個查詢語句需要的時間;收斂速度說明經(jīng)過多少查詢語句后索引的性能趨于穩(wěn)定;查詢語句的執(zhí)行時間包括單個查詢語句的執(zhí)行時間和累積執(zhí)行時間。
數(shù)據(jù)分割索引算法對數(shù)據(jù)庫的列進行索引時使用的是快速排序算法,并用查詢語句的邊界值充當(dāng)列的劃分點。在數(shù)據(jù)庫的列第一次被查詢的時候,數(shù)據(jù)分割索引算法會構(gòu)造此列對應(yīng)的索引列,然后據(jù)此查詢數(shù)據(jù)的邊界值,以對索引列中的數(shù)據(jù)進行重組。在第一個查詢語句執(zhí)行完畢后,索引列會被劃分成多個子集,子集間整體上是有序排列的,但各個子集內(nèi)部局部是無序的。后續(xù)有查詢需求時,只需要根據(jù)數(shù)據(jù)的邊界范圍即可訪問索引的不同部分,而不需要訪問整個索引列,這樣可以大大降低查詢數(shù)據(jù)的數(shù)據(jù)量,提高查詢性能。
自適應(yīng)合并索引算法對數(shù)據(jù)庫的列進行索引時使用的是合并排序算法。第一個查詢語句執(zhí)行后會將數(shù)據(jù)列劃分成若干數(shù)據(jù)塊,在對數(shù)據(jù)塊排序后再從數(shù)據(jù)塊中查找數(shù)據(jù),每個數(shù)據(jù)塊自身是排好序的,因此查找數(shù)據(jù)時采用二分法。后續(xù)的查詢語句會將滿足需求的數(shù)據(jù)合并后轉(zhuǎn)移到結(jié)果集,然后對結(jié)果集進行排序;等數(shù)據(jù)塊中的所有數(shù)據(jù)都被轉(zhuǎn)移到結(jié)果集后,索引就建立成功。
數(shù)據(jù)分割索引算法和自適應(yīng)合并索引算法在執(zhí)行第一個查詢語句時構(gòu)建索引列的過程是不同的[3]:數(shù)據(jù)分割索引算法構(gòu)建索引列是通過復(fù)制完成的,而在后續(xù)的查詢語句中重組數(shù)據(jù)塊借助的是兩個邊界值;自適應(yīng)合并索引算法在執(zhí)行第一個查詢語句時是把數(shù)據(jù)列分成了多個數(shù)據(jù)塊,并對每個數(shù)據(jù)塊進行排序,后續(xù)的查詢語句是借助二分法。
4 列存儲數(shù)據(jù)庫的并行查詢技術(shù)
從海量數(shù)據(jù)中查詢數(shù)據(jù)時,由于數(shù)據(jù)量非常大的原因,如果查詢過程采用傳統(tǒng)的串行化操作,那么勢必會影響查詢的效率,并行化查詢是提高數(shù)據(jù)庫查詢性能的重要手段。
并行數(shù)據(jù)庫查詢的實現(xiàn)方式主要包括[4]:(1)并行查詢操作。將原來的一個查詢語句并行化為多個并行查詢。(2)多查詢間的并行。對于相互間不影響的查詢操作,盡量一起操作,進行并行查詢。(3)用戶間的并行。不同用戶間的查詢操作,允許同時進行。
作為查詢語句的基本組成部分,查詢操作自身的并行對提高查詢效率的影響很明顯,選擇、連接以及聚集等查詢操作都可以并行。對于基于掃描的查詢操作,在掃描數(shù)據(jù)文件時就并行操作;對于基于排序的查詢操作,先對數(shù)據(jù)進行排序,然后選擇和查詢操作相關(guān)的并行處理方式;對于基于索引的查詢操作,想建立索引,然后通過索引并行執(zhí)行相關(guān)操作。
查詢語句的并行執(zhí)行具體實現(xiàn)方式是根據(jù)操作間的并行程度實現(xiàn)的,根據(jù)查詢操作間的依賴關(guān)系,可以把查詢語句的并行執(zhí)行方式分為查詢操作間的獨立并行執(zhí)行及查詢操作間的流水線并行執(zhí)行。查詢操作間的獨立并行執(zhí)行指的是查詢操作時完全相互獨立的,各個查詢操作間沒有任何關(guān)系,也不存在先后順序;這樣的查詢操作可以分別分配一定數(shù)目的處理單元,實現(xiàn)完全并行。查詢操作間的流水線并行執(zhí)行指的是各個查詢操作間存在某種先后順序關(guān)系,這樣的話可以為存在先后關(guān)系的查詢操作分配同樣的處理單元,在前序查詢操作執(zhí)行一部分后,即可將前序操作的結(jié)果傳遞給后序查詢操作處理,而不用等前序查詢操作完全執(zhí)行完畢。
采取MapReduce模型實現(xiàn)列存儲數(shù)據(jù)庫中并行查詢操作的流程如圖2所示:
其中Map階段Amap函數(shù)會對各個數(shù)據(jù)塊進行處理,處理結(jié)果會在Reduce階段被Areduce函數(shù)使用,對應(yīng)的結(jié)果子集在匯總后被輸出為最終的結(jié)果集。
5總結(jié)
本文對基于大數(shù)據(jù)的列存儲數(shù)據(jù)庫技術(shù)進行研究。首先,介紹了列存儲數(shù)據(jù)庫技術(shù)的理論基礎(chǔ)——MapReduce并行計算模型;然后在此基礎(chǔ)上分析了列存儲數(shù)據(jù)庫的自適應(yīng)索引技術(shù)和并行查詢技術(shù)。最終采取MapReduce模型實現(xiàn)了列存儲數(shù)據(jù)庫的并行查詢操作。
參考文獻:
[1]王振璽,樂嘉錦,王梅,等.列存儲數(shù)據(jù)區(qū)級壓縮模式與壓縮策略選擇方法[J].計算機學(xué)報,2019(8):1524-1530.
[2]王梅,楊思簫,樂嘉錦.列存儲數(shù)據(jù)庫中壓縮位圖索引技術(shù)[J].計算機工程,2018(10):26-29.
[3]鄧亞丹.面向共享Cache多核處理器的數(shù)據(jù)庫查詢執(zhí)行優(yōu)化技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2019.
[4]鄭黎輝.數(shù)據(jù)庫并行查詢優(yōu)化的設(shè)計與實現(xiàn)[J].長春:吉林大學(xué),2018.
Abstract:?With the rise of Internet of things and cloud computing technology, as well as the continuous development of mobile Internet technology, new applications such as social networks, e-commerce, etc. are used more and more widely in?daily life, at the same time, their data scale has increased dramatically. Column storage database has outstanding advantages in managing massive data and obtaining useful information from large-scale data. When dealing with massive data, the performance of column storage database is obviously better than that of traditional row storage database, so it is of great significance to study the technology of column storage database based on big data.
Key words:?Column storage, Big data, Database, Parallel query