基于訪問(wèn)趨勢(shì)預(yù)測(cè)的時(shí)間序列數(shù)據(jù)庫(kù)緩存管理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及時(shí)間序列數(shù)據(jù)庫(kù)領(lǐng)域,具體而言本發(fā)明涉及一種基于訪問(wèn)趨勢(shì)預(yù)測(cè)的 時(shí)間序列數(shù)據(jù)庫(kù)數(shù)據(jù)緩存管理方法。
【背景技術(shù)】
[0002] 時(shí)序數(shù)據(jù)庫(kù)是廣域測(cè)量系統(tǒng)(WAMS)的基礎(chǔ),同時(shí)還可用于變電站監(jiān)控、調(diào)度、直 流、穩(wěn)控等多個(gè)系統(tǒng)中,滿足其存儲(chǔ)海量、高頻數(shù)據(jù)的需求。在實(shí)際應(yīng)用中,時(shí)間序列數(shù)據(jù)庫(kù) 存儲(chǔ)毫秒級(jí)數(shù)據(jù),數(shù)據(jù)訪問(wèn)的頻度高,訪問(wèn)數(shù)據(jù)量大,為保證訪問(wèn)效率,數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)會(huì)設(shè) 置訪問(wèn)緩存,提高訪問(wèn)效率。
[0003] 對(duì)于時(shí)間序列數(shù)據(jù)庫(kù)的數(shù)據(jù)檢索,具有以下特點(diǎn):
[0004] 1在短時(shí)間內(nèi)突發(fā)訪問(wèn)大量數(shù)據(jù),在某一段查詢中查詢某個(gè)測(cè)點(diǎn)的大量數(shù)據(jù)。
[0005] 2數(shù)據(jù)訪問(wèn)往往具有連續(xù)趨勢(shì),如每次查詢某個(gè)測(cè)點(diǎn)的一段時(shí)間內(nèi)的數(shù)據(jù),且連續(xù) 訪問(wèn)。
[0006] 3對(duì)訪問(wèn)時(shí)效要求高,數(shù)據(jù)查詢的返回速度要求高于傳統(tǒng)商用數(shù)據(jù)庫(kù)。
[0007] 為滿足查詢速度的需求,時(shí)間序列數(shù)據(jù)庫(kù)會(huì)在內(nèi)部設(shè)置內(nèi)存緩存,用于對(duì)熱點(diǎn)數(shù) 據(jù)進(jìn)行高速緩存,減少磁盤10,提高查詢效率。常規(guī)的緩存管理辦法一般為先進(jìn)先出,最近 未被使用等方法,對(duì)緩存進(jìn)行統(tǒng)一管理。
[0008] 但此種方法基于當(dāng)前已被使用過(guò)或被檢索過(guò)的數(shù)據(jù),但時(shí)間序列數(shù)據(jù)庫(kù)的數(shù)據(jù)訪 問(wèn)往往具有明顯的趨勢(shì)性,例如查詢某個(gè)測(cè)點(diǎn)的歷史曲線,會(huì)在短時(shí)間內(nèi)連續(xù)檢索一段時(shí) 間內(nèi)的數(shù)據(jù),被檢索過(guò)的數(shù)據(jù)往往不會(huì)被反復(fù)存取,而相鄰時(shí)間段內(nèi)的數(shù)據(jù)有可能被繼續(xù) 讀取,常規(guī)的緩存方法往往不會(huì)取得很好的效果。
[0009] 為解決上述問(wèn)題,本發(fā)明致力于在常規(guī)緩存外增加預(yù)讀緩存,通過(guò)對(duì)數(shù)據(jù)訪問(wèn)的 趨勢(shì)進(jìn)行分析,預(yù)測(cè)下一階段可能會(huì)被訪問(wèn)的數(shù)據(jù),得到分析結(jié)果后,提前將相關(guān)數(shù)據(jù)載入 預(yù)讀緩存,以提高數(shù)據(jù)訪問(wèn)效率。
【發(fā)明內(nèi)容】
[0010] 針對(duì)現(xiàn)有技術(shù)的缺陷和不足,本發(fā)明旨在于提供基于訪問(wèn)趨勢(shì)預(yù)測(cè)的時(shí)間序列 數(shù)據(jù)庫(kù)緩存管理方法,其適用于時(shí)間數(shù)列數(shù)據(jù)庫(kù)的數(shù)據(jù)緩存管理,預(yù)測(cè)時(shí)序庫(kù)客戶端的數(shù) 據(jù)訪問(wèn)序列,提前將數(shù)據(jù)載入內(nèi)存,提高時(shí)間序列數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)效率,降低系統(tǒng)突發(fā)10 負(fù)荷。
[0011] 為了達(dá)成上述目的,本發(fā)明的解決方案是:基于訪問(wèn)趨勢(shì)預(yù)測(cè)的時(shí)間序列數(shù)據(jù)庫(kù) 緩存管理方法,其特征在于:
[0012] 在常規(guī)數(shù)據(jù)庫(kù)提供數(shù)據(jù)訪問(wèn)緩存的基礎(chǔ)上,建立時(shí)間序列數(shù)據(jù)庫(kù)雙緩存機(jī)制;
[0013] 在常規(guī)緩存之外增加一塊預(yù)測(cè)數(shù)據(jù)緩存,用于預(yù)測(cè)訪問(wèn)數(shù)據(jù)的預(yù)加載,以便在數(shù) 據(jù)訪問(wèn)之前將其載入內(nèi)存,加快查詢速度。
[0014] 進(jìn)一步的,根據(jù)數(shù)據(jù)訪問(wèn)情況判定是否進(jìn)行趨勢(shì)分析,當(dāng)趨勢(shì)分析算法滿足啟動(dòng) 條件時(shí),系統(tǒng)啟動(dòng)趨勢(shì)分析算法,對(duì)后續(xù)訪問(wèn)趨勢(shì)進(jìn)行分析,預(yù)測(cè)后續(xù)可能被訪問(wèn)的數(shù) 據(jù)。
[0015] 進(jìn)一步的,判定啟動(dòng)趨勢(shì)分析的條件如下:
[0016] 趨勢(shì)分析啟動(dòng)條件
[0017]
[0018] 式⑴對(duì)時(shí)刻內(nèi)的查詢次數(shù)進(jìn)行積分操作,當(dāng)這段時(shí)間內(nèi)的數(shù)據(jù)查詢總次 數(shù)達(dá)到η次,η為預(yù)設(shè)的閾值,可進(jìn)行調(diào)整,則認(rèn)為目前為系統(tǒng)密集查詢時(shí)期,需要啟動(dòng)訪 問(wèn)趨勢(shì)預(yù)測(cè)算法。
[0019] 進(jìn)一步的,系統(tǒng)緩存由常規(guī)緩存與預(yù)讀緩存兩部分組成;系統(tǒng)在常規(guī)的數(shù)據(jù)緩存 之外額外加入預(yù)讀緩存,用于對(duì)于系統(tǒng)趨勢(shì)分析的預(yù)測(cè)訪問(wèn)數(shù)據(jù)進(jìn)行裝載,常規(guī)緩存與預(yù) 讀緩存統(tǒng)一由緩存管理系統(tǒng)管理,供時(shí)間序列數(shù)據(jù)庫(kù)使用。
[0020] 進(jìn)一步的,判斷訪問(wèn)預(yù)趨勢(shì)分析達(dá)到啟動(dòng)條件后,首先識(shí)別訪問(wèn)序列中的熱點(diǎn)測(cè) 點(diǎn),然后對(duì)該測(cè)點(diǎn)的檢索值相關(guān)的時(shí)間范圍進(jìn)行最小二乘法曲線擬合,得到擬合曲線后,根 據(jù)曲線獲取后續(xù)可能的訪問(wèn)時(shí)間范圍;
[0021] 對(duì)于客戶端的每次查詢可用表達(dá)式:
[0022] Query= [x,t]式(2)
[0023] 其中x表示測(cè)點(diǎn)集合,t代表查詢的時(shí)間范圍
[0024] 對(duì)于在時(shí)間范圍內(nèi)T內(nèi)S次查詢可表示為:
[0025] Q= {[x1;tj, [x2,t2], [x3,t3] ··· [xs,tj}式(3)
[0026] 對(duì)于式(3)所表示的查詢序列,對(duì)測(cè)點(diǎn)集合進(jìn)行分拆,計(jì)算每個(gè)測(cè)點(diǎn)的被查詢次 數(shù),對(duì)于查詢次數(shù)較多的測(cè)點(diǎn)形成查詢時(shí)間隊(duì)列:
[0027]X(t) = {t1,t2,t3,t4"",tn}S(4)
[0028] 對(duì)于式(4)中的測(cè)點(diǎn)X的訪問(wèn)時(shí)間序列,采用如下方法就行趨勢(shì)擬合計(jì)算:
[0029] 設(shè)擬合的公式為:
[0030] X(t) =An+B式(5)
[0031 ] 根據(jù)式(6),式(7)計(jì)算參數(shù):
[0032]
[0033]
[0034] 計(jì)算出參數(shù)后,根據(jù)式(5)計(jì)算n+1時(shí)刻的t時(shí)間值。
[0035] 進(jìn)一步的,確定裝載的緩存數(shù)據(jù)后檢測(cè)是否已經(jīng)存在于常規(guī)緩存或預(yù)讀緩存中, 已存在則不載入。
[0036] 進(jìn)一步的,對(duì)于查詢請(qǐng)求首先查詢常規(guī)緩存再查詢預(yù)讀緩存,常規(guī)緩存與預(yù)讀緩 存全不命中直接查詢數(shù)據(jù)文件。
[0037] 本基于訪問(wèn)預(yù)測(cè)算法的時(shí)序數(shù)據(jù)庫(kù)緩存預(yù)取方法,包含如下步驟:
[0038] 系統(tǒng)緩存分為常規(guī)緩存與預(yù)讀緩存兩個(gè)部分,如圖1所示,常規(guī)緩存采用常規(guī)緩 存管理算法進(jìn)行管理,預(yù)測(cè)緩存數(shù)據(jù)的裝入不是按照訪問(wèn)過(guò)的數(shù)據(jù)載入緩存的模式進(jìn)行裝 載,而是通過(guò)對(duì)客戶端訪問(wèn)趨勢(shì)的預(yù)測(cè)進(jìn)行數(shù)據(jù)的裝入。
[0039] 服務(wù)器端對(duì)客戶端的多次查詢請(qǐng)求特征進(jìn)行計(jì)算,通過(guò)設(shè)定的窗口時(shí)間對(duì)每個(gè)客 戶端的訪問(wèn)趨勢(shì)進(jìn)行計(jì)算,預(yù)測(cè)其訪問(wèn)趨勢(shì),即客戶端可能下一階段可能訪問(wèn)的數(shù)據(jù)。
[0040] 服務(wù)器端根據(jù)計(jì)算結(jié)果利用閑時(shí)對(duì)趨勢(shì)數(shù)據(jù)進(jìn)行預(yù)裝,提前將這部分?jǐn)?shù)據(jù)載入預(yù) 讀緩存。若預(yù)讀緩存滿,采用LRU算法進(jìn)行移出。
[0041 ] 客戶端后續(xù)訪問(wèn)服務(wù)端會(huì)同時(shí)從兩個(gè)緩存中進(jìn)行讀取。
[0042] 本發(fā)明采用常規(guī)緩存與預(yù)測(cè)緩存相結(jié)合的方式,對(duì)于數(shù)據(jù)查詢請(qǐng)求,采用滑動(dòng)窗 口算法對(duì)進(jìn)行判斷是否滿足趨勢(shì)預(yù)測(cè)的啟動(dòng)條件,滿足啟動(dòng)條件后,采用最小二乘法對(duì)訪 問(wèn)序列進(jìn)行擬合,判斷后續(xù)訪問(wèn)數(shù)據(jù),并將預(yù)測(cè)的可能會(huì)被訪問(wèn)的數(shù)據(jù)提前預(yù)裝入預(yù)測(cè)緩 存,以提高數(shù)據(jù)查詢效率。
[0043] 采用上述方案后,本發(fā)明具有以下特點(diǎn):
[0044] (1)系統(tǒng)存在額外緩存,可提高數(shù)據(jù)檢索效率。
[0045] (2)預(yù)測(cè)分析僅在數(shù)據(jù)訪問(wèn)趨勢(shì)性明顯的情況下進(jìn)行,采用改良的滑動(dòng)窗口算法 進(jìn)行訪問(wèn)趨勢(shì)性判斷。
[0046] (3)使用最小二乘法進(jìn)行訪問(wèn)趨勢(shì)分析,計(jì)算速度快。
[0047] (4)兩塊緩存統(tǒng)一管理,對(duì)應(yīng)用透明,不增加應(yīng)用復(fù)雜性。
【附圖說(shuō)明】
[0048] 圖1是本發(fā)明所應(yīng)用的系統(tǒng)緩存結(jié)構(gòu)圖;
[0049] 圖2是本發(fā)明中數(shù)據(jù)趨勢(shì)分析啟動(dòng)的條件示意圖;
[0050] 圖3是本發(fā)明中數(shù)據(jù)趨勢(shì)分析及緩存處理的流程圖。
【具體實(shí)施方式】
[0051] 參見(jiàn)圖1、圖2和圖3,本基于訪問(wèn)趨勢(shì)預(yù)測(cè)的時(shí)間序列數(shù)據(jù)庫(kù)緩存管理方法,具體 包括如下步驟:
[0052] (1)系統(tǒng)緩存分為常規(guī)緩存與預(yù)測(cè)緩存兩個(gè)部分,常規(guī)緩存采用常規(guī)緩存管理算 法進(jìn)行管理,預(yù)測(cè)緩存數(shù)據(jù)的裝入不是按照訪問(wèn)過(guò)的數(shù)據(jù)載入緩存的模式進(jìn)行裝載,而是 通過(guò)對(duì)客戶端數(shù)據(jù)訪問(wèn)趨勢(shì)的預(yù)測(cè)進(jìn)