專利名稱:一種海量數(shù)據(jù)高性能讀取顯示方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信網(wǎng)管系統(tǒng)中的海量數(shù)據(jù)的存取,尤其涉及通信網(wǎng)管系統(tǒng)中 海量數(shù)據(jù)的高性能顯示。
技術(shù)背景在現(xiàn)實(shí)社會(huì)里,尤其在通信網(wǎng)管領(lǐng)域中經(jīng)常存在著對(duì)海量數(shù)據(jù)進(jìn)行查詢顯示 的需求。然而,面對(duì)海量級(jí)別的數(shù)據(jù),我們首先要考慮的問(wèn)題便是性能,目前 為提高海量數(shù)據(jù)的操作性能,而采取的應(yīng)對(duì)措施主要包括選用優(yōu)秀的數(shù)據(jù)庫(kù) 工具,優(yōu)化査詢SQL語(yǔ)句,加大虛擬內(nèi)存,對(duì)數(shù)據(jù)進(jìn)行分區(qū)操作,建立廣泛的 索引,利用分頁(yè)技術(shù)進(jìn)行分批處理,使用臨時(shí)表和中間表,使用數(shù)據(jù)倉(cāng)庫(kù)和多 維數(shù)據(jù)庫(kù)存儲(chǔ),使用采樣數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘,升級(jí)硬件等策略。然而,這些策略的實(shí)現(xiàn)都需要巨大的成本投入,要么增加資金投入,升級(jí) 軟硬件;要么提高對(duì)開發(fā)人員的要求,因?yàn)閮?yōu)化工作需要很高的技巧和豐富的 經(jīng)驗(yàn)。并且以上各種方法都是對(duì)這一問(wèn)題的局部解決方法,未能從整體上形成 一個(gè)充分利用現(xiàn)有系統(tǒng)資源和計(jì)算能力,解決性能問(wèn)題的整體架構(gòu)方案。 發(fā)明內(nèi)容本發(fā)明所要解決的問(wèn)題是提供一種海量數(shù)據(jù)高性能讀取顯示方法,即在現(xiàn) 有資源下,對(duì)客戶端發(fā)送的每一個(gè)海量數(shù)據(jù)的査詢請(qǐng)求,采用映射査找算法先 到系統(tǒng)緩存中進(jìn)行查找;查找步驟如下a) 在地址映射表中采用映射查找算法進(jìn)行,通過(guò)維護(hù)一個(gè)"請(qǐng)求"與"地 址"的映射表,采用二叉樹査找算法進(jìn)行查詢,查找請(qǐng)求所對(duì)應(yīng)的地址,然后 到相應(yīng)的數(shù)據(jù)區(qū)取出數(shù)據(jù)區(qū)中對(duì)應(yīng)的"塊";b) 讀塊的過(guò)程中,采用"跳轉(zhuǎn)迭代算法";c) 數(shù)據(jù)未在緩存中命中,從后臺(tái)數(shù)據(jù)庫(kù)中采用"軟RAID技術(shù)"讀取第一 塊數(shù)據(jù)到緩存;d) 當(dāng)緩存中數(shù)據(jù)區(qū)滿時(shí),采用LRU和LFR替換算法,清洗數(shù)據(jù)區(qū)。 步驟a中"塊"的大小等于客戶端一頁(yè)所能呈現(xiàn)的數(shù)據(jù)量。步驟b中的"跳轉(zhuǎn)迭代算法"是采用異步的push與pull的技術(shù),所謂push 是將命中的塊返回到客戶端,同時(shí)異步調(diào)用一個(gè)從后臺(tái)pull下一塊數(shù)據(jù)的函數(shù),即用戶請(qǐng)求回顯第一塊數(shù)據(jù)與用戶請(qǐng)求下一塊數(shù)據(jù)是同時(shí)進(jìn)行的,當(dāng)用戶發(fā)出 請(qǐng)求下一頁(yè)數(shù)據(jù)的命令時(shí),下一塊數(shù)據(jù)已經(jīng)被pull到緩存中,從而跳轉(zhuǎn)迭代地 實(shí)現(xiàn)用戶從高速緩存中讀取數(shù)據(jù)的效果。步驟c中的"軟RAID技術(shù)",是用軟件實(shí)現(xiàn)了類似于硬件RAID的技術(shù)以 提高讀寫數(shù)據(jù)庫(kù)的速度。步驟d中采用LRU和LFR替換算法,清洗數(shù)據(jù)區(qū),是設(shè)定系統(tǒng)運(yùn)行不夠穩(wěn) 定的初始化時(shí)間,段使用LRU算法,系統(tǒng)達(dá)到穩(wěn)定狀態(tài)后,使用LFU算法。本發(fā)明的優(yōu)異效果是充分挖掘客戶端,高速緩存,數(shù)據(jù)庫(kù)三層潛在的計(jì)算能力,客戶端主要負(fù) 責(zé)數(shù)據(jù)請(qǐng)求的發(fā)送和回送數(shù)據(jù)的顯示,高速緩存采用優(yōu)化的分區(qū)結(jié)構(gòu),包括映 射表區(qū)和數(shù)據(jù)區(qū),采用"跳轉(zhuǎn)迭代算法"實(shí)現(xiàn)異步的向前臺(tái)push本次査詢數(shù) 據(jù),同時(shí)向后臺(tái)pull下一個(gè)指定大小的數(shù)據(jù)塊,對(duì)數(shù)據(jù)區(qū)使用經(jīng)過(guò)優(yōu)化的LRU 算法(最近最少使用算法),從而大大提高緩存數(shù)據(jù)的命中率,其平均命中率 將達(dá)到90%以上;數(shù)據(jù)庫(kù)主要用于數(shù)據(jù)的格式化存儲(chǔ),經(jīng)過(guò)"軟RAID技術(shù)", 提高了并發(fā)性,從而顯著的改善了數(shù)據(jù)庫(kù)訪問(wèn)的性能,采用本發(fā)明可以在幾乎 無(wú)成本增加的情況下,實(shí)現(xiàn)如下功能(1):客戶端無(wú)延時(shí)顯示;(2):高性能的并發(fā)訪問(wèn);(3):數(shù)據(jù)的高 吞吐量。
圖1是海量數(shù)據(jù)高性能讀取顯示流程圖。
具體實(shí)施方式
本發(fā)明的一種海量數(shù)據(jù)高性能讀取顯示方法的具體實(shí)施步驟如下 1. 1客戶端發(fā)送一個(gè)海量數(shù)據(jù)的查詢請(qǐng)求,首先到系統(tǒng)緩存中進(jìn)行査找,其 查找過(guò)程采用映射査找算法。映射査找算法 一般的映射査找算法,大都采用 映射表的實(shí)現(xiàn)形式,在這里我們也需要借助于映射表,但是映射表是采用交集 或者并集算法映射的形式來(lái)組織的,比如要査詢age〉18, salary〉3000的人員, 首先進(jìn)行一次"爬行操作",為每一個(gè)塊進(jìn)行編號(hào),假如age〉18的人員在塊號(hào) 為l, 3, 5, 7, 9的塊上,Salary〉3000的人員在2, 3, 6, 8, 9的塊上,我們要査找的數(shù)據(jù)實(shí)際在這兩部分的交集或者并集等集合上,也就是塊3, 9上,在針對(duì)3, 9塊,再應(yīng)用交集,或者并集算法,這樣可以針對(duì)有效的塊進(jìn)行交 并集運(yùn)算,而不是對(duì)所有數(shù)據(jù)進(jìn)行運(yùn)算,從而有效的提高了査詢速率。1.2如果在地址映射表中,査找到了請(qǐng)求所對(duì)應(yīng)的地址,說(shuō)明請(qǐng)求在緩存中 命中,則到相應(yīng)的數(shù)據(jù)區(qū),取出數(shù)據(jù)區(qū)中對(duì)應(yīng)的"塊"。1.3讀塊的過(guò)程中,采用"跳轉(zhuǎn)迭代算法"。跳轉(zhuǎn)迭代算法是采用異步 的push與pull的技術(shù),所謂push就是將命中的塊返回到客戶端,因?yàn)榭蛻舳苏贸尸F(xiàn)一塊數(shù)據(jù),從而用戶看到申請(qǐng)的第一頁(yè)數(shù)據(jù),因?yàn)檎麄€(gè)過(guò)程不涉及與 數(shù)據(jù)庫(kù)的連接,所以其速度可以達(dá)到"客戶端無(wú)延時(shí)顯示"的效果,同時(shí)還異步的調(diào)用一個(gè)從后臺(tái)pull下一塊數(shù)據(jù)的函數(shù),也就是說(shuō),用戶請(qǐng)求回顯第一塊數(shù)據(jù),與用戶請(qǐng)求下一塊數(shù)據(jù)是同時(shí)進(jìn)行的。當(dāng)用戶發(fā)出請(qǐng)求下一頁(yè)數(shù)據(jù)的命令時(shí),下一塊數(shù)據(jù)已經(jīng)被pull到緩存中,從而跳轉(zhuǎn)迭代的實(shí)現(xiàn)了用戶只從高速緩存中讀取數(shù)據(jù)的效果。1.4如果數(shù)據(jù)未在緩存中命中,我們從后臺(tái)數(shù)據(jù)庫(kù)中讀取第一塊數(shù)據(jù)到緩 存。所有的數(shù)據(jù)讀取操作都采用"軟RAID技術(shù)",軟RAID技術(shù)是借鑒了鏡像 技術(shù)與延展技術(shù),鏡像就是在兩個(gè)或者多個(gè)獨(dú)立的存儲(chǔ)區(qū)上存放數(shù)據(jù)的多個(gè)拷 貝。系統(tǒng)會(huì)同時(shí)把數(shù)據(jù)寫在作為鏡像的兩個(gè)存儲(chǔ)區(qū)上,用來(lái)防止數(shù)據(jù)意外丟失。 當(dāng)其中一個(gè)存儲(chǔ)區(qū)出現(xiàn)問(wèn)題,系統(tǒng)可以訪問(wèn)鏡像的存儲(chǔ)區(qū)來(lái)繼續(xù)工作,這樣就 讓數(shù)據(jù)修復(fù)的時(shí)間縮短到了最短,此時(shí)你要做的就是從完好的備份上恢復(fù)數(shù)據(jù), 延展技術(shù)通過(guò)把數(shù)據(jù)分布到陣列的所有存儲(chǔ)區(qū)上——而延展技術(shù)的主要原理是 并行處理。假如你在一個(gè)單獨(dú)的存儲(chǔ)區(qū)上有個(gè)非常大的文件,如果要讀取它只 能從頭到尾的逐一讀取。而延展技術(shù)是把它分成小塊分別存儲(chǔ)在多個(gè)存儲(chǔ)區(qū)上, 讀取的時(shí)候就可以從多個(gè)存儲(chǔ)區(qū)里同時(shí)調(diào)用。同樣道理當(dāng)你寫入數(shù)據(jù)——特別 是大數(shù)據(jù)的時(shí)候也是這樣的。傳輸性能將能明顯的提高,在此處將兩種技術(shù)結(jié) 合,把兩者結(jié)合,可以有效提高數(shù)據(jù)訪問(wèn)的穩(wěn)定性與性能。1.5當(dāng)緩存中數(shù)據(jù)區(qū)滿時(shí),采用LRU和LFR替換算法,清洗數(shù)據(jù)區(qū),經(jīng)過(guò)優(yōu) 化的LRU和LFU替換算法LRU算法利用上一次訪問(wèn)的訪問(wèn)時(shí)間特性,對(duì)訪問(wèn)特 性的變化比較敏感,但沒(méi)有考慮數(shù)據(jù)訪問(wèn)的全局特性;LFU算法則使用所有訪問(wèn) 的頻率信息,考慮數(shù)據(jù)訪問(wèn)的整體特性,但不能適應(yīng)數(shù)據(jù)訪問(wèn)模式的變化和陣 發(fā)性的訪問(wèn).它們分別代表了兩個(gè)極端.在此處我們將兩者結(jié)合起來(lái)。在系統(tǒng)初始階段,對(duì)數(shù)據(jù)的訪問(wèn)不穩(wěn)定,具有一定的震蕩性.這時(shí)cache對(duì)訪問(wèn)時(shí)間特性 比較敏感,所以,在這個(gè)時(shí)間段內(nèi)替換算法結(jié)合數(shù)據(jù)訪問(wèn)的時(shí)間信息,增強(qiáng)了 對(duì)訪問(wèn)變化的適應(yīng)性,隨時(shí)間的推移,系統(tǒng)運(yùn)行逐步穩(wěn)定,就過(guò)渡到以訪問(wèn)頻 率信息為主,LFU算法中使用的是過(guò)去對(duì)數(shù)據(jù)對(duì)象所有的訪問(wèn)的統(tǒng)計(jì)次數(shù),當(dāng)數(shù) 據(jù)不再使用時(shí),過(guò)去的使用信息依然起作用,造成"陳舊"的數(shù)據(jù)滯留在cache 中,就是所謂的cache "污染"問(wèn)題,我們用周期法來(lái)屏蔽過(guò)去陳舊的統(tǒng)計(jì)數(shù)據(jù), 并使用線性預(yù)測(cè)法加速陳舊數(shù)據(jù)的淘汰,從而解決了 cache污染問(wèn)題,可以根 據(jù)系統(tǒng)運(yùn)行環(huán)境的具體情況設(shè)定一個(gè)初始化時(shí)間段.在這段時(shí)間內(nèi),系統(tǒng)的運(yùn)行 不夠穩(wěn)定,就使用LRU算法;此后系統(tǒng)達(dá)到穩(wěn)定狀態(tài),使用LFU算法。 實(shí)施例步驟1. 1中的映射查找算法,通過(guò)維護(hù)一個(gè)"請(qǐng)求"與"地址"的映射表, 釆用交集定位的方式來(lái)加快査找速率。步驟1.2中"塊"大小是經(jīng)過(guò)嚴(yán)格定義的,"塊"大小等于客戶端一頁(yè)所 能呈現(xiàn)的數(shù)據(jù)量,從而達(dá)到最佳匹配。步驟1. 3中"跳轉(zhuǎn)迭代算法"采用了異步的push與pull的技術(shù),所謂push 就是將命中的塊返回到客戶端,因?yàn)榭蛻舳苏贸尸F(xiàn)一塊數(shù)據(jù),從而用戶看到 申請(qǐng)的第一頁(yè)數(shù)據(jù),因?yàn)檎麄€(gè)過(guò)程不涉及與數(shù)據(jù)庫(kù)的連接,所以其速度可以達(dá) 到"客戶端無(wú)延時(shí)顯示"的效果,同時(shí)還異步的調(diào)用一個(gè)從后臺(tái)pull下一塊數(shù) 據(jù)的函數(shù),也就是說(shuō),用戶請(qǐng)求回顯第一塊數(shù)據(jù),與用戶請(qǐng)求下一塊數(shù)據(jù)是同 時(shí)進(jìn)行的。當(dāng)用戶發(fā)出請(qǐng)求下一頁(yè)數(shù)據(jù)的命令時(shí),下一塊數(shù)據(jù)已經(jīng)被pull到緩 存中,從而跳轉(zhuǎn)迭代的實(shí)現(xiàn)了用戶只從高速緩存中讀取數(shù)據(jù)的效果。步驟1.4中,采用了的"軟RAID技術(shù)",是通過(guò)軟件來(lái)實(shí)現(xiàn) 類似于硬件RAID的技術(shù),從而并發(fā)的讀取數(shù)據(jù),大大提高了讀寫數(shù)據(jù)庫(kù)的速度。步驟1. 5中,采用了經(jīng)過(guò)我們優(yōu)化的LRU和LFU交替算法。采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,可以用一種低成本的軟件架構(gòu)來(lái)解 決目前難以實(shí)現(xiàn)的海量數(shù)據(jù)性能問(wèn)題。由于本發(fā)明采用了按功能分區(qū)的高速 緩存,跳轉(zhuǎn)迭代算法,軟RAID等自主創(chuàng)新技術(shù),并且將這些技術(shù)封裝到一個(gè)高 性能的框架中,因此可以充分的釋放現(xiàn)有資源的潛能,從而可以實(shí)現(xiàn)相同效果, 成本最低的要求。
權(quán)利要求
1、一種海量數(shù)據(jù)高性能讀取顯示方法,其特征在于對(duì)客戶端發(fā)送的每一個(gè)海量數(shù)據(jù)的查詢請(qǐng)求,采用映射查找算法先到系統(tǒng)緩存中進(jìn)行查找;查找步驟如下a)在地址映射表中采用映射查找算法進(jìn)行,通過(guò)維護(hù)一個(gè)“請(qǐng)求”與“地址”的映射表,采用二叉樹查找算法進(jìn)行查詢,查找請(qǐng)求所對(duì)應(yīng)的地址,然后到相應(yīng)的數(shù)據(jù)區(qū)取出數(shù)據(jù)區(qū)中對(duì)應(yīng)的“塊”;b)讀塊的過(guò)程中,采用“跳轉(zhuǎn)迭代算法”;c)數(shù)據(jù)未在緩存中命中,從后臺(tái)數(shù)據(jù)庫(kù)中通過(guò)“軟RAID技術(shù)”讀取第一塊數(shù)據(jù)到緩存;d)當(dāng)緩存中數(shù)據(jù)區(qū)滿時(shí),采用LRU和LFR替換算法,清洗數(shù)據(jù)區(qū)。
2、 根據(jù)權(quán)利要求1所述的整體架構(gòu),其特征在于,步驟a中"塊"的大 小等于客戶端一頁(yè)所能呈現(xiàn)的數(shù)據(jù)量。
3、 根據(jù)權(quán)利要求1所述的整體架構(gòu),其特征在于,步驟b中的"跳轉(zhuǎn)迭代 算法"是采用異步的push與pull的技術(shù),所謂push是將命中的塊返回到客戶 端,同時(shí)異步調(diào)用一個(gè)從后臺(tái)pull下一塊數(shù)據(jù)的函數(shù),即用戶請(qǐng)求回顯第一塊 數(shù)據(jù)與用戶請(qǐng)求下一塊數(shù)據(jù)是同時(shí)進(jìn)行的,當(dāng)用戶發(fā)出請(qǐng)求下一頁(yè)數(shù)據(jù)的命令 時(shí),下一塊數(shù)據(jù)已經(jīng)被pull到緩存中,從而跳轉(zhuǎn)迭代地實(shí)現(xiàn)用戶從高速緩存中 讀取數(shù)據(jù)的效果。
4、 根據(jù)權(quán)利要求1所述的整體架構(gòu),其特征在于,步驟c中的"軟RAID 技術(shù)",是用軟件實(shí)現(xiàn)了類似于硬件RAID的技術(shù)以提高讀寫數(shù)據(jù)庫(kù)的速度。
5、 根據(jù)權(quán)利要求1所述的整體架構(gòu),其特征在于,步驟d中采用LRU和LFR 替換算法,清洗數(shù)據(jù)區(qū),是設(shè)定系統(tǒng)運(yùn)行不夠穩(wěn)定的初始化時(shí)間,段使用LRU 算法,系統(tǒng)達(dá)到穩(wěn)定狀態(tài)后,使用LFU算法。
全文摘要
一種海量數(shù)據(jù)高性能讀取顯示方法,能夠充分挖掘客戶端、高速緩存、數(shù)據(jù)庫(kù)三層潛在的計(jì)算能力,客戶端主要負(fù)責(zé)數(shù)據(jù)請(qǐng)求的發(fā)送和回送數(shù)據(jù)的顯示,高速緩存采用優(yōu)化的分區(qū)結(jié)構(gòu),包括映射表區(qū)和數(shù)據(jù)區(qū),采用“跳轉(zhuǎn)迭代算法”實(shí)現(xiàn)異步的向前臺(tái)push本次查詢數(shù)據(jù),同時(shí)向后臺(tái)pull下一個(gè)指定大小的數(shù)據(jù)塊,對(duì)數(shù)據(jù)區(qū)使用經(jīng)過(guò)優(yōu)化的LRU算法,從而大大提高緩存數(shù)據(jù)的命中率,其平均命中率將達(dá)到90%以上;經(jīng)過(guò)“軟RAID技術(shù)”,提高了并發(fā)性,從而顯著的改善了數(shù)據(jù)庫(kù)訪問(wèn)的性能,解決了客戶端無(wú)延時(shí)顯示,高性能的并發(fā)訪問(wèn)和數(shù)據(jù)的高吞吐量等操作海量數(shù)據(jù)時(shí)難以解決的問(wèn)題,并且這一切都是對(duì)現(xiàn)有資源的整合和挖掘,做到了成本最小化。
文檔編號(hào)H04L12/24GK101236564SQ20081001470
公開日2008年8月6日 申請(qǐng)日期2008年3月3日 優(yōu)先權(quán)日2008年3月3日
發(fā)明者公茂強(qiáng), 張熹微 申請(qǐng)人:浪潮通信信息系統(tǒng)有限公司