一種基于裝載因子的緩存數(shù)據(jù)預(yù)加載與替換方法
【專利摘要】本發(fā)明公開了一種基于裝載因子的緩存數(shù)據(jù)預(yù)加載與替換方法,實(shí)現(xiàn)在海量數(shù)據(jù)模式下,對(duì)數(shù)據(jù)的快速預(yù)加載和替換。裝載因子直觀地說就是在Ri次對(duì)數(shù)據(jù)的讀請(qǐng)求中數(shù)據(jù)命中緩存的次數(shù)。該方法基于數(shù)據(jù)的整體分布因子來計(jì)算各個(gè)數(shù)據(jù)的裝載因子,根據(jù)數(shù)據(jù)的裝載因子來判斷該數(shù)據(jù)是否應(yīng)該放在緩存中。因?yàn)檠b載因子是表示數(shù)據(jù)命中緩存的次數(shù),因此當(dāng)裝載因子占比數(shù)據(jù)讀取次數(shù)Ri超過一定閥值的時(shí)候,我們就可以認(rèn)為該數(shù)據(jù)更適合預(yù)先裝載到緩存中,從而在系統(tǒng)初始化的時(shí)候采取加載該數(shù)據(jù)的策略。
【專利說明】 一種基于裝載因子的緩存數(shù)據(jù)預(yù)加載與替換方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于海量數(shù)據(jù)環(huán)境的數(shù)據(jù)緩存方法,尤其涉及一種對(duì)海量數(shù)據(jù)實(shí)現(xiàn)快速緩存預(yù)加載和替換的方法。
【背景技術(shù)】
[0002]隨著企業(yè)的全球化及海量數(shù)據(jù)處理的需求不斷發(fā)展,證券、銀行等大型金融企業(yè)積累了海量的用戶數(shù)據(jù),數(shù)據(jù)量和用戶數(shù)的劇增,給這些企業(yè)系統(tǒng)帶來了很大的壓力,高速增長的用戶請(qǐng)求以及海量的后臺(tái)數(shù)據(jù)給Web系統(tǒng)帶來了很多性能問題,導(dǎo)致整個(gè)系統(tǒng)響應(yīng)緩慢,用戶體驗(yàn)急劇下降。“要么改進(jìn)系統(tǒng),要么流失客戶?!闭枪I(yè)界很多公司不得不面對(duì)的問題,如何有效減少用戶訪問延時(shí),提高系統(tǒng)服務(wù)質(zhì)量是一個(gè)迫切需要解決的難題。緩存技術(shù)被認(rèn)為是一種有效的解決方案,它能有效緩解Web系統(tǒng)瓶頸、減少網(wǎng)絡(luò)數(shù)據(jù)傳輸以及提升系統(tǒng)的擴(kuò)展性。
[0003]Web緩存技術(shù)可以極大的提高系統(tǒng)的響應(yīng)速度,在近幾年的研究中,提出了很多種緩存方法,它們一般基于數(shù)據(jù)的一些特性,比如最近訪問時(shí)間、訪問次數(shù)、數(shù)據(jù)大小,數(shù)據(jù)加載成本以及數(shù)據(jù)修改時(shí)間等,通過對(duì)這些基礎(chǔ)的數(shù)據(jù)特征分析采用不同的方法來確定緩存策略,試圖盡量減少各種成本度量,從而提高命中率,減少數(shù)據(jù)訪問延時(shí)和成本。
[0004]目前對(duì)于緩存技術(shù)的研究主要分為緩存預(yù)取方法和緩存替換方法兩方面,緩存預(yù)取是一種主動(dòng)式的緩存技術(shù)。其基本思想是利用先前用戶訪問的模式和先驗(yàn)知識(shí),把用戶最有可能訪問的內(nèi)容預(yù)先加載到緩存中。根據(jù)預(yù)取算法使用的用戶行為特征信息不同,可以分為以下兩類:
[0005]一、基于多用戶的行為模式:利用所有或多個(gè)用戶的行為模式的特征,不管當(dāng)前請(qǐng)求的用戶是誰,都預(yù)取相同的數(shù)據(jù),一個(gè)典型的例子是根據(jù)流行度緩存排在前10的數(shù)據(jù)。
[0006]二、基于單用戶的行為模式:這種模式基于對(duì)單個(gè)用戶的行為進(jìn)行分析,并基于用戶的行為模式進(jìn)行預(yù)測,一個(gè)典型的例子是利用馬爾可夫模型(Markov modeling),其基本思想是根據(jù)用戶的訪問歷史建立一個(gè)馬爾可夫圖,并用該圖來預(yù)測用戶下一步的行為。
[0007]然而傳統(tǒng)的緩存方法要么只是著眼于單個(gè)用戶的訪問習(xí)慣,基于當(dāng)前用戶的行為模式進(jìn)行預(yù)測,沒有從全盤考慮緩存性能,或者需要加載所有數(shù)據(jù)才能判斷哪些數(shù)據(jù)是需要緩存的,對(duì)于海量數(shù)據(jù)來說,加載所有數(shù)據(jù)是不可能的。因此傳統(tǒng)的緩存方法并不適合海量數(shù)據(jù)的應(yīng)用服務(wù)。
【發(fā)明內(nèi)容】
[0008]針對(duì)傳統(tǒng)緩存方法存在的問題,本發(fā)明提供了一種基于裝載因子的緩存數(shù)據(jù)預(yù)加載與替換方法,實(shí)現(xiàn)在海量數(shù)據(jù)模式下,對(duì)數(shù)據(jù)的快速預(yù)加載和替換。裝載因子直觀地說就是在Ri次對(duì)數(shù)據(jù)的讀請(qǐng)求中數(shù)據(jù)命中緩存的次數(shù)。該方法基于數(shù)據(jù)的整體分布因子來計(jì)算各個(gè)數(shù)據(jù)的裝載因子,根據(jù)數(shù)據(jù)的裝載因子來判斷該數(shù)據(jù)是否應(yīng)該放在緩存中。因?yàn)檠b載因子是表示數(shù)據(jù)命中緩存的次數(shù),因此當(dāng)裝載因子占比數(shù)據(jù)讀取次數(shù)Ri超過一定閥值的時(shí)候,我們就可以認(rèn)為該數(shù)據(jù)更適合預(yù)先裝載到緩存中,從而在系統(tǒng)初始化的時(shí)候采取加載該數(shù)據(jù)的策略?;谝陨厦枋觯o出數(shù)據(jù)定義如下:
[0009]R1:數(shù)據(jù)對(duì)象i的讀請(qǐng)求數(shù);
[0010]P1:在Ri次讀請(qǐng)求中,數(shù)據(jù)對(duì)象i命中緩存的次數(shù),即裝載因子;
[0011]λ:系統(tǒng)的數(shù)據(jù)分布因子,反應(yīng)了系統(tǒng)整體的數(shù)據(jù)分布情況。
[0012]基于以上定義,裝載因子的數(shù)據(jù)預(yù)加載和替換方法步驟描述如下:
[0013]一、計(jì)算系統(tǒng)的數(shù)據(jù)分布因子λ,λ反應(yīng)系統(tǒng)整體的數(shù)據(jù)分布,對(duì)于符合一定分布模型的系統(tǒng),比如泊松分布的數(shù)據(jù),λ可以從理論上計(jì)算得到,對(duì)于無法通過理論計(jì)算獲得λ,需要用數(shù)據(jù)庫統(tǒng)計(jì)算法得到;
[0014]二、數(shù)據(jù)預(yù)加載,系統(tǒng)啟動(dòng)的時(shí)候,加載數(shù)據(jù)庫中的數(shù)據(jù),并根據(jù)系統(tǒng)的數(shù)據(jù)分布因子計(jì)算該數(shù)據(jù)的裝載因子Pi,根據(jù)數(shù)據(jù)的裝載因子確定該數(shù)據(jù)是否應(yīng)該預(yù)先加載到緩存
中,當(dāng)I的時(shí)候,加載該數(shù)據(jù)到緩存中,否則該數(shù)據(jù)不預(yù)加載;
[0015]三、系統(tǒng)預(yù)加載后緩存數(shù)據(jù)采用惰性更新的方式,當(dāng)用戶訪問某個(gè)數(shù)據(jù)的時(shí)候,重新計(jì)算該數(shù)據(jù)的裝載因子,根據(jù)新的裝載因子來判斷該數(shù)據(jù)是放到緩存中還是從緩存中移除;
[0016]四、當(dāng)?shù)谌接行碌臄?shù)據(jù)需要裝入緩存而緩存數(shù)據(jù)已滿的情況,則采用最近最少使用LRU方法替換緩存中的數(shù)據(jù)。
[0017]五、更新數(shù)據(jù)分布因子λ,當(dāng)數(shù)據(jù)量比較少的時(shí)候,對(duì)于海量數(shù)據(jù)系統(tǒng)來說,分布因子λ不會(huì)有明顯的變化,但當(dāng)數(shù)據(jù)累積到一定量后則會(huì)影響整個(gè)系統(tǒng)的數(shù)據(jù)分布,為了計(jì)算的準(zhǔn)確性,需要隔一段時(shí)間(比如一天一次)重新計(jì)算下分布因子λ。然后再循環(huán)采用執(zhí)行第三步~第五步的步驟,保持緩存中數(shù)據(jù)的時(shí)效性和命中率。
[0018]本發(fā)明具有如下技術(shù)效果:
[0019]1、本發(fā)明通過數(shù)據(jù)裝載因子可以直接通過計(jì)算對(duì)數(shù)據(jù)做出是否緩存的判斷,而無須等遍歷整個(gè)數(shù)據(jù)后再做出是否緩存的策略,從而使整個(gè)緩存系統(tǒng)在系統(tǒng)啟動(dòng)的時(shí)候就有很高的命中率。
[0020]2、本發(fā)明采用惰性更新的方式,系統(tǒng)運(yùn)行過程中緩存替換的開銷很小。
[0021]3、在系統(tǒng)的緩存達(dá)到動(dòng)態(tài)平衡后,該方法也比傳統(tǒng)的緩存替換方法命中率要高,該方法會(huì)優(yōu)先緩存“熱點(diǎn)”數(shù)據(jù)。
[0022]4、本發(fā)明更適用于海量的數(shù)據(jù)系統(tǒng),在海量數(shù)據(jù)系統(tǒng)中,很多傳統(tǒng)的方法無法做出緩存決策,因?yàn)樗鼈儫o法加載比對(duì)所有的數(shù)據(jù)。
【具體實(shí)施方式】
[0023]數(shù)據(jù)定義:
[0024]R1:數(shù)據(jù)對(duì)象i的讀請(qǐng)求數(shù),
[0025]S1:數(shù)據(jù)對(duì)象i的緩存大小,
[0026]MT1:數(shù)據(jù)對(duì)象i從緩存中讀取的時(shí)延,
[0027]DT1:數(shù)據(jù)對(duì)象i未緩存的讀取時(shí)延,
[0028]λ:數(shù)據(jù)的分布特征,[0029]Μ:總的可用緩存的大小,
[0030]η:總的數(shù)據(jù)個(gè)數(shù)。
[0031]則上述方法過程中的各參數(shù)計(jì)算公式如下:
【權(quán)利要求】
1.一種基于裝載因子對(duì)緩存數(shù)據(jù)進(jìn)行預(yù)加載和替換的方法,其特征在于,包括如下步驟: (1)計(jì)算系統(tǒng)的數(shù)據(jù)的分布情況,對(duì)于符合一定分布模型的系統(tǒng),可以使用統(tǒng)計(jì)模型計(jì)算得到分布情況,對(duì)于無法找到合適的分布模型的數(shù)據(jù),則通過使用數(shù)據(jù)庫統(tǒng)計(jì)算法得到; (2)在系統(tǒng)啟動(dòng)時(shí),根據(jù)數(shù)據(jù)的分布情況,計(jì)算需要加載的數(shù)據(jù)的裝載因子,一旦裝載因子(即緩存命中次數(shù))占數(shù)據(jù)訪問次數(shù)比例超過閥值,則將其加載到緩存,否則不預(yù)加載; (3)系統(tǒng)運(yùn)行過程中采用惰性更新方法,當(dāng)用戶訪問某個(gè)數(shù)據(jù)時(shí),重新計(jì)算該數(shù)據(jù)的裝載因子,根據(jù)新的裝載因子決定是否需要將數(shù)據(jù)放到緩存中或是否需要從緩存中移除; (4)在第三步中有新的數(shù)據(jù)需要更新時(shí),替換緩存中的數(shù)據(jù); (5)對(duì)于數(shù)據(jù)量較少的系統(tǒng)不更新分布因子,但是在數(shù)據(jù)量增長后隔一定間隔更新一次裝載因子之后循環(huán)采用第三到第五步的策略,保持緩存中數(shù)據(jù)的時(shí)效性和命中率。
【文檔編號(hào)】G06F17/30GK103942315SQ201410166680
【公開日】2014年7月23日 申請(qǐng)日期:2014年4月22日 優(yōu)先權(quán)日:2014年4月22日
【發(fā)明者】王新根, 王新宇 申請(qǐng)人:杭州邦盛金融信息技術(shù)有限公司