本發(fā)明涉及數(shù)據(jù)可視化領(lǐng)域,尤其是網(wǎng)絡(luò)大數(shù)據(jù)快速查詢(xún)與可視化呈現(xiàn)。
背景技術(shù):
::隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計(jì)算等信息技術(shù)的迅猛發(fā)展,信息技術(shù)與人類(lèi)世界政治、經(jīng)濟(jì)、軍事、科研、生活等方方面面不斷交叉融合,催生了超越以往任何年代的巨量數(shù)據(jù),因而信息社會(huì)已經(jīng)邁入大數(shù)據(jù)(bigdata)時(shí)代。遍布世界各地的各種智能移動(dòng)設(shè)備、傳感器、電子商務(wù)網(wǎng)站、社交網(wǎng)絡(luò)每時(shí)每刻都在生成類(lèi)型各異的數(shù)據(jù)。根據(jù)國(guó)際數(shù)據(jù)公司(idc)的《數(shù)據(jù)宇宙》報(bào)告顯示:2008年全球數(shù)據(jù)量為0.5zb,2010年為1.2zb,人類(lèi)正式進(jìn)入zb時(shí)代。更為驚人的是,2020年以前全球數(shù)據(jù)量仍將保持每年40%多的高速增長(zhǎng),大約每?jī)赡昃头槐?,這與it界人盡皆知的摩爾定律極為相似。大數(shù)據(jù)具有4v特征,即:體量巨大(volume)、類(lèi)型繁多(variety)、時(shí)效性高(velocity)以及價(jià)值高密度低(value),給人們帶來(lái)了新的機(jī)遇與挑戰(zhàn)?!秐ature》于2008年出版了大數(shù)據(jù)專(zhuān)刊“bigdata”,專(zhuān)門(mén)討論了巨量數(shù)據(jù)對(duì)于互聯(lián)網(wǎng)、經(jīng)濟(jì)、環(huán)境以及生物等各方面的影響與挑戰(zhàn)?!秙cience》也于2011年出版了如何應(yīng)對(duì)數(shù)據(jù)洪流(datadeluge)的專(zhuān)刊“dealingwithdata”,指出如何利用寶貴的數(shù)據(jù)資產(chǎn)推動(dòng)人類(lèi)社會(huì)的發(fā)展。如今,大數(shù)據(jù)已成為新興的學(xué)術(shù)研究熱點(diǎn),并被認(rèn)為是繼云計(jì)算和物聯(lián)網(wǎng)之后又一個(gè)具有革命性的信息技術(shù)。其中,網(wǎng)絡(luò)大數(shù)據(jù)是指“人、機(jī)、物”三元世界在網(wǎng)絡(luò)空間(cyberspace)中彼此交互與融合所產(chǎn)生并在互聯(lián)網(wǎng)上可獲得的大數(shù)據(jù)。網(wǎng)絡(luò)大數(shù)據(jù)往往呈現(xiàn)出突發(fā)涌現(xiàn)等非線性狀態(tài)演變現(xiàn)象,因此難以對(duì)其變化進(jìn)行有效評(píng)估和預(yù)測(cè),另一方面,網(wǎng)絡(luò)大數(shù)據(jù)常常以數(shù)據(jù)流的形式動(dòng)態(tài)、快速地產(chǎn)生,具有很強(qiáng)的時(shí)效性這些特征都對(duì)現(xiàn)有的互聯(lián)網(wǎng)計(jì)算平臺(tái)提出了挑戰(zhàn)。網(wǎng)絡(luò)大數(shù)據(jù)是一種復(fù)雜數(shù)據(jù),包含結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)(如xml文檔、圖片、docx文件等)等數(shù)據(jù)類(lèi)型??梢暬夹g(shù)為處理復(fù)雜數(shù)據(jù)而生,它將數(shù)據(jù)映射為視覺(jué)符號(hào),允許用戶(hù)與數(shù)據(jù)進(jìn)行快速互動(dòng),幫助人們獲取大數(shù)據(jù)中蘊(yùn)含的信息,以便更好地驗(yàn)證假設(shè)和發(fā)現(xiàn)內(nèi)在聯(lián)系。可視化技術(shù)為人們提供了理解高維度、多層次、時(shí)空、動(dòng)態(tài)、關(guān)系等復(fù)雜數(shù)據(jù)的手段,研究人員已經(jīng)提出很多有效的可視化研究方法,如采用樹(shù)結(jié)構(gòu)、樹(shù)圖、彈性層次圖、網(wǎng)絡(luò)結(jié)構(gòu)圖等來(lái)直觀顯示龐大的數(shù)據(jù)結(jié)構(gòu),使用themeriver、tiara等對(duì)文本數(shù)據(jù)的可視化進(jìn)行研究,運(yùn)用平行坐標(biāo)法(parallelcoordinates)、放射坐標(biāo)法(radviz)和星形坐標(biāo)法(starcoordinates)等對(duì)高維數(shù)據(jù)進(jìn)行處理。這些可視化方法雖然在一定程度上解決了部分復(fù)雜數(shù)據(jù)的可視化問(wèn)題,但還無(wú)法很好通過(guò)交互式界面來(lái)輔助用戶(hù)對(duì)大規(guī)模復(fù)雜數(shù)據(jù)集進(jìn)行分析推理的科學(xué)與技術(shù),這也為互聯(lián)網(wǎng)環(huán)境下的網(wǎng)絡(luò)大數(shù)據(jù)的有效分析、理解和管理造成了難度。大數(shù)據(jù)可視化是指在大數(shù)據(jù)自動(dòng)分析挖掘方法的同時(shí),利用支持信息可視化的用戶(hù)界面以及支持分析過(guò)程的人機(jī)交互方式與技術(shù),來(lái)有效融合計(jì)算機(jī)的計(jì)算能力和人的認(rèn)知能力,以獲得對(duì)于大規(guī)模復(fù)雜數(shù)據(jù)集的洞察力。不同于傳統(tǒng)的信息可視化行業(yè),大數(shù)據(jù)可視分析面臨最大的一個(gè)挑戰(zhàn)就是規(guī)模,即如何提出新的可視化方法能夠幫助人們分析大規(guī)模、高維度、多來(lái)源、動(dòng)態(tài)演化的信息,并輔助作出實(shí)時(shí)的決策,成為了這個(gè)領(lǐng)域最大的挑戰(zhàn)。國(guó)內(nèi)外許多學(xué)者對(duì)數(shù)據(jù)可視化進(jìn)行了大量的相關(guān)研究,例如中國(guó)專(zhuān)利公開(kāi)的一種時(shí)態(tài)檢測(cè)數(shù)據(jù)快速可視化系統(tǒng),專(zhuān)利號(hào)為201510737077.1,主要建立非關(guān)系型數(shù)據(jù)庫(kù)及緩存數(shù)據(jù)庫(kù),通過(guò)緩存數(shù)據(jù)結(jié)構(gòu)優(yōu)化可以加快數(shù)據(jù)的可視化。但是在數(shù)據(jù)復(fù)雜而又龐大的大數(shù)據(jù)領(lǐng)域中收效甚微。武漢大學(xué)支曉棟于2010年提出采用四叉樹(shù)結(jié)構(gòu)的文件管理方式對(duì)機(jī)載激光雷達(dá)數(shù)據(jù)做出了較好的可視化效果,但是只考慮了單文件數(shù)據(jù),沒(méi)有考慮海量大規(guī)模數(shù)據(jù)的組織和可視化。東北電力大學(xué)的黃靖媛于2016年提出的基于三維場(chǎng)景的電力大數(shù)據(jù)快速可視化分析模型采取對(duì)輸入的時(shí)間序列數(shù)據(jù)進(jìn)行并行的快速神經(jīng)網(wǎng)絡(luò)訓(xùn)練;將bp神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果集與三維虛擬現(xiàn)實(shí)場(chǎng)景集成,使用戶(hù)能夠在地理空間中快速定位,但是處理的數(shù)據(jù)比較單一,不能很好的處理多源異構(gòu)的網(wǎng)絡(luò)大數(shù)據(jù)。工業(yè)領(lǐng)域中bentley公司的pointools能夠針對(duì)地面激光掃描,快速構(gòu)建三維lod模型,實(shí)現(xiàn)點(diǎn)云的遮擋計(jì)算,可視化效果非常好,但是所有的點(diǎn)加載在內(nèi)存中進(jìn)行顯示,難以適用海量的機(jī)載激光雷達(dá)點(diǎn)云數(shù)據(jù)。武漢大學(xué)測(cè)繪遙感信息工程國(guó)家重點(diǎn)實(shí)驗(yàn)室和吉奧公司聯(lián)合研發(fā)的開(kāi)放式地理信息集成共享虛擬地球平臺(tái)geoglobe采用高效的數(shù)據(jù)壓縮、漸進(jìn)傳輸與實(shí)時(shí)可視化方法,達(dá)到有限網(wǎng)絡(luò)帶寬條件下多源空間信息的最優(yōu)可視化效果,但是該平臺(tái)作用領(lǐng)域的數(shù)據(jù)具有一定的地理特性,并不能很好的作用于網(wǎng)絡(luò)大數(shù)據(jù)。技術(shù)實(shí)現(xiàn)要素:為了克服現(xiàn)有的大數(shù)據(jù)可視化方法的伸縮性較低、無(wú)法適用于海量數(shù)據(jù)的不足,本發(fā)明提出了一種基于物化緩存的網(wǎng)絡(luò)大數(shù)據(jù)可視化方法,將可視化結(jié)果進(jìn)行物化緩存,并讓用戶(hù)方便快速地獲取分布在網(wǎng)絡(luò)中的大數(shù)據(jù),并加以可視化呈現(xiàn)。該方法具有高伸縮性,支持高訪問(wèn)量,能對(duì)海量數(shù)據(jù)進(jìn)行快速查詢(xún)與可視化展示。為了解決上述技術(shù)問(wèn)題本發(fā)明所采用的技術(shù)方案是:一種基于物化緩存的網(wǎng)絡(luò)大數(shù)據(jù)可視化方法,所述可視化方法包括以下步驟:第一步、建立一個(gè)動(dòng)態(tài)演化模型,分為大數(shù)據(jù)用戶(hù)層、大數(shù)據(jù)可視化層及大數(shù)據(jù)源層;1.1、大數(shù)據(jù)用戶(hù)層:由網(wǎng)絡(luò)上具有不同大數(shù)據(jù)可視化需求的用戶(hù)構(gòu)成,用戶(hù)通過(guò)訪問(wèn)大數(shù)據(jù)可視化層來(lái)獲取感興趣的大數(shù)據(jù)信息,用戶(hù)層不依賴(lài)具體的技術(shù)架構(gòu),并可在可視化層中定制不同的視圖來(lái)分析數(shù)據(jù)的多個(gè)維度;1.2、大數(shù)據(jù)可視化層:基于云平臺(tái)架構(gòu),提供一種統(tǒng)一的標(biāo)準(zhǔn)讓用戶(hù)來(lái)查詢(xún)不同的大數(shù)據(jù)源;可視化層接受大數(shù)據(jù)用戶(hù)的數(shù)據(jù)視圖查詢(xún)請(qǐng)求后,判斷是否存在物化緩存,向大數(shù)據(jù)源發(fā)出服務(wù)請(qǐng)求然后將返回的結(jié)果集進(jìn)行可視化效果展示給用戶(hù);或者直接查詢(xún)系統(tǒng)的物化緩存,將結(jié)果進(jìn)行可視化分析響應(yīng)給用戶(hù);可視化層包括精靈線程池模塊、物化緩存模塊和可視化分析模塊。精靈線程池etp(elfthreadpool)模塊:用于負(fù)責(zé)線程的分配,系統(tǒng)在初始化階段根據(jù)一定的映射規(guī)則解析每個(gè)數(shù)據(jù)視圖的相關(guān)信息構(gòu)建一個(gè)資源配置文件cp(cacheprofiles),并將此文件映射于內(nèi)存中生成緩存配置表cpt(cacheprofilestable),cpt根據(jù)物化緩存選擇算法和物化緩存存儲(chǔ)算法將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息生成物化緩存視圖索引表vit(visualindextable),vit基于物化緩存更新算法將數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,由線程分配機(jī)制根據(jù)et(elfthread)數(shù)據(jù)資源遷移算法分配合適的線程向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求;物化緩存模塊:用于預(yù)先緩存大數(shù)據(jù)源對(duì)相應(yīng)查詢(xún)計(jì)算的結(jié)果,將該數(shù)據(jù)視圖的數(shù)據(jù)結(jié)果集根據(jù)物化緩存存儲(chǔ)算法采取內(nèi)存存儲(chǔ)或者持久化存儲(chǔ)方式,用戶(hù)發(fā)出該視圖的請(qǐng)求時(shí),不必向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求,直接用緩存的數(shù)據(jù)結(jié)果集進(jìn)行可視化分析響應(yīng)給用戶(hù);可視化分析模塊:用于負(fù)責(zé)將用戶(hù)訪問(wèn)數(shù)據(jù)視圖后返回的數(shù)據(jù)集進(jìn)行可視化分析,將大數(shù)據(jù)以直觀的可視化的圖形形式展示給用戶(hù);1.3、大數(shù)據(jù)源層:指的是在網(wǎng)絡(luò)上的大數(shù)據(jù)供應(yīng)商,采用分布式架構(gòu)存儲(chǔ)海量數(shù)據(jù),有效支持大數(shù)據(jù)的處理需求,大數(shù)據(jù)源層一般提供大數(shù)據(jù)服務(wù),即將數(shù)據(jù)以服務(wù)的方式提供給可視化層;第二步、基于所述的模型提出的基于物化緩存的網(wǎng)絡(luò)大數(shù)據(jù)可視化方法,過(guò)程如下:步驟2.1:精靈線程階段在模型初始化階段,大數(shù)據(jù)可視化層通過(guò)web服務(wù)器會(huì)激活精靈線程池etp,etp流程為:2.1.1初始化時(shí)系統(tǒng)基于緩存選擇算法與緩存存儲(chǔ)算法將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息生成物化緩存視圖索引表vit,系統(tǒng)基于物化緩存更新算法對(duì)vit表所有數(shù)據(jù)視圖的累積熱度進(jìn)行排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列;2.1.2線程分配機(jī)制根據(jù)et數(shù)據(jù)資源遷移算法合理的選擇物化緩存執(zhí)行隊(duì)列的數(shù)據(jù)視圖并提取該數(shù)據(jù)視圖的url,入池分配線程,etp會(huì)創(chuàng)建線程(et)來(lái)模擬大數(shù)據(jù)用戶(hù)訪問(wèn)該url,對(duì)該url對(duì)應(yīng)的數(shù)據(jù)源發(fā)出請(qǐng)求訪問(wèn)(調(diào)用大數(shù)據(jù)源層的服務(wù)或直接訪問(wèn)對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)),et在獲取數(shù)據(jù)后將數(shù)據(jù)寫(xiě)入緩存,其后的具體操作如步驟2.2.2所示;2.1.3etp將為物化緩存執(zhí)行隊(duì)列中的數(shù)據(jù)視圖分配線程,提出了et數(shù)據(jù)資源遷移算法,通過(guò)線程分配協(xié)作,來(lái)協(xié)調(diào)大數(shù)據(jù)可視化層與多個(gè)大數(shù)據(jù)源間的數(shù)據(jù)資源遷移。進(jìn)一步,所述步驟2.1.3中,所述et數(shù)據(jù)資源遷移算法在線程調(diào)度前,系統(tǒng)對(duì)物化緩存執(zhí)行隊(duì)列中每個(gè)數(shù)據(jù)視圖進(jìn)行物化緩存的優(yōu)先級(jí)排列,優(yōu)先級(jí)高的數(shù)據(jù)視圖先分配線程進(jìn)行物化緩存,其余的進(jìn)入等待;步驟如下:步驟(2.1.3.1)線程分配機(jī)制記錄物化緩存執(zhí)行隊(duì)列里數(shù)據(jù)視圖i的訪問(wèn)次數(shù)counti,并計(jì)算該數(shù)據(jù)視圖的用戶(hù)渴望度其中t表示當(dāng)前時(shí)間;步驟(2.1.3.2)根據(jù)數(shù)據(jù)視圖進(jìn)入物化緩存執(zhí)行隊(duì)列時(shí)間α(i)與當(dāng)前時(shí)間t,計(jì)算該數(shù)據(jù)視圖在物化緩存執(zhí)行隊(duì)列等待的時(shí)間t-α(i);步驟(2.1.3.3)估算該數(shù)據(jù)視圖i進(jìn)行物化緩存所需要的時(shí)間sti;步驟(2.1.3.4)計(jì)算該數(shù)據(jù)視圖i的優(yōu)先級(jí)priorityi,計(jì)算公式如下:其中ε1,ε2為權(quán)重系數(shù),根據(jù)服務(wù)的側(cè)重點(diǎn)不同設(shè)置不同的權(quán)重參數(shù)。為了避免早期的緩存請(qǐng)求進(jìn)入無(wú)限等待狀態(tài),將t加入優(yōu)先級(jí)計(jì)算,這樣早期請(qǐng)求進(jìn)行物化緩存的數(shù)據(jù)視圖隨著時(shí)間增加優(yōu)先級(jí)也會(huì)相對(duì)增加;步驟(2.1.3.5)根據(jù)優(yōu)先級(jí)對(duì)物化緩存執(zhí)行隊(duì)列里的數(shù)據(jù)視圖排序,選擇前x的數(shù)據(jù)視圖分配線程進(jìn)行物化緩存過(guò)程,x為精靈線程池的線程數(shù)量,可以進(jìn)行動(dòng)態(tài)調(diào)節(jié)。再進(jìn)一步,所述步驟(2.1.3.5)中,根據(jù)系統(tǒng)負(fù)載與緩存等待時(shí)間動(dòng)態(tài)調(diào)節(jié)線程池內(nèi)線程數(shù)量的機(jī)制,綜合數(shù)據(jù)視圖緩存的時(shí)間與系統(tǒng)cpu、內(nèi)存的負(fù)載能力;通過(guò)數(shù)據(jù)視圖的平均緩存時(shí)間分析當(dāng)前線程池需要調(diào)整的方向,通過(guò)cpu、內(nèi)存的使用率得出是否需要增加或者減少線程數(shù)量,步驟如下:步驟(2.1.3.5.1)線程池初始化:創(chuàng)建守護(hù)線程監(jiān)聽(tīng)當(dāng)前cpu的使用率和內(nèi)存使用率,周期性的檢測(cè)線程池中所有物化緩存的平均等待時(shí)間wt(waittime),并定義以下參數(shù):線程動(dòng)態(tài)調(diào)節(jié)時(shí)間對(duì)比率cr(contrastratio),cpu的負(fù)載上限clmax(cpuloadmax)與cpu的負(fù)載下限clmin(cpuloadmin),內(nèi)存的負(fù)載上限mlmax(memoryloadmax)與cpu的負(fù)載下限mlmin(memoryloadmin),線程每次動(dòng)態(tài)調(diào)節(jié)的數(shù)量m;步驟(2.1.3.5.2)線程池將此周期的物化緩存平均等待時(shí)間wtk與上一個(gè)周期計(jì)算的物化緩存平均等待時(shí)間wtk-1進(jìn)行比較,如果wtk與wtk-1的差異比值大于初始設(shè)定的線程動(dòng)態(tài)調(diào)節(jié)時(shí)間對(duì)比率cr,當(dāng)wtk大于wtk-1時(shí)轉(zhuǎn)步驟(2.1.3.5.3)。當(dāng)wtk小于wtk-1時(shí)轉(zhuǎn)步驟(2.1.3.5.4);步驟(2.1.3.5.3)如果wtk-2大于wtk-1,并且cpu的使用率大于clmax或者內(nèi)存的使用率大于mlmax,則減少線程池內(nèi)線程的數(shù)量,減少單位為m;如果wtk-2小于wtk-1,并且cpu的使用率小于clmin并且內(nèi)存的使用率小于mlmin,則增加線程池內(nèi)線程的數(shù)量,增加單位為m。步驟(2.1.3.5.4)如果wtk-1小于wtk-2,則直接減少線程池內(nèi)線程的數(shù)量,減少單位為m。步驟2.2:物化緩存階段當(dāng)大數(shù)據(jù)用戶(hù)提交查詢(xún)請(qǐng)求,索取數(shù)據(jù)視圖時(shí),系統(tǒng)會(huì)自動(dòng)判斷能否通過(guò)查詢(xún)物化緩存來(lái)得到結(jié)果,如果可以,則避免了向大數(shù)據(jù)源發(fā)出相關(guān)計(jì)算請(qǐng)求,直接從已經(jīng)計(jì)算好的物化緩存中讀取數(shù)據(jù),可視化執(zhí)行模塊會(huì)提取物化緩存數(shù)據(jù)并將緩存數(shù)據(jù)注入數(shù)據(jù)視圖中,來(lái)直接響應(yīng)用戶(hù)查詢(xún);否則,系統(tǒng)需要重寫(xiě)用戶(hù)查詢(xún)并分發(fā)查詢(xún)到大數(shù)據(jù)源層中檢索數(shù)據(jù),在數(shù)據(jù)檢索到后,回傳大數(shù)據(jù)可視化層并由可視化執(zhí)行模塊處理,最終反饋用戶(hù)。基于物化緩存的數(shù)據(jù)視圖查詢(xún)的流程如下:2.2.1大數(shù)據(jù)用戶(hù)提交數(shù)據(jù)可視化查詢(xún)請(qǐng)求;2.2.2在大數(shù)據(jù)可視化層,每一個(gè)數(shù)據(jù)視圖在初始化階段都被賦予一個(gè)唯一的url資源,并記錄了數(shù)據(jù)可視化視圖的相關(guān)信息,內(nèi)容有數(shù)據(jù)視圖的類(lèi)型vvtype、數(shù)據(jù)視圖的標(biāo)題vvtitle、數(shù)據(jù)視圖大數(shù)據(jù)源請(qǐng)求的ip地址dsip,作為資源配置文件cp存儲(chǔ)于持久化層。系統(tǒng)初始化階段將其映射到內(nèi)存的緩存配置表cpt中并以hashmap的方式存儲(chǔ)。hashmap的結(jié)構(gòu)為(key,value)型,其中key是主鍵名,標(biāo)識(shí)了每一種數(shù)據(jù)視圖的名稱(chēng)vdk(visualdatakey),唯一,組成規(guī)則為:vdk=vvtype(visualviewtype數(shù)據(jù)視圖的類(lèi)型)+vvtitle(visualviewtitle數(shù)據(jù)視圖的標(biāo)題)+dsip(datasourcesip大數(shù)據(jù)源的請(qǐng)求地址);value是數(shù)據(jù)視圖的url訪問(wèn)路徑,即大數(shù)據(jù)用戶(hù)訪問(wèn)數(shù)據(jù)視圖的網(wǎng)址。系統(tǒng)根據(jù)數(shù)據(jù)視圖的訪問(wèn)率與自身更新頻率選擇是否進(jìn)行物化緩存,并針對(duì)數(shù)據(jù)視圖的資源特性選擇合適的存儲(chǔ)方式;將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息寫(xiě)入物化緩存視圖索引表vit,該索引表是一個(gè)hashmap表,結(jié)構(gòu)為(key,value),其中key為用戶(hù)的查詢(xún)url,value為一個(gè)二元組,包括每一種數(shù)據(jù)視圖的名稱(chēng)vdk與對(duì)應(yīng)物化緩存的方式(內(nèi)存存儲(chǔ)或者持久化層存儲(chǔ),其中內(nèi)存存儲(chǔ)用0表示,持久化存儲(chǔ)用1表示);系統(tǒng)根據(jù)物化緩存更新算法將需要進(jìn)行更新的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并由精靈線程模塊依據(jù)數(shù)據(jù)遷移算法選擇合適的線程向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求并將返回的結(jié)果存儲(chǔ)于內(nèi)存或者持久化層。內(nèi)存中的值表mvt(memoryvaluetable)是一個(gè)hashmap表,結(jié)構(gòu)為(key,value),其中key是查找的數(shù)據(jù)視圖名稱(chēng)vdk,value是該數(shù)據(jù)視圖物化緩存的數(shù)據(jù);持久化存儲(chǔ)文件形式由系統(tǒng)初始化設(shè)定,通過(guò)物化緩存選擇算法和物化緩存存儲(chǔ)算法來(lái)選擇是否進(jìn)行物化緩存和物化緩存的存儲(chǔ)方式。2.2.3系統(tǒng)周期性地累積緩存索引集合被訪問(wèn)的次數(shù),并將訪問(wèn)次數(shù)周期性地累積成熱度進(jìn)行保存;進(jìn)而,對(duì)物化緩存視圖索引表vit中所有記錄的累積熱度排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并在物化緩存執(zhí)行隊(duì)列中保存數(shù)據(jù)視圖的url,由精靈線程模塊解析后分配線程向大數(shù)據(jù)源發(fā)送請(qǐng)求;2.2.4系統(tǒng)將用戶(hù)的查詢(xún)url匹配為主鍵,然后查詢(xún)物化緩存視圖索引表vit,如果能匹配到,說(shuō)明該數(shù)據(jù)視圖已提供了物化緩存;對(duì)于具有物化緩存的數(shù)據(jù)視圖,模型不再對(duì)數(shù)據(jù)源進(jìn)行真正訪問(wèn),改為訪問(wèn)物化緩存;2.2.5物化緩存基于數(shù)據(jù)視圖url為主鍵根據(jù)存儲(chǔ)類(lèi)型查找內(nèi)存中的值表mvt或者持久化層的緩存數(shù)據(jù),其中內(nèi)存查找依據(jù)主鍵遍歷mvt找到緩存數(shù)據(jù)后json返回;持久化層查找則由系統(tǒng)的查詢(xún)接口程序依據(jù)主鍵查找持久化存儲(chǔ)的文件返回json數(shù)據(jù),將結(jié)果json注入相應(yīng)的可視化模塊中并將形成的可視化效果展示給用戶(hù)。再進(jìn)一步,所述步驟2.2.2中,物化緩存選擇算法和物化緩存存儲(chǔ)算法的步驟如下:2.2.2.1物化緩存選擇算法,,步驟如下:步驟(2.2.2.1.1)記錄最近一次訪問(wèn)數(shù)據(jù)視圖后流逝的時(shí)間tc,tk是第k次訪問(wèn)數(shù)據(jù)視圖和第k-1次訪問(wèn)數(shù)據(jù)視圖之間的時(shí)間間隔,設(shè)第k-1次訪問(wèn)數(shù)據(jù)視圖后的平均訪問(wèn)時(shí)間間隔為rk-1,那么第k次訪問(wèn)數(shù)據(jù)視圖后得到的平均訪問(wèn)時(shí)間間隔為:rk=ttk+(1-t)rk-1,其中t是動(dòng)態(tài)參數(shù),t大于等于1/2即可;步驟(2.2.2.1.2)設(shè)r是數(shù)據(jù)視圖當(dāng)前的訪問(wèn)率。令rf是最后一次訪問(wèn)數(shù)據(jù)視圖后得到的平均訪問(wèn)間隔,由指數(shù)分布的定義可以得到它的概率密度函數(shù)為:步驟(2.2.2.1.3)數(shù)據(jù)視圖經(jīng)過(guò)時(shí)間tc后被訪問(wèn)的概率密度函數(shù)為:步驟(2.2.2.1.4)求出數(shù)據(jù)視圖下一次被訪問(wèn)的平均時(shí)間間隔為:計(jì)算平均引用率為f=1/(tc+rf)步驟(2.2.2.1.5)計(jì)算數(shù)據(jù)視圖i的平均引用率fi,記錄對(duì)于數(shù)據(jù)視圖i發(fā)送一個(gè)請(qǐng)求開(kāi)始到客戶(hù)端收到最后一個(gè)字節(jié)的響應(yīng)所耗費(fèi)的時(shí)間ttlbi與自身更新的頻率updatei,對(duì)每個(gè)數(shù)據(jù)視圖設(shè)置一個(gè)緩存值,緩存值代表此數(shù)據(jù)視圖進(jìn)行物化緩存的價(jià)值,緩存值計(jì)算公式如下:步驟(2.2.2.1.6)根據(jù)緩存值的大小對(duì)每個(gè)數(shù)據(jù)視圖進(jìn)行排列,選擇前n個(gè)進(jìn)行物化緩存,將數(shù)據(jù)視圖信息寫(xiě)入物化緩存視圖索引表vit。再進(jìn)一步,所述步驟(2.2.2.1.5)中,緩存自身更新的頻率updatei需由大數(shù)據(jù)可視化層向大數(shù)據(jù)源周期的發(fā)送請(qǐng)求,將返回?cái)?shù)據(jù)結(jié)果與現(xiàn)有的緩存數(shù)據(jù)進(jìn)行對(duì)比,從而計(jì)算出緩存自身更新的頻率;提出一種數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法,通過(guò)每次請(qǐng)求返回的比對(duì)結(jié)果動(dòng)態(tài)調(diào)節(jié)下一次請(qǐng)求的間隔時(shí)間ri(requestinterval),另設(shè)置一個(gè)慢請(qǐng)求門(mén)限值srthresh(slowrequestthreshold),當(dāng)請(qǐng)求間隔時(shí)間未達(dá)到門(mén)限值時(shí)采取間隔時(shí)間單位指數(shù)增加,之后采取線性增加方式。數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法具體步驟如下:步驟(2.2.2.1.5.1)動(dòng)態(tài)請(qǐng)求初始化:在初始化階段設(shè)置初始的請(qǐng)求間隔為一個(gè)單位時(shí)間,即ri1=1,單位時(shí)間可以是一個(gè)小時(shí)、半個(gè)小時(shí)、十分鐘等,具體數(shù)值由系統(tǒng)根據(jù)經(jīng)驗(yàn)定值,另定義一個(gè)慢請(qǐng)求門(mén)限值srthresh;步驟(2.2.2.1.5.2)系統(tǒng)向大數(shù)據(jù)源發(fā)出比對(duì)請(qǐng)求,對(duì)請(qǐng)求返回的結(jié)果進(jìn)行分析比對(duì),如果發(fā)現(xiàn)緩存并未更新,則進(jìn)行步驟(2.2.2.1.5.3),否則進(jìn)行步驟(2.2.2.1.5.4);步驟(2.2.2.1.5.3)如果發(fā)現(xiàn)此輪的請(qǐng)求間隔時(shí)間rik(k=2,3,4,5…)小于或等于慢請(qǐng)求門(mén)限值srthresh,則定義下一輪請(qǐng)求間隔時(shí)間rik+1=2*rik,否則下一輪請(qǐng)求間隔時(shí)間rik+1=rik+1,轉(zhuǎn)步驟(2.2.2.1.5.2);步驟(2.2.2.1.5.4)直接定義下一輪的請(qǐng)求間隔時(shí)間rik+1=rik/2,轉(zhuǎn)步驟(2.2.2.1.5.2);2.2.2.2物化緩存存儲(chǔ)算法,步驟如下:步驟(2.2.2.2.1)計(jì)算數(shù)據(jù)視圖i物化緩存的數(shù)據(jù)量大小si并記錄該緩存對(duì)象被訪問(wèn)的次數(shù)counti;步驟(2.2.2.2.2)定義一個(gè)物化緩存存儲(chǔ)方法的閾值m0,閾值m0根據(jù)系統(tǒng)的內(nèi)存狀態(tài)與請(qǐng)求緩存的數(shù)據(jù)量進(jìn)行動(dòng)態(tài)調(diào)節(jié),計(jì)算公式如下:其中b為系統(tǒng)內(nèi)存緩存的總?cè)萘?,μ為?dòng)態(tài)調(diào)節(jié)參數(shù);步驟(2.2.2.2.3)定義數(shù)據(jù)視圖i物化緩存的存儲(chǔ)值mi,存儲(chǔ)值計(jì)算公式如下:步驟(2.2.2.2.4)如果存儲(chǔ)值mi小于閾值m0,對(duì)該物化緩存進(jìn)行內(nèi)存存儲(chǔ),將數(shù)據(jù)視圖名稱(chēng)vdk作為key、物化緩存結(jié)果作為value寫(xiě)入內(nèi)存中的值表mvt。否則轉(zhuǎn)步驟(2.2.2.2.5);步驟(2.2.2.2.5)對(duì)該物化緩存進(jìn)行持久化存儲(chǔ),將緩存數(shù)據(jù)存儲(chǔ)于系統(tǒng)初始化設(shè)定的持久化存儲(chǔ)文件中。再進(jìn)一步,所述步驟2.2.3中,物化緩存更新算法的步驟如下:步驟(2.2.3.1)計(jì)算當(dāng)前熱度計(jì)算周期中物化緩存i被訪問(wèn)的次數(shù)counti,設(shè)cti為物化緩存i被創(chuàng)建的時(shí)間,t為當(dāng)前時(shí)間,計(jì)算物化緩存i在緩存區(qū)域中已經(jīng)存在的時(shí)間t-cti與緩存對(duì)象i命中需要的平均時(shí)間步驟(2.2.3.2)根據(jù)步驟(2.2.2.1.5)中提出的數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法計(jì)算物化緩存i自身更新的頻率updatei;步驟(2.2.3.3)記錄對(duì)于物化緩存i發(fā)送一個(gè)請(qǐng)求開(kāi)始到客戶(hù)端收到最后一個(gè)字節(jié)的響應(yīng)所耗費(fèi)的時(shí)間ttlbi;步驟(2.2.3.4)定義物化緩存i在周期j的熱度值valueij,計(jì)算公式如下:其中β為相關(guān)系數(shù),valueij-1表示該緩存在上一個(gè)熱度計(jì)算周期中的熱度值,參數(shù)α是衰減系數(shù),用來(lái)確定當(dāng)前周期熱度累積的熱度和歷史熱度各自所占的權(quán)重;集合的歷史熱度在本計(jì)算周期內(nèi)以系數(shù)(1-α)的速率衰減,經(jīng)過(guò)多次迭代,更早計(jì)算周期的累積熱度經(jīng)過(guò)了更多次衰減,所以早期的累積熱度對(duì)數(shù)據(jù)熱度的影響不斷降低;步驟(2.2.3.5)將記錄的所有物化緩存累積熱度值進(jìn)行排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并在隊(duì)列中存儲(chǔ)數(shù)據(jù)視圖的url。本發(fā)明的有益效果主要表現(xiàn)在要:(1)該可視化方法可以有效整合多源、異構(gòu)、非一致、非準(zhǔn)確的網(wǎng)絡(luò)大數(shù)據(jù)。(2)該可視化方法可對(duì)海量數(shù)據(jù)進(jìn)行快速可視化分析,能有效減少網(wǎng)絡(luò)傳輸代價(jià),提高系統(tǒng)的數(shù)據(jù)查詢(xún)效率。下面結(jié)合附圖進(jìn)一步說(shuō)明本發(fā)明。附圖說(shuō)明圖1示出了網(wǎng)絡(luò)大數(shù)據(jù)可視化模型圖。圖2示出了精靈線程工作機(jī)制圖。圖3示出了物化緩存運(yùn)行過(guò)程圖。圖4示出了物化緩存選擇過(guò)程圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)D1~圖4,一種基于物化緩存的網(wǎng)絡(luò)大數(shù)據(jù)可視化方法,所述可視化方法包括以下步驟:第一步、建立一個(gè)動(dòng)態(tài)演化模型,模型按照分層架構(gòu)思想設(shè)計(jì),如圖1所示,分為大數(shù)據(jù)用戶(hù)層、大數(shù)據(jù)可視化層及大數(shù)據(jù)源層;1.1、大數(shù)據(jù)用戶(hù)層:由網(wǎng)絡(luò)上具有不同大數(shù)據(jù)可視化需求的用戶(hù)(user)構(gòu)成,用戶(hù)通過(guò)訪問(wèn)大數(shù)據(jù)可視化層來(lái)獲取感興趣的大數(shù)據(jù)信息,用戶(hù)層不依賴(lài)具體的技術(shù)架構(gòu),并可在可視化層中定制不同的視圖來(lái)分析數(shù)據(jù)的多個(gè)維度。1.2、大數(shù)據(jù)可視化層:基于云平臺(tái)架構(gòu),提供一種統(tǒng)一的標(biāo)準(zhǔn)讓用戶(hù)來(lái)查詢(xún)不同的大數(shù)據(jù)源。可視化層不存儲(chǔ)海量數(shù)據(jù),也不進(jìn)行數(shù)據(jù)的密集計(jì)算,其核心是將大數(shù)據(jù)可視化視為一種可提供的服務(wù),以供大數(shù)據(jù)用戶(hù)層使用。將側(cè)重點(diǎn)放在數(shù)據(jù)的可視化服務(wù)上,關(guān)注于可視化時(shí)需要的數(shù)據(jù)計(jì)算結(jié)果集優(yōu)化??梢暬瘜咏邮艽髷?shù)據(jù)用戶(hù)的數(shù)據(jù)視圖查詢(xún)請(qǐng)求后,判斷是否存在物化緩存,向大數(shù)據(jù)源發(fā)出服務(wù)請(qǐng)求然后將返回的結(jié)果集進(jìn)行可視化效果展示給用戶(hù);或者直接查詢(xún)系統(tǒng)的物化緩存,將結(jié)果進(jìn)行可視化分析響應(yīng)給用戶(hù)??梢暬瘜影ň`線程池模塊、物化緩存模塊和可視化分析模塊;精靈線程池etp模塊:主要負(fù)責(zé)線程的分配,系統(tǒng)在初始化階段根據(jù)一定的映射規(guī)則解析每個(gè)數(shù)據(jù)視圖的相關(guān)信息構(gòu)建一個(gè)資源配置文件cp,并將此文件映射于內(nèi)存中緩存配置表cpt,cpt根據(jù)物化緩存選擇算法和物化緩存存儲(chǔ)算法將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息生成物化緩存視圖索引表vit,vit基于物化緩存更新算法將數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,由線程分配機(jī)制根據(jù)et數(shù)據(jù)資源遷移算法分配合適的線程向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求;物化緩存模塊:針對(duì)計(jì)算量大、實(shí)時(shí)性不高、用戶(hù)請(qǐng)求頻繁的大數(shù)據(jù)可視化查詢(xún)采取物化緩存的方法,預(yù)先緩存大數(shù)據(jù)源對(duì)相應(yīng)查詢(xún)計(jì)算的結(jié)果,將該數(shù)據(jù)視圖的數(shù)據(jù)結(jié)果集根據(jù)物化緩存存儲(chǔ)算法采取內(nèi)存存儲(chǔ)或者持久化存儲(chǔ)方式,用戶(hù)發(fā)出該視圖的請(qǐng)求時(shí),不必向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求,直接用緩存的數(shù)據(jù)結(jié)果集進(jìn)行可視化分析響應(yīng)給用戶(hù)??梢员苊獯髷?shù)據(jù)源耗時(shí)的數(shù)據(jù)分析計(jì)算操作,從而快速的得到用戶(hù)的請(qǐng)求結(jié)果;可視化分析模塊:該模塊負(fù)責(zé)將用戶(hù)訪問(wèn)數(shù)據(jù)視圖后返回的數(shù)據(jù)集進(jìn)行可視化分析,將大數(shù)據(jù)以直觀的可視化的圖形形式展示給用戶(hù),系統(tǒng)采用百度開(kāi)源的javascript圖表庫(kù)echarts進(jìn)行數(shù)據(jù)的分析和可視化展示;1.3、大數(shù)據(jù)源層:指的是在網(wǎng)絡(luò)上的大數(shù)據(jù)供應(yīng)商,他們采用分布式架構(gòu)存儲(chǔ)海量數(shù)據(jù),有效支持大數(shù)據(jù)的處理需求,大數(shù)據(jù)源層一般提供大數(shù)據(jù)服務(wù),即將數(shù)據(jù)以服務(wù)的方式提供給可視化層,例如采用基于map/reduce模型的hadoop進(jìn)行離線計(jì)算,計(jì)算后將結(jié)果以服務(wù)封裝給可視化層,或者采用分布式的、實(shí)時(shí)數(shù)據(jù)流分析工具storm進(jìn)行流式計(jì)算,將計(jì)算結(jié)果實(shí)時(shí)以服務(wù)發(fā)送給可視化層;采用代理的方式提供直接訪問(wèn)數(shù)據(jù)庫(kù)的服務(wù)等。即大數(shù)據(jù)源層與可視化層是一種松耦合、可分離的關(guān)系,各類(lèi)大數(shù)據(jù)源分屬于獨(dú)立的應(yīng)用系統(tǒng),負(fù)責(zé)數(shù)據(jù)的計(jì)算,并將計(jì)算結(jié)果傳回可視化層。通過(guò)將可視化工作從各類(lèi)大數(shù)據(jù)源中剝離出來(lái),使得各類(lèi)應(yīng)用系統(tǒng)專(zhuān)注于自身業(yè)務(wù)的開(kāi)發(fā),由可視化層專(zhuān)一處理數(shù)據(jù)的可視化需求并對(duì)外提供可視化服務(wù),以降低應(yīng)用系統(tǒng)的開(kāi)發(fā)成本,實(shí)現(xiàn)各司其職的工作分工。第二步、基于所述的模型,提出的基于物化緩存的網(wǎng)絡(luò)大數(shù)據(jù)可視化方法如下:步驟2.1:精靈線程階段在模型初始化階段,大數(shù)據(jù)可視化層通過(guò)web服務(wù)器會(huì)激活精靈線程池etp,如圖2所示,通過(guò)線程分配協(xié)作完成數(shù)據(jù)視圖的物化緩存過(guò)程,etp主要工作如下:2.1.1初始化時(shí)系統(tǒng)基于步驟2.2.2.1的緩存選擇算法與步驟2.2.2.2的緩存存儲(chǔ)算法將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息生成物化緩存視圖索引表vit,該表具體結(jié)構(gòu)詳見(jiàn)步驟2.2.2,系統(tǒng)基于步驟2.2.3的物化緩存更新算法對(duì)vit表所有數(shù)據(jù)視圖的累積熱度進(jìn)行排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列。2.1.2線程分配機(jī)制根據(jù)步驟1.3的et數(shù)據(jù)資源遷移算法合理的選擇物化緩存執(zhí)行隊(duì)列的數(shù)據(jù)視圖并提取該數(shù)據(jù)視圖的url,入池分配線程,etp會(huì)創(chuàng)建線程(et)來(lái)模擬大數(shù)據(jù)用戶(hù)訪問(wèn)該url,對(duì)該url對(duì)應(yīng)的數(shù)據(jù)源發(fā)出請(qǐng)求訪問(wèn)(調(diào)用大數(shù)據(jù)源層的服務(wù)或直接訪問(wèn)對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)),et在獲取數(shù)據(jù)后將數(shù)據(jù)寫(xiě)入緩存,其后的具體操作如步驟2.2.2.2所示。2.1.3由于模型初始化階段需要建立緩存的數(shù)據(jù)視圖較多,或者在模型運(yùn)行過(guò)程中,某一時(shí)間段內(nèi)需要重建物化緩存的數(shù)據(jù)視圖大量增加,為保障物化緩存的生成效率。etp將為多個(gè)集中建立緩存的數(shù)據(jù)視圖合理分配線程,減少線程同步時(shí)間,有選擇地進(jìn)行性能優(yōu)化,保證物化緩存任務(wù)在一定的加速比性能前提下,能提高資源利用率,減小能耗,達(dá)到程序能耗和性能之間的折衷。本發(fā)明提出了et數(shù)據(jù)資源遷移算法,通過(guò)線程分配協(xié)作,來(lái)協(xié)調(diào)大數(shù)據(jù)可視化層與多個(gè)大數(shù)據(jù)源間的數(shù)據(jù)資源遷移。再進(jìn)一步,所述步驟2.1.3中,et數(shù)據(jù)資源遷移算法原理如下:綜合大數(shù)據(jù)用戶(hù)對(duì)數(shù)據(jù)視圖的渴望度以及該數(shù)據(jù)視圖自身緩存所需要的時(shí)間,在線程調(diào)度前,系統(tǒng)對(duì)物化緩存執(zhí)行隊(duì)列中每個(gè)數(shù)據(jù)視圖進(jìn)行物化緩存的優(yōu)先級(jí)排列,優(yōu)先級(jí)高的數(shù)據(jù)視圖先分配線程進(jìn)行物化緩存,其余的進(jìn)入等待。具體步驟如下:步驟(2.1.3.1)線程分配機(jī)制記錄物化緩存執(zhí)行隊(duì)列里數(shù)據(jù)視圖i的訪問(wèn)次數(shù)counti,并計(jì)算該數(shù)據(jù)視圖的用戶(hù)渴望度其中t表示當(dāng)前時(shí)間。步驟(2.1.3.2)根據(jù)數(shù)據(jù)視圖進(jìn)入物化緩存執(zhí)行隊(duì)列時(shí)間α(i)與當(dāng)前時(shí)間t,計(jì)算該數(shù)據(jù)視圖在物化緩存執(zhí)行隊(duì)列等待的時(shí)間t-α(i)。步驟(2.1.3.3)估算該數(shù)據(jù)視圖i進(jìn)行物化緩存所需要的時(shí)間sti。步驟(2.1.3.4)計(jì)算該數(shù)據(jù)視圖i的優(yōu)先級(jí)priorityi,計(jì)算公式如下:其中ε1,ε2為權(quán)重系數(shù),根據(jù)服務(wù)的側(cè)重點(diǎn)不同設(shè)置不同的權(quán)重參數(shù)。為了避免早期的緩存請(qǐng)求進(jìn)入無(wú)限等待狀態(tài),將t加入優(yōu)先級(jí)計(jì)算,這樣早期請(qǐng)求進(jìn)行物化緩存的數(shù)據(jù)視圖隨著時(shí)間增加優(yōu)先級(jí)也會(huì)相對(duì)增加。步驟(2.1.3.5)根據(jù)優(yōu)先級(jí)對(duì)物化緩存執(zhí)行隊(duì)列里的數(shù)據(jù)視圖排序,選擇前x的數(shù)據(jù)視圖分配線程進(jìn)行物化緩存過(guò)程,x為精靈線程池的線程數(shù)量,可以動(dòng)態(tài)調(diào)節(jié)。再進(jìn)一步,所述步驟(2.1.3.5)中,選擇線程池內(nèi)線程的數(shù)量會(huì)對(duì)系統(tǒng)性能產(chǎn)生很大的影響,線程池中的線程數(shù)量過(guò)大的時(shí)候會(huì)導(dǎo)致請(qǐng)求的處理時(shí)間線性增長(zhǎng),降低系統(tǒng)的吞吐量。本發(fā)明采用一種根據(jù)系統(tǒng)負(fù)載與緩存等待時(shí)間動(dòng)態(tài)調(diào)節(jié)線程池內(nèi)線程數(shù)量的機(jī)制,綜合數(shù)據(jù)視圖緩存的時(shí)間與系統(tǒng)cpu、內(nèi)存的負(fù)載能力;通過(guò)數(shù)據(jù)視圖的平均緩存時(shí)間分析當(dāng)前線程池需要調(diào)整的方向,通過(guò)cpu、內(nèi)存的使用率可以得出是否需要增加或者減少線程數(shù)量。具體步驟如下:步驟(2.1.3.5.1)線程池初始化:創(chuàng)建守護(hù)線程監(jiān)聽(tīng)當(dāng)前cpu的使用率和內(nèi)存使用率,周期性的檢測(cè)線程池中所有物化緩存的平均等待時(shí)間wt(waittime),并定義以下參數(shù):線程動(dòng)態(tài)調(diào)節(jié)時(shí)間對(duì)比率cr(contrastratio),cpu的負(fù)載上限clmax(cpuloadmax)與cpu的負(fù)載下限clmin(cpuloadmin),內(nèi)存的負(fù)載上限mlmax(memoryloadmax)與cpu的負(fù)載下限mlmin(memoryloadmin),線程每次動(dòng)態(tài)調(diào)節(jié)的數(shù)量m。步驟(2.1.3.5.2)線程池將此周期的物化緩存平均等待時(shí)間wtk與上一個(gè)周期計(jì)算的物化緩存平均等待時(shí)間wtk-1進(jìn)行比較,如果wtk與wtk-1的差異比值大于初始設(shè)定的線程動(dòng)態(tài)調(diào)節(jié)時(shí)間對(duì)比率cr,當(dāng)wtk大于wtk-1時(shí)轉(zhuǎn)步驟(2.1.3.5.3)。當(dāng)wtk小于wtk-1時(shí)轉(zhuǎn)步驟(2.1.3.5.4)。步驟(2.1.3.5.3)如果wtk-2大于wtk-1,并且cpu的使用率大于clmax或者內(nèi)存的使用率大于mlmax,則減少線程池內(nèi)線程的數(shù)量,減少單位為m;如果wtk-2小于wtk-1,并且cpu的使用率小于clmin并且內(nèi)存的使用率小于mlmin,則增加線程池內(nèi)線程的數(shù)量,增加單位為m。步驟(2.1.3.5.4)如果wtk-1小于wtk-2,則直接減少線程池內(nèi)線程的數(shù)量,減少單位為m。步驟2.2:物化緩存階段當(dāng)大數(shù)據(jù)用戶(hù)提交查詢(xún)請(qǐng)求,索取數(shù)據(jù)視圖時(shí),系統(tǒng)會(huì)自動(dòng)判斷能否通過(guò)查詢(xún)物化緩存來(lái)得到結(jié)果,如果可以,則避免了向大數(shù)據(jù)源發(fā)出相關(guān)計(jì)算請(qǐng)求,直接從已經(jīng)計(jì)算好的物化緩存中讀取數(shù)據(jù),可視化執(zhí)行模塊會(huì)提取物化緩存數(shù)據(jù)并將緩存數(shù)據(jù)注入數(shù)據(jù)視圖中,來(lái)直接響應(yīng)用戶(hù)查詢(xún)。否則,系統(tǒng)需要重寫(xiě)用戶(hù)查詢(xún)并分發(fā)查詢(xún)到大數(shù)據(jù)源層中檢索數(shù)據(jù),在數(shù)據(jù)檢索到后,回傳大數(shù)據(jù)可視化層并由可視化執(zhí)行模塊處理,最終反饋用戶(hù)。如圖3所示,基于物化緩存的數(shù)據(jù)視圖查詢(xún)具體執(zhí)行流程如下:2.2.1大數(shù)據(jù)用戶(hù)提交數(shù)據(jù)可視化查詢(xún)請(qǐng)求;2.2.2如圖4所示,在大數(shù)據(jù)可視化層,每一個(gè)數(shù)據(jù)視圖在初始化階段都被賦予一個(gè)唯一的url資源,并記錄了數(shù)據(jù)可視化視圖的相關(guān)信息,內(nèi)容有數(shù)據(jù)視圖的類(lèi)型vvtype、數(shù)據(jù)視圖的標(biāo)題vvtitle、數(shù)據(jù)視圖大數(shù)據(jù)源請(qǐng)求的ip地址dsip,作為資源配置文件cp存儲(chǔ)于持久化層。系統(tǒng)初始化階段將其映射到內(nèi)存的緩存配置表cpt中并以hashmap的方式存儲(chǔ)。hashmap的結(jié)構(gòu)為(key,value)型,其中key是主鍵名,標(biāo)識(shí)了每一種數(shù)據(jù)視圖的名稱(chēng)vdk,唯一,組成規(guī)則為:vdk=vvtype+vvtitle+dsip;value是數(shù)據(jù)視圖的url訪問(wèn)路徑,即大數(shù)據(jù)用戶(hù)訪問(wèn)數(shù)據(jù)視圖的網(wǎng)址。系統(tǒng)根據(jù)數(shù)據(jù)視圖的訪問(wèn)率與自身更新頻率選擇是否進(jìn)行物化緩存,并針對(duì)數(shù)據(jù)視圖的資源特性選擇合適的存儲(chǔ)方式;將需要進(jìn)行物化緩存的數(shù)據(jù)視圖信息寫(xiě)入物化緩存視圖索引表vit,該索引表是一個(gè)hashmap表,結(jié)構(gòu)為(key,value),其中key為用戶(hù)的查詢(xún)url,value為一個(gè)二元組,包括每一種數(shù)據(jù)視圖的名稱(chēng)vdk與對(duì)應(yīng)物化緩存的方式(內(nèi)存存儲(chǔ)或者持久化層存儲(chǔ),其中內(nèi)存存儲(chǔ)用0表示,持久化存儲(chǔ)用1表示)。系統(tǒng)根據(jù)物化緩存更新算法(步驟2.2.3)將需要進(jìn)行更新的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并由精靈線程模塊依據(jù)數(shù)據(jù)遷移算法(步驟2.1.3)選擇合適的線程向大數(shù)據(jù)源建立連接發(fā)出服務(wù)請(qǐng)求并將返回的結(jié)果存儲(chǔ)于內(nèi)存或者持久化層。內(nèi)存中的值表mvt是一個(gè)hashmap表,結(jié)構(gòu)為(key,value),其中key是查找的數(shù)據(jù)視圖名稱(chēng)vdk,value是該數(shù)據(jù)視圖物化緩存的數(shù)據(jù);持久化存儲(chǔ)文件形式由系統(tǒng)初始化設(shè)定(如關(guān)系型數(shù)據(jù)庫(kù)、文件系統(tǒng)、nosql數(shù)據(jù)等)。本發(fā)明提出物化緩存選擇算法(步驟2.2.2.1)和物化緩存存儲(chǔ)算法(步驟2.2.2.2),來(lái)選擇是否進(jìn)行物化緩存和物化緩存的存儲(chǔ)方式。2.2.3系統(tǒng)周期性地累積緩存索引集合被訪問(wèn)的次數(shù),并將訪問(wèn)次數(shù)周期性地累積成熱度進(jìn)行保存。進(jìn)而,對(duì)vit中所有記錄的累積熱度排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并在物化緩存執(zhí)行隊(duì)列中保存數(shù)據(jù)視圖的url,由精靈線程模塊解析后分配線程向大數(shù)據(jù)源發(fā)送請(qǐng)求,將返回的物化緩存結(jié)果進(jìn)行內(nèi)存存儲(chǔ)或者持久化存儲(chǔ)。本發(fā)明提出一種熱度積累的物化緩存更新算法,該算法描述了如何有效的控制物化緩存的更新。2.2.4系統(tǒng)將用戶(hù)的查詢(xún)url匹配為主鍵,然后查詢(xún)物化緩存視圖索引表vit,如果能匹配到,說(shuō)明該數(shù)據(jù)視圖已提供了物化緩存。對(duì)于具有物化緩存的數(shù)據(jù)視圖,模型不再對(duì)數(shù)據(jù)源進(jìn)行真正訪問(wèn),改為訪問(wèn)物化緩存。2.2.5物化緩存基于數(shù)據(jù)視圖url為主鍵根據(jù)存儲(chǔ)類(lèi)型查找內(nèi)存中的值表mvt或者持久化層的緩存數(shù)據(jù),其中內(nèi)存查找依據(jù)主鍵遍歷mvt找到緩存數(shù)據(jù)后json返回;持久化層查找則由系統(tǒng)的查詢(xún)接口程序依據(jù)主鍵查找持久化存儲(chǔ)的文件返回json數(shù)據(jù)。將結(jié)果json注入相應(yīng)的可視化模塊中并將形成的可視化效果響應(yīng)給用戶(hù)。再進(jìn)一步,所述步驟2.2.2中,物化緩存選擇算法和物化緩存存儲(chǔ)算法具體步驟如下:2.2.2.1物化緩存選擇算法考慮到物化緩存占用了實(shí)際存儲(chǔ)空間,其規(guī)模受到了物理存儲(chǔ)空間的限制;并且有的數(shù)據(jù)視圖對(duì)實(shí)時(shí)性要求比較高,大量的物化緩存將導(dǎo)致緩存更新維護(hù)成本的提高,從而影響系統(tǒng)的整體性能。為解決此問(wèn)題,本發(fā)明設(shè)計(jì)了一種基于數(shù)據(jù)視圖訪問(wèn)率的物化緩存算法,訪問(wèn)率體現(xiàn)了當(dāng)前時(shí)刻數(shù)據(jù)視圖下一次被訪問(wèn)的可能性大小,從而系統(tǒng)自動(dòng)選擇選擇哪些數(shù)據(jù)視圖需要進(jìn)行物化緩存,具體執(zhí)行步驟如下:步驟(2.2.2.1.1)記錄最近一次訪問(wèn)數(shù)據(jù)視圖后流逝的時(shí)間tc,tk是第k次訪問(wèn)數(shù)據(jù)視圖和第k-1次訪問(wèn)數(shù)據(jù)視圖之間的時(shí)間間隔,設(shè)第k-1次訪問(wèn)數(shù)據(jù)視圖后的平均訪問(wèn)時(shí)間間隔為rk-1,那么第k次訪問(wèn)數(shù)據(jù)視圖后得到的平均訪問(wèn)時(shí)間間隔為:rk=ttk+(1-t)rk-1,其中t是動(dòng)態(tài)參數(shù),t大于等于1/2即可。步驟(2.2.2.1.2)設(shè)r是數(shù)據(jù)視圖當(dāng)前的訪問(wèn)率。令rf是最后一次訪問(wèn)數(shù)據(jù)視圖后得到的平均訪問(wèn)間隔,由指數(shù)分布的定義可以得到它的概率密度函數(shù)為:步驟(2.2.2.1.3)數(shù)據(jù)視圖經(jīng)過(guò)時(shí)間tc后被訪問(wèn)的概率密度函數(shù)為:步驟(2.2.2.1.4)求出數(shù)據(jù)視圖下一次被訪問(wèn)的平均時(shí)間間隔為:計(jì)算平均引用率為f=1/(tc+rf)步驟(2.2.2.1.5)計(jì)算數(shù)據(jù)視圖i的平均引用率fi,記錄對(duì)于數(shù)據(jù)視圖i發(fā)送一個(gè)請(qǐng)求開(kāi)始到客戶(hù)端收到最后一個(gè)字節(jié)的響應(yīng)所耗費(fèi)的時(shí)間ttlbi與自身更新的頻率updatei。對(duì)每個(gè)數(shù)據(jù)視圖設(shè)置一個(gè)緩存值,緩存值代表此數(shù)據(jù)視圖進(jìn)行物化緩存的價(jià)值,緩存值計(jì)算公式如下:步驟(2.2.2.1.6)根據(jù)緩存值的大小對(duì)每個(gè)數(shù)據(jù)視圖進(jìn)行排列,選擇前n個(gè)進(jìn)行物化緩存,將數(shù)據(jù)視圖信息寫(xiě)入物化緩存視圖索引表vit。再進(jìn)一步,所述步驟(2.2.2.1.5)中緩存自身更新的頻率updatei需由大數(shù)據(jù)可視化層向大數(shù)據(jù)源周期的發(fā)送請(qǐng)求,將返回?cái)?shù)據(jù)結(jié)果與現(xiàn)有的緩存數(shù)據(jù)進(jìn)行對(duì)比,從而計(jì)算出緩存自身更新的頻率??紤]到頻繁發(fā)送數(shù)據(jù)對(duì)比請(qǐng)求會(huì)嚴(yán)重降低可視化層的系統(tǒng)性能,為了減少系統(tǒng)的開(kāi)銷(xiāo),需要盡可能減少數(shù)據(jù)對(duì)比的請(qǐng)求次數(shù)。因此需要對(duì)每一種物化緩存的大數(shù)據(jù)源進(jìn)行數(shù)據(jù)更新的預(yù)測(cè),以便在下一次大數(shù)據(jù)源更新時(shí)獲取最新的數(shù)據(jù)。本發(fā)明提出一種數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法,通過(guò)每次請(qǐng)求返回的比對(duì)結(jié)果動(dòng)態(tài)調(diào)節(jié)下一次請(qǐng)求的間隔時(shí)間ri(requestinterval),另設(shè)置一個(gè)慢請(qǐng)求門(mén)限值srthresh(slowrequestthreshold),當(dāng)請(qǐng)求間隔時(shí)間未達(dá)到門(mén)限值時(shí)采取間隔時(shí)間單位指數(shù)增加,之后采取線性增加方式。數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法具體步驟如下:步驟(2.2.2.1.5.1)動(dòng)態(tài)請(qǐng)求初始化:在初始化階段設(shè)置初始的請(qǐng)求間隔為一個(gè)單位時(shí)間,即ri1=1,單位時(shí)間可以是一個(gè)小時(shí)、半個(gè)小時(shí)、十分鐘等,具體數(shù)值由系統(tǒng)根據(jù)經(jīng)驗(yàn)定值,另定義一個(gè)慢請(qǐng)求門(mén)限值srthresh;步驟(2.2.2.1.5.2)系統(tǒng)向大數(shù)據(jù)源發(fā)出比對(duì)請(qǐng)求,對(duì)請(qǐng)求返回的結(jié)果進(jìn)行分析比對(duì),如果發(fā)現(xiàn)緩存并未更新,則進(jìn)行步驟(2.2.2.1.5.3),否則進(jìn)行步驟(2.2.2.1.5.4)。步驟(2.2.2.1.5.3)如果發(fā)現(xiàn)此輪的請(qǐng)求間隔時(shí)間rik(k=2,3,4,5…)小于或等于慢請(qǐng)求門(mén)限值srthresh,則定義下一輪請(qǐng)求間隔時(shí)間rik+1=2*rik,否則下一輪請(qǐng)求間隔時(shí)間rik+1=rik+1,轉(zhuǎn)步驟(2.2.2.1.5.2)。步驟(2.2.2.1.5.4)直接定義下一輪的請(qǐng)求間隔時(shí)間rik+1=rik/2,轉(zhuǎn)步驟(2.2.2.1.5.2)。2.2.2.2物化緩存存儲(chǔ)算法如果一個(gè)物化緩存能夠響應(yīng)所有可能發(fā)起的查詢(xún)請(qǐng)求是最為理想的狀態(tài),但由于物化緩存占用了實(shí)際存儲(chǔ)空間,其規(guī)模受到了物理存儲(chǔ)空間的限制。此外,大量的物化緩存將導(dǎo)致緩存更新維護(hù)成本的提高,從而影響系統(tǒng)的整體性能,因此在有限的存儲(chǔ)空間和相對(duì)較低的緩存維護(hù)成本下,選擇合適的物化緩存方式,使得選中的查詢(xún)滿足集成層的空間限制,同時(shí)獲取最大的物化收益。選擇一種針對(duì)用戶(hù)查詢(xún)效率最高的視圖集物化緩存方案非常重要。物化緩存存儲(chǔ)采取內(nèi)存存儲(chǔ)或者持久化存儲(chǔ),其具體存儲(chǔ)方式依賴(lài)于具體的數(shù)據(jù)視圖。通用原則是:內(nèi)存存儲(chǔ)適合訪問(wèn)熱度高但數(shù)據(jù)量小的數(shù)據(jù)結(jié)果,持久化存儲(chǔ)適合數(shù)據(jù)量大,但訪問(wèn)熱度相對(duì)較低的數(shù)據(jù)結(jié)果。當(dāng)模型讀取到大數(shù)據(jù)源提供的數(shù)據(jù)結(jié)果集后,首先將內(nèi)容轉(zhuǎn)換為json,然后模型根據(jù)數(shù)據(jù)資源特性自動(dòng)選擇物化緩存的存儲(chǔ)方式,充分利用可視化層的集群內(nèi)存資源,來(lái)加快系統(tǒng)的處理速度,為了支持緩存存儲(chǔ)機(jī)制合理的選擇緩存的方式,本發(fā)明提出一種物化緩存存儲(chǔ)算法。具體步驟如下:步驟(2.2.2.2.1)計(jì)算數(shù)據(jù)視圖i物化緩存的數(shù)據(jù)量大小si并記錄該緩存對(duì)象被訪問(wèn)的次數(shù)counti。步驟(2.2.2.2.2)定義一個(gè)物化緩存存儲(chǔ)方法的閾值m0,閾值m0根據(jù)系統(tǒng)的內(nèi)存狀態(tài)與請(qǐng)求緩存的數(shù)據(jù)量進(jìn)行動(dòng)態(tài)調(diào)節(jié)。計(jì)算公式如下:其中b為系統(tǒng)內(nèi)存緩存的總?cè)萘?,μ為?dòng)態(tài)調(diào)節(jié)參數(shù)。步驟(2.2.2.2.3)定義數(shù)據(jù)視圖i物化緩存的存儲(chǔ)值mi,存儲(chǔ)值計(jì)算公式如下:步驟(2.2.2.2.4)如果存儲(chǔ)值mi小于閾值m0,對(duì)該物化緩存進(jìn)行內(nèi)存存儲(chǔ),將數(shù)據(jù)視圖名稱(chēng)vdk作為key、物化緩存結(jié)果作為value寫(xiě)入內(nèi)存中的值表mvt。否則轉(zhuǎn)步驟(2.2.2.2.5)。步驟(2.2.2.2.5)對(duì)該物化緩存進(jìn)行持久化存儲(chǔ),將緩存數(shù)據(jù)存儲(chǔ)于系統(tǒng)初始化設(shè)定的持久化存儲(chǔ)文件中,如關(guān)系型數(shù)據(jù)庫(kù)、文件系統(tǒng)、nosql數(shù)據(jù)等。再進(jìn)一步,所述步驟2.2.3中,物化緩存更新算法原理如下:網(wǎng)絡(luò)大數(shù)據(jù)具有較好的時(shí)間局部性(最近訪問(wèn)的對(duì)象在最近的將來(lái)還可能被再次訪問(wèn)),另外,由于網(wǎng)絡(luò)大數(shù)據(jù)的訪問(wèn)頻度在短時(shí)間內(nèi)不穩(wěn)定,但在較長(zhǎng)的時(shí)間段內(nèi)相對(duì)平穩(wěn)?;谠L問(wèn)的上述特點(diǎn),在物化緩存更新算法中需考慮長(zhǎng)期訪問(wèn)頻度的影響,基本設(shè)計(jì)思想是系統(tǒng)周期性地累積緩存索引集合被訪問(wèn)的次數(shù),并將訪問(wèn)次數(shù)周期性地累積成熱度進(jìn)行保存。進(jìn)而,對(duì)vit中所有記錄的累積熱度排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列。具體步驟如下:步驟(2.2.3.1)計(jì)算當(dāng)前熱度計(jì)算周期中物化緩存i被訪問(wèn)的次數(shù)counti,設(shè)cti為物化緩存i被創(chuàng)建的時(shí)間,t為當(dāng)前時(shí)間,計(jì)算物化緩存i在緩存區(qū)域中已經(jīng)存在的時(shí)間t-cti與緩存對(duì)象i命中需要的平均時(shí)間步驟(2.2.3.2)根據(jù)步驟(2.2.2.1.5)中提出的數(shù)據(jù)更新預(yù)測(cè)動(dòng)態(tài)請(qǐng)求算法計(jì)算物化緩存i自身更新的頻率updatei。步驟(2.2.3.3)記錄對(duì)于物化緩存i發(fā)送一個(gè)請(qǐng)求開(kāi)始到客戶(hù)端收到最后一個(gè)字節(jié)的響應(yīng)所耗費(fèi)的時(shí)間ttlbi。步驟(2.2.3.4)定義物化緩存i在周期j的熱度值valueij,計(jì)算公式如下:其中β為相關(guān)系數(shù)。valueij-1表示該緩存在上一個(gè)熱度計(jì)算周期中的熱度值,參數(shù)α是衰減系數(shù),用來(lái)確定當(dāng)前周期熱度累積的熱度和歷史熱度各自所占的權(quán)重,α越大,則最近的訪問(wèn)在數(shù)據(jù)訪問(wèn)熱度中所占的權(quán)重越大,歷史訪問(wèn)記錄對(duì)數(shù)據(jù)熱度的影響越小,反之亦然。集合的歷史熱度在本計(jì)算周期內(nèi)以系數(shù)(1-α)的速率衰減,經(jīng)過(guò)多次迭代,更早計(jì)算周期的累積熱度經(jīng)過(guò)了更多次衰減,所以早期的累積熱度對(duì)數(shù)據(jù)熱度的影響不斷降低。步驟(2.2.3.5)將記錄的所有物化緩存累積熱度值進(jìn)行排序,選擇累積熱度top—k的數(shù)據(jù)視圖加入物化緩存執(zhí)行隊(duì)列,并在隊(duì)列中存儲(chǔ)數(shù)據(jù)視圖的url。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12