本發(fā)明涉及聯(lián)機(jī)分析處理和分布式存儲(chǔ)領(lǐng)域,尤其是指一種基于分布式數(shù)據(jù)倉(cāng)庫(kù)的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)。
背景技術(shù):
隨著信息化技術(shù)的不斷發(fā)展完善,政府、企業(yè)等機(jī)構(gòu)累積產(chǎn)生了大量業(yè)務(wù)數(shù)據(jù),如何從這類數(shù)據(jù)中提取有用信息,便于判斷形勢(shì),對(duì)未來(lái)發(fā)展作出決策,成為決策者關(guān)心的重要問題。企業(yè)級(jí)別的系統(tǒng)應(yīng)用往往達(dá)到了TB、PB甚至更高的數(shù)據(jù)量,而對(duì)于決策者而言,重要的決策參考信息常常就被淹沒在其中。目前十分通用的做法是,從海量數(shù)據(jù)中提煉出有助于決策分析的數(shù)據(jù)信息,存放到數(shù)據(jù)變動(dòng)相對(duì)較小的數(shù)據(jù)倉(cāng)庫(kù)中,作為對(duì)海量數(shù)據(jù)進(jìn)行篩選后的數(shù)據(jù)環(huán)境。再基于數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù),進(jìn)行聯(lián)機(jī)分析處理,得到相關(guān)的決策信息。我國(guó)的社會(huì)保障信息化管理雖然經(jīng)過(guò)多年的發(fā)展完善,但當(dāng)下對(duì)五種社會(huì)保障信息系統(tǒng)的管理,仍然很難與其他現(xiàn)有獨(dú)立系統(tǒng)有效交互,更不用說(shuō)直接進(jìn)行操作。事務(wù)同步和數(shù)據(jù)共享程度較低,明顯影響勞動(dòng)和社會(huì)保障信息的使用效率。
聯(lián)機(jī)分析處理(OLAP)是一個(gè)將原始數(shù)據(jù)轉(zhuǎn)化為貼近用戶所理解的業(yè)務(wù)維度的,提供從各種可能地視角觀察信息的軟件技術(shù),便于分析師、管理者和執(zhí)行者來(lái)快速、一致、交互地訪問數(shù)據(jù)。OLAP的功能特點(diǎn)是提供動(dòng)態(tài)多維的分析整合企業(yè)數(shù)據(jù),支持終端用戶分析和定位活動(dòng),包括各個(gè)維度的計(jì)算和建模應(yīng)用,通過(guò)層次結(jié)構(gòu)和成員進(jìn)行趨勢(shì)分析,對(duì)子集切片細(xì)致查看,鉆取到更深的層次,旋轉(zhuǎn)到新的維度進(jìn)行可見的區(qū)域比較等。
傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)一般采用集中式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方式,單節(jié)點(diǎn)運(yùn)行計(jì)算,配置起來(lái)比較簡(jiǎn)單,對(duì)結(jié)構(gòu)化數(shù)據(jù)的處理速度也比較快,同時(shí),受服務(wù)器硬件性能的影響也比較大。但是在社保數(shù)據(jù)應(yīng)用中,往往要對(duì)多張數(shù)據(jù)表中成千上萬(wàn)條數(shù)據(jù)進(jìn)行綜合查詢,傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)的性能越來(lái)越難以滿足這類復(fù)雜的查詢需求。隨著數(shù)據(jù)量的積累,數(shù)據(jù)倉(cāng)庫(kù)遲早會(huì)有需要擴(kuò)容的時(shí)候,而傳統(tǒng)數(shù)據(jù)倉(cāng)庫(kù)由于采用集中式存儲(chǔ)方式,擴(kuò)容的代價(jià)是巨大的,往往需要將原有存儲(chǔ)介質(zhì)整體替換。
對(duì)于數(shù)據(jù)倉(cāng)庫(kù)的查詢,往往是對(duì)海量數(shù)據(jù)的范圍查詢,并不需要太高的實(shí)時(shí)性,對(duì)于查詢?nèi)蝿?wù)的處理也可以分批次進(jìn)行,因此數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)特別適合使用分布式數(shù)據(jù)解決方案。
對(duì)海量社保數(shù)據(jù)的多維查詢分析,查詢速度是評(píng)價(jià)系統(tǒng)性能的關(guān)鍵因素,針對(duì)多維立方體查詢的優(yōu)化,有幾個(gè)比較常見的優(yōu)化方法:存儲(chǔ)過(guò)程,索引技術(shù),物化視圖。存儲(chǔ)過(guò)程對(duì)針對(duì)特定的查詢創(chuàng)建查詢語(yǔ)句群,將語(yǔ)句經(jīng)過(guò)編譯優(yōu)化并存儲(chǔ)在數(shù)據(jù)庫(kù)中,以此來(lái)優(yōu)化查詢效率,但是在分布式文件系統(tǒng)中,很少見有對(duì)于存儲(chǔ)過(guò)程、索引技術(shù)的支持,這些技術(shù)對(duì)于分布式文件系統(tǒng)也并不適用。而物化視圖則是一種典型的用空間換取時(shí)間的方法,通過(guò)建立實(shí)體視圖達(dá)到減少表連接消耗時(shí)間的目的,在本文所依據(jù)項(xiàng)目中,由于涉及到多種社會(huì)保障服務(wù),為每個(gè)服務(wù)建立物化視圖將會(huì)帶來(lái)時(shí)間信息、地理信息等方面的巨大冗余,因此這種方法也是不盡如人意的。
根據(jù)數(shù)據(jù)存儲(chǔ)方式,聯(lián)機(jī)分析處理可以分為三類:關(guān)系型OLAP、多維OLAP、混合型OLAP:
關(guān)系型OLAP將數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,就像傳統(tǒng)數(shù)據(jù)表一樣,不同的是,它還會(huì)定義一批實(shí)視圖,與業(yè)務(wù)數(shù)據(jù)一同存儲(chǔ)在數(shù)據(jù)庫(kù)中,這與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)只存儲(chǔ)視圖的定義結(jié)構(gòu)截然不同。這樣做的原因在于定義使用頻率比較高,計(jì)算量比較大的查詢作為實(shí)視圖可以很大程度上減少查詢所需要的耗時(shí)。
多維OLAP將多維數(shù)據(jù)在物理上存儲(chǔ)為多維數(shù)組格式,因此也被成為物理OLAP。而關(guān)系型OLAP主要通過(guò)一些中間軟件實(shí)現(xiàn)立方體,被稱為虛擬OLAP。
混合型OLAP目前為止尚沒有一個(gè)完全清晰的定義,但是顯然,它不是單純的將ROLAP和MOLAP組合起來(lái),應(yīng)當(dāng)結(jié)合具體的業(yè)務(wù)邏輯,將兩種OLAP的優(yōu)點(diǎn)有機(jī)地組合起來(lái)。
內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)是指將數(shù)據(jù)庫(kù)的全部或大部分?jǐn)?shù)據(jù)放在內(nèi)存中的數(shù)據(jù)庫(kù)系統(tǒng),內(nèi)存數(shù)據(jù)庫(kù)中數(shù)據(jù)是常駐內(nèi)存,處理前不需要從磁盤讀取數(shù)據(jù),處理后也不需要將結(jié)果寫回磁盤,節(jié)省了磁盤I/O的時(shí)間,一般都具有很高的查詢性能,適合要求快速響應(yīng)的系統(tǒng)。本發(fā)明針對(duì)的海量社保數(shù)據(jù)無(wú)法完全存儲(chǔ)在內(nèi)存當(dāng)中,但針對(duì)社保數(shù)據(jù)對(duì)五險(xiǎn)一金操作比較多的特性,我們從海量社保數(shù)據(jù)中提取出常見的如醫(yī)療金、失業(yè)金、養(yǎng)老金等類目的數(shù)據(jù)模型,將這些常用模型用NoSQL內(nèi)存數(shù)據(jù)庫(kù)作為存儲(chǔ)空間,使其常駐內(nèi)存,實(shí)現(xiàn)對(duì)常用業(yè)務(wù)數(shù)據(jù)的快速存取。
當(dāng)前國(guó)內(nèi)外關(guān)于大數(shù)據(jù)聯(lián)機(jī)分析處理的研究成果多種多樣,但至今未見針對(duì)社保應(yīng)用海量數(shù)據(jù)實(shí)現(xiàn)的多級(jí)分布式的聯(lián)機(jī)分析處理方法及系統(tǒng)。針對(duì)海量社保數(shù)據(jù),研究一個(gè)真正實(shí)用、可靠的數(shù)據(jù)統(tǒng)計(jì)分析方法及系統(tǒng),保證實(shí)際應(yīng)用中社保數(shù)據(jù)存儲(chǔ)的可靠性、查詢的實(shí)時(shí)性是本發(fā)明的重點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于分布式數(shù)據(jù)倉(cāng)庫(kù)的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng),針對(duì)海量社保數(shù)據(jù),能夠快速響應(yīng)查詢請(qǐng)求,提升查詢效率。
為實(shí)現(xiàn)上述目的,本發(fā)明所提供的技術(shù)方案,如下:
一種基于分布式數(shù)據(jù)倉(cāng)庫(kù)的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng),從上至下劃分為4層,包括:
展示層,是用戶與多維分析服務(wù)器進(jìn)行交互的層次,將分析計(jì)算的結(jié)果展現(xiàn)給用戶,而該展示層主要通過(guò)前端工具提供服務(wù),通過(guò)查詢接口得到多維分析結(jié)果,其實(shí)現(xiàn)的查詢接口,在建立連接時(shí),能夠像注冊(cè)JDBC驅(qū)動(dòng)一樣注冊(cè)連接驅(qū)動(dòng),通過(guò)通用接口Connection加載指定的OLAP驅(qū)動(dòng),隨后獲取連接,獲取連接后,通過(guò)創(chuàng)建聲明對(duì)象執(zhí)行查詢得到結(jié)果;
維度層,主要對(duì)MDX語(yǔ)句進(jìn)行解析,并使用解析后的語(yǔ)句執(zhí)行查詢計(jì)算;一個(gè)MDX查詢?cè)诘玫阶罱K結(jié)果之前,往往需要經(jīng)過(guò)數(shù)次迭代求值計(jì)算,并對(duì)每次的計(jì)算結(jié)果匯總處理;在該維度層中,首先,計(jì)算結(jié)果集中每個(gè)軸包含的成員列表,再計(jì)算需要聚集計(jì)算的單元格,最后將聚集計(jì)算請(qǐng)求批量提交到星狀層;MDX查詢結(jié)果能夠在維度層中緩存,如果用戶需要對(duì)查詢結(jié)果作進(jìn)一步操作,系統(tǒng)就不需要重新處理完整的查詢請(qǐng)求,能夠直接在維度層中緩存的查詢結(jié)果基礎(chǔ)上進(jìn)行處理,得到新的查詢結(jié)果,從而提高解析查詢的效率;
星狀層,主要對(duì)聚集結(jié)果的緩存進(jìn)行管理;該星狀層處理維度層發(fā)出的提取聚集結(jié)果請(qǐng)求,在收到請(qǐng)求后,首先在緩存的聚集結(jié)果中搜索,如果請(qǐng)求結(jié)果存在,或緩存中現(xiàn)有結(jié)果能夠經(jīng)過(guò)計(jì)算后生成請(qǐng)求對(duì)應(yīng)的結(jié)果,就能夠直接從緩存中提取或者計(jì)算生成結(jié)果;如果不能通過(guò)緩存提供請(qǐng)求結(jié)果,則將請(qǐng)求轉(zhuǎn)化為SQL查詢,提交給存儲(chǔ)層處理;星狀層獲得存儲(chǔ)層的計(jì)算結(jié)果后,再將結(jié)果加入緩存;
存儲(chǔ)層,負(fù)責(zé)接收星狀層發(fā)出的SQL語(yǔ)句,在數(shù)據(jù)倉(cāng)庫(kù)中執(zhí)行,并將結(jié)果返回給星狀層;存儲(chǔ)層作為永久存儲(chǔ),以數(shù)據(jù)倉(cāng)庫(kù)為基礎(chǔ),擁有全部的業(yè)務(wù)數(shù)據(jù);作為高速緩存的NoSQL內(nèi)存數(shù)據(jù)庫(kù),則存儲(chǔ)著常用的社保業(yè)務(wù)數(shù)據(jù)。
所述存儲(chǔ)層使用了嵌套型的列式存儲(chǔ)方式,構(gòu)造了一個(gè)基于列的索引樹,能夠?qū)⑼涣械闹貜?fù)數(shù)據(jù)進(jìn)行壓縮,查詢時(shí)讀取以壓縮格式存儲(chǔ)的每一列數(shù)據(jù),并消耗CPU解壓數(shù)據(jù);列式查詢對(duì)于重復(fù)率高的數(shù)據(jù)列能夠快速跳過(guò),對(duì)于海量社保數(shù)據(jù)的查詢能夠大幅減少查詢消耗時(shí)間;通過(guò)對(duì)社保海量數(shù)據(jù)按關(guān)鍵列進(jìn)行分區(qū)存儲(chǔ)的優(yōu)化方法,還能夠進(jìn)一步提高查詢命中率,增強(qiáng)海量數(shù)據(jù)查詢的實(shí)時(shí)性。
本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)與有益效果:
1、本發(fā)明結(jié)合多種數(shù)據(jù)分析模型的優(yōu)點(diǎn),提出一種基于分布式數(shù)據(jù)倉(cāng)庫(kù)的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)。該系統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)通過(guò)分布式文件系統(tǒng)實(shí)現(xiàn),而分布式文件系統(tǒng)集群由云計(jì)算平臺(tái)統(tǒng)一管理,實(shí)現(xiàn)資源的負(fù)載均衡。系統(tǒng)通過(guò)功能上的多層分發(fā),實(shí)現(xiàn)了對(duì)存儲(chǔ)海量數(shù)據(jù)的分布式數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)一查詢接口,以類似JDBC的查詢方式,完成對(duì)于數(shù)據(jù)立方體多個(gè)維度的操作。
2、本發(fā)明使用了嵌套型的列式存儲(chǔ)方式,嵌套數(shù)據(jù)類型的特點(diǎn)是一個(gè)記錄中的列除了可以是原語(yǔ)類型以外,還可以是List,Map,Set這樣的復(fù)雜類型。在行式存儲(chǔ)中一行的多列是連續(xù)的寫在一起的,在列式存儲(chǔ)中數(shù)據(jù)按列分開存儲(chǔ),將數(shù)據(jù)劃分成一個(gè)個(gè)的數(shù)據(jù)文件的行組,查詢時(shí)讀取以壓縮格式存儲(chǔ)的每一列數(shù)據(jù),并消耗CPU解壓數(shù)據(jù)。列式存儲(chǔ)方式十分適用于經(jīng)常對(duì)少數(shù)列進(jìn)行批量查詢OLAP分析應(yīng)用,當(dāng)面對(duì)海量數(shù)據(jù)時(shí),列式查詢可以極大減少查詢需要掃描的數(shù)據(jù)量,從而提升查詢效率。該技術(shù)應(yīng)用在社保大數(shù)據(jù)平臺(tái)當(dāng)中的結(jié)果表明它能夠使多維數(shù)據(jù)統(tǒng)計(jì)分析應(yīng)用快速響應(yīng)海量社保數(shù)據(jù)的查詢請(qǐng)求,得到實(shí)時(shí)多維分析結(jié)果。
附圖說(shuō)明
圖1為社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)結(jié)構(gòu)圖。
圖2為社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)層次圖。
圖3為引入了內(nèi)存數(shù)據(jù)庫(kù)的社保業(yè)務(wù)數(shù)據(jù)庫(kù)結(jié)構(gòu)圖。
圖4為行、列存儲(chǔ)方式查詢測(cè)試時(shí)間對(duì)比圖。
圖5為社保大數(shù)據(jù)公共服務(wù)平臺(tái)系統(tǒng)架構(gòu)圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如圖1和圖2所示,本實(shí)施例所述的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng),主要是基于分布式數(shù)據(jù)倉(cāng)庫(kù)(作為社保數(shù)據(jù)統(tǒng)計(jì)分析的存儲(chǔ)空間),該系統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)是通過(guò)分布式文件系統(tǒng)實(shí)現(xiàn),而分布式文件系統(tǒng)集群由云計(jì)算平臺(tái)統(tǒng)一管理,實(shí)現(xiàn)資源的負(fù)載均衡。系統(tǒng)通過(guò)功能上的多層分發(fā),實(shí)現(xiàn)了對(duì)存儲(chǔ)海量數(shù)據(jù)的分布式數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)一查詢接口,以類似JDBC的查詢方式,完成對(duì)于數(shù)據(jù)立方體多個(gè)維度的操作。該社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)在邏輯上從上至下劃分為4層:
展示層,是用戶與多維分析服務(wù)器進(jìn)行交互的層次,將分析計(jì)算的結(jié)果展現(xiàn)給用戶。展示層主要通過(guò)前端工具提供服務(wù),通過(guò)查詢接口得到多維分析結(jié)果。本發(fā)明實(shí)現(xiàn)的查詢接口,在建立連接時(shí),可以像注冊(cè)JDBC驅(qū)動(dòng)一樣注冊(cè)連接驅(qū)動(dòng),它通過(guò)通用接口Connection加載指定的OLAP驅(qū)動(dòng),隨后獲取連接。獲取連接后,通過(guò)創(chuàng)建聲明對(duì)象執(zhí)行查詢得到結(jié)果。
維度層,主要對(duì)MDX語(yǔ)句進(jìn)行解析,并使用解析后的語(yǔ)句執(zhí)行查詢計(jì)算。一個(gè)MDX查詢?cè)诘玫阶罱K結(jié)果之前,往往需要經(jīng)過(guò)數(shù)次迭代求值計(jì)算,并對(duì)每次的計(jì)算結(jié)果匯總處理。維度層首先計(jì)算結(jié)果集中每個(gè)軸包含的成員列表,再計(jì)算需要聚集計(jì)算的單元格,最后將聚集計(jì)算請(qǐng)求批量提交到星狀層。MDX查詢結(jié)果可以在維度層中緩存,如果用戶需要對(duì)查詢結(jié)果作進(jìn)一步操作,系統(tǒng)就不需要重新處理完整的查詢請(qǐng)求,可以直接在維度層中緩存的查詢結(jié)果基礎(chǔ)上進(jìn)行處理,得到新的查詢結(jié)果,進(jìn)而大大提高解析查詢的效率。
星狀層,主要對(duì)聚集結(jié)果的緩存進(jìn)行管理。星狀層處理維度層發(fā)出的提取聚集結(jié)果請(qǐng)求,在收到請(qǐng)求后,星狀層首先在緩存的聚集結(jié)果中搜索,如果請(qǐng)求結(jié)果存在,或緩存中現(xiàn)有結(jié)果可以經(jīng)過(guò)計(jì)算后生成請(qǐng)求對(duì)應(yīng)的結(jié)果,就可以直接從緩存中提取或者計(jì)算生成結(jié)果。如果不能通過(guò)緩存提供請(qǐng)求結(jié)果,則將請(qǐng)求轉(zhuǎn)化為SQL查詢,提交給存儲(chǔ)層處理。星狀層獲得存儲(chǔ)層的計(jì)算結(jié)果后,再將結(jié)果加入緩存。
存儲(chǔ)層,負(fù)責(zé)接收星狀層發(fā)出的SQL語(yǔ)句,在數(shù)據(jù)倉(cāng)庫(kù)中執(zhí)行,并將結(jié)果返回給星狀層。存儲(chǔ)層作為永久存儲(chǔ),以數(shù)據(jù)倉(cāng)庫(kù)為基礎(chǔ),擁有全部的業(yè)務(wù)數(shù)據(jù);作為高速緩存的NoSQL內(nèi)存數(shù)據(jù)庫(kù),則存儲(chǔ)著常用的社保業(yè)務(wù)數(shù)據(jù)。
傳統(tǒng)的分布式文件系統(tǒng),采用批處理方式執(zhí)行任務(wù),實(shí)時(shí)性能表現(xiàn)不夠好。本發(fā)明系統(tǒng)針對(duì)此種弊端,其存儲(chǔ)層采取多級(jí)列式存儲(chǔ)方式,達(dá)到優(yōu)化數(shù)據(jù)查詢分析效率的目的。引入了內(nèi)存數(shù)據(jù)庫(kù)的社保業(yè)務(wù)數(shù)據(jù)庫(kù)結(jié)構(gòu)在原有磁盤數(shù)據(jù)庫(kù)之上,增加了一層內(nèi)存數(shù)據(jù)庫(kù),將需要快速訪問的表由磁盤數(shù)據(jù)庫(kù)緩存到內(nèi)存數(shù)據(jù)庫(kù)。內(nèi)存數(shù)據(jù)庫(kù)承擔(dān)日常的五險(xiǎn)一金業(yè)務(wù)處理工作,聯(lián)機(jī)分析處理應(yīng)用使用JDBC進(jìn)行訪問。磁盤數(shù)據(jù)庫(kù)只完成少量工作,并兼具容災(zāi)功能,內(nèi)存數(shù)據(jù)庫(kù)和磁盤數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)同步,實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫(kù)的一致性。同時(shí),為保證高可用性,內(nèi)存數(shù)據(jù)庫(kù)以雙機(jī)熱備方式進(jìn)行工作。附圖3是引入了內(nèi)存數(shù)據(jù)庫(kù)的社保業(yè)務(wù)數(shù)據(jù)庫(kù)結(jié)構(gòu)圖。
列式存儲(chǔ)相對(duì)于行式存儲(chǔ),具有如下優(yōu)勢(shì):
1、列式存儲(chǔ)可以跳過(guò)大量不符合篩選條件的數(shù)據(jù),只讀取需要的數(shù)據(jù),降低IO數(shù)據(jù)量。
2、壓縮編碼可以減少表占用的空間,由于同一列的數(shù)據(jù)類型一致,可以使用壓縮編碼進(jìn)一步節(jié)省空間。
3、列式存儲(chǔ)支持向量運(yùn)算,能獲得更好的掃描性能。
關(guān)系型數(shù)據(jù)的列式存儲(chǔ),可以將數(shù)據(jù)按照列直接排列,不需要引入其他概念,也不會(huì)造成數(shù)據(jù)丟失。而本發(fā)明系統(tǒng)具體采用的是另一種存儲(chǔ)方式——嵌套型的列式存儲(chǔ)。嵌套數(shù)據(jù)類型的特點(diǎn)是一個(gè)記錄中的列除了可以是原語(yǔ)類型以外,還可以是List,Map,Set這樣的復(fù)雜類型。在行式存儲(chǔ)中一行的多列是連續(xù)的寫在一起的,在列式存儲(chǔ)中數(shù)據(jù)按列分開存儲(chǔ),將數(shù)據(jù)劃分成一個(gè)個(gè)的數(shù)據(jù)文件的行組,查詢時(shí)讀取以壓縮格式存儲(chǔ)的每一列數(shù)據(jù),并消耗CPU解壓數(shù)據(jù)。列式存儲(chǔ)方式十分適用于經(jīng)常對(duì)少數(shù)列進(jìn)行批量查詢OLAP分析應(yīng)用,當(dāng)面對(duì)海量數(shù)據(jù)時(shí),列式查詢可以極大減少查詢需要掃描的數(shù)據(jù)量,從而提升查詢效率。
采用列存儲(chǔ)格式存儲(chǔ)數(shù)據(jù),對(duì)于OLAP常見的在少數(shù)幾個(gè)列進(jìn)行聚集運(yùn)算的特性,列存儲(chǔ)格式可以通過(guò)關(guān)鍵列的篩選,極大減少需要掃描的數(shù)據(jù)量,從而提升查詢效率。本發(fā)明列式存儲(chǔ)與傳統(tǒng)行式存儲(chǔ)查詢效率對(duì)比如附圖4所示,測(cè)試數(shù)據(jù)為3000w條記錄,分別對(duì)不同數(shù)量的字段進(jìn)行max()聚集函數(shù)操作。字段數(shù)量的變化,對(duì)于行存儲(chǔ)格式影響較小,所消耗時(shí)間基本保持穩(wěn)定;而對(duì)于列存儲(chǔ)格式,查詢中涉及的字段越多,耗費(fèi)的時(shí)間也越大。這也印證了前文描述的行、列存儲(chǔ)的設(shè)計(jì)思想。在查詢的字段達(dá)到50個(gè)時(shí),列存儲(chǔ)方式的耗時(shí)上升到了15秒左右,而行存儲(chǔ)方式仍然維持在30秒左右??紤]到本系統(tǒng)查詢?cè)O(shè)計(jì)的字段一般在10個(gè)甚至5個(gè)以內(nèi),列存儲(chǔ)方式在查詢性能上帶來(lái)的提升是顯著的。
為了測(cè)試本實(shí)施例上述的社保數(shù)據(jù)聯(lián)機(jī)分析處理系統(tǒng)的應(yīng)用效果,我們將這一技術(shù)應(yīng)用到某社保大數(shù)據(jù)平臺(tái)當(dāng)中。該社保大數(shù)據(jù)公共服務(wù)平臺(tái)的系統(tǒng)架構(gòu)圖如附圖5所示。該系統(tǒng)上實(shí)現(xiàn)的聯(lián)機(jī)分析處理系統(tǒng)主要包括四部分:一是負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的列式分布式文件系統(tǒng);二是負(fù)責(zé)響應(yīng)請(qǐng)求的Web服務(wù)器;三是負(fù)責(zé)構(gòu)建查詢?nèi)蝿?wù)的查詢分析服務(wù)器;四是實(shí)際訪問數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)處理服務(wù)器。以上服務(wù)器均建立在云存儲(chǔ)平臺(tái),通過(guò)云平臺(tái)實(shí)現(xiàn)資源的負(fù)載均衡。
其中Web服務(wù)器負(fù)責(zé)接收響應(yīng)用戶提交的請(qǐng)求以及用戶界面的交互。例如用戶提交一個(gè)OLAP查詢分析請(qǐng)求到服務(wù)器,Web服務(wù)器解析請(qǐng)求并轉(zhuǎn)發(fā)到查詢分析服務(wù)器,獲取返回的結(jié)果,并以圖表報(bào)表的形式顯示到前端頁(yè)面。查詢分析服務(wù)器負(fù)責(zé)響應(yīng)執(zhí)行多維查詢分析的任務(wù),通過(guò)運(yùn)行OLAP引擎得到查詢結(jié)果,并將結(jié)果集返回。數(shù)據(jù)處理服務(wù)器負(fù)責(zé)響應(yīng)執(zhí)行數(shù)據(jù)預(yù)處理、實(shí)際訪問操作數(shù)據(jù)倉(cāng)庫(kù)的任務(wù),對(duì)于任何涉及到數(shù)據(jù)倉(cāng)庫(kù)的訪問操作,均由數(shù)據(jù)處理服務(wù)器執(zhí)行并返回結(jié)果。用戶在支持主流瀏覽器的終端上登陸網(wǎng)站,即可開始使用本系統(tǒng)。
對(duì)于聯(lián)機(jī)分析處理的性能考量,主要從執(zhí)行查詢分析的效率上體現(xiàn)。為驗(yàn)證OLAP查詢性能,在列式分布式文件系統(tǒng)上按照查詢維度的劃分,分別進(jìn)行均值、計(jì)數(shù)、求和三個(gè)最常見的聚集計(jì)算的點(diǎn)查詢和范圍查詢測(cè)試。本次測(cè)試共五組測(cè)試數(shù)據(jù)集,大小依次為1000萬(wàn)條、2000萬(wàn)條、4000萬(wàn)條、8000萬(wàn)條、1億6000萬(wàn)條數(shù)據(jù),以下實(shí)驗(yàn)都是基于這五組數(shù)據(jù)測(cè)試得出的結(jié)果。
可以看到,對(duì)單一維度點(diǎn)查詢,三種聚集函數(shù)的表現(xiàn)基本一致,在數(shù)據(jù)量達(dá)到上億條時(shí),仍能在38秒內(nèi)完成查詢;對(duì)單一維度范圍查詢,相對(duì)單點(diǎn)查詢耗時(shí)稍微多一些,在數(shù)據(jù)量達(dá)到上億條時(shí),響應(yīng)時(shí)間在51秒內(nèi);對(duì)二維求交查詢,相對(duì)一維查詢耗時(shí)更多,但在數(shù)據(jù)量達(dá)到上億條時(shí),仍能在80秒內(nèi)完成查詢。
以上所述實(shí)施例只為本發(fā)明之較佳實(shí)施例,并非以此限制本發(fā)明的實(shí)施范圍,故凡依本發(fā)明之形狀、原理所作的變化,均應(yīng)涵蓋在本發(fā)明的保護(hù)范圍內(nèi)。