專利名稱:自適應(yīng)的歷史數(shù)據(jù)壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在實時數(shù)據(jù)庫中歷史數(shù)據(jù)的壓縮技術(shù),尤其是一種自適應(yīng)的歷史數(shù)據(jù)壓縮方法。
在實時數(shù)據(jù)庫系統(tǒng)中,歷史數(shù)據(jù)壓縮技術(shù)的使用在傳統(tǒng)意義上是為了用于減少磁盤空間,針對不同的應(yīng)用,數(shù)據(jù)壓縮有多種方法,實時數(shù)據(jù)庫系統(tǒng)不僅要求能夠在有限的硬盤空間中存儲大量歷史數(shù)據(jù),而且還要求這些數(shù)據(jù)能夠快速地被訪問。然而在使用壓縮技術(shù)以后出現(xiàn)的主要問題是,在壓縮數(shù)據(jù)庫中處理查詢變得很慢,這就需要對數(shù)據(jù)壓縮方法提出了一定的限制要求,要根據(jù)過程數(shù)據(jù)的特點進行數(shù)據(jù)壓縮。對于一個實時數(shù)據(jù)庫來說,由于數(shù)據(jù)量之巨大,數(shù)據(jù)檔案的管理無疑是其最重要的部分之一,而關(guān)鍵的技術(shù)即在于能否高效地存儲和訪問數(shù)據(jù)。由于歷史數(shù)據(jù)量大,如果不進行壓縮而直接保存需要很大的物理存儲介質(zhì),因而對歷史數(shù)據(jù)的壓縮就成為實時數(shù)據(jù)庫中最重要的技術(shù)之一。
本申請人在石化應(yīng)用軟件典型示范工程中的生產(chǎn)信息管理與決策支持系統(tǒng)的研制與開發(fā)工作中,開發(fā)了一種集實時數(shù)據(jù)庫技術(shù)、時態(tài)數(shù)據(jù)庫技術(shù)為一體的實時數(shù)據(jù)庫系統(tǒng)AGILOR,在此系統(tǒng)中,對歷史數(shù)據(jù)的壓縮、歸檔管理進行了重點研究。
在歷史數(shù)據(jù)壓縮技術(shù)的研究開發(fā)過程中,借鑒了美國OSI公司開發(fā)的旋轉(zhuǎn)門壓縮算法。在旋轉(zhuǎn)門算法中,壓縮偏差參數(shù)取定為常數(shù)。實驗數(shù)據(jù)表明,針對同樣的壓縮偏差參數(shù),對一些測試的數(shù)據(jù),旋轉(zhuǎn)門算法有較高的壓縮比;而對其它一些測試的數(shù)據(jù),壓縮比要小許多。
通常,任何裝置測量數(shù)據(jù)可分為三個部分,第一部分是相對變化部分,取決于測量參數(shù)的物理變化過程,第二部分為常值部分,是絕對的,可根據(jù)以往的歷史數(shù)據(jù)進行預測,第三部分是傳感器的測量噪聲或稱為測量誤差,取決于傳感器的測量精度。在這三部分中,常值部分對旋轉(zhuǎn)門算法無影響,而起影響作用的是其它兩部分。通常相對變化部分是連續(xù)變化的、有規(guī)律的,而測量誤差是隨機的、不確定的。當傳感器測量精度高時,測量誤差就小,這時數(shù)據(jù)壓縮率主要取決于數(shù)據(jù)的相對變化部分。當傳感器測量精度低時,測量誤差大,且對數(shù)據(jù)壓縮影響很大。當測量誤差大到一定程度時,它覆蓋了數(shù)據(jù)的相對變化部分,此時,要描述數(shù)據(jù)的相對變化部分已變得無意義。
具體而言,旋轉(zhuǎn)門算法存在如下兩方面的主要不足1).壓縮偏差參數(shù)的大小對利用旋轉(zhuǎn)門算法得到的數(shù)據(jù)壓縮率影響比較大;2).對測量誤差很敏感,當傳感器的測量誤差相對比較大時,利用旋轉(zhuǎn)門算法得到的數(shù)據(jù)壓縮率顯著減小。
本發(fā)明的自適應(yīng)數(shù)據(jù)壓縮方法包括步驟壓縮時間判斷對來自歷史數(shù)據(jù)緩沖隊列的當前測量值,判斷其測量時間是否在相應(yīng)壓縮時間區(qū)域內(nèi);斜率的計算除了計算當前值斜率外,還計算當前最大斜率和當前最小斜率等;壓縮偏差參數(shù)的計算對不同時刻的測量數(shù)據(jù),根據(jù)當前最大/最小斜率,自適應(yīng)地動態(tài)計算壓縮偏差參數(shù);斜率上界和下界的計算利用新計算的壓縮偏差參數(shù),計算當前值斜率的上界和下界;壓縮測試判斷(其功能是判斷當前值是否在其壓縮范圍內(nèi),以確定被測試點是否需要存儲)當前值通過壓縮測試,系統(tǒng)將當前值的前一個值存儲到歷史數(shù)據(jù)緩沖池,并作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點,否則繼續(xù)測試下一個新的數(shù)據(jù)點。
在壓縮時間判斷步驟中還包括用于對線性型變化趨勢的數(shù)據(jù)進行預處理的數(shù)據(jù)壓縮預處理步驟(其功能是對一些具有典型特征的測量數(shù)據(jù)進行快速處理,減少相應(yīng)的壓縮處理時間),其中包括對采集靈敏度測試和二階差分上界測試步驟。
還包括數(shù)據(jù)平滑處理步驟(其功能是減弱測量噪聲對測量數(shù)據(jù)的影響,提高數(shù)據(jù)的壓縮比),其中采用濾波平滑技術(shù),對測量數(shù)據(jù)進行平滑處理。
其中當前二階差分的絕對值表達式為|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|]]>其中,yi為當前測量值,τi為當前測量值的測量時間與上一測量值的測量時間之差。
濾波平滑技術(shù)可采用的數(shù)據(jù)平滑公式之一為xi=axi-1+byi+(1-a-b)yi-1其中,xi為當前時刻的平滑處理后的結(jié)果,xi-1為前一時刻的平滑值,yi為當前時刻的測量數(shù)據(jù),yi-1為前一時刻的測量數(shù)據(jù),a和b為大于零的加權(quán)因子,且滿足a+b<1。
數(shù)據(jù)壓縮預處理對線性型變化趨勢的數(shù)據(jù)進行預處理(其作用是省略進一步的壓縮步驟,縮短對數(shù)據(jù)的壓縮時間),其中包括對采集靈敏度測試和二階差分上界測試步驟;數(shù)據(jù)平滑處理采用濾波平滑等有關(guān)技術(shù),對測量數(shù)據(jù)進行平滑處理;當傳感器測量精度比較高時,數(shù)據(jù)的平滑過程可以省略,以節(jié)省壓縮時間;斜率的計算除了計算當前值斜率外,還計算當前最大斜率和當前最小斜率等;壓縮偏差參數(shù)的計算對不同時刻的測量數(shù)據(jù),根據(jù)當前最大/最小斜率,自適應(yīng)地動態(tài)計算壓縮偏差參數(shù);斜率上界和下界的計算利用新計算的壓縮偏差參數(shù),計算當前值斜率的上界和下界;壓縮測試判斷當前值通過壓縮測試,系統(tǒng)將當前值的前一個值存儲到歷史數(shù)據(jù)緩沖池,并作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點,否則繼續(xù)測試下一個新的數(shù)據(jù)點。
圖5是由旋轉(zhuǎn)門算法獲得的存儲點的示意圖;圖6是由本發(fā)明自適應(yīng)數(shù)據(jù)壓縮方法獲得的存儲點的示意圖。
在壓縮時間判斷步驟2中,可以包含對線性型變化趨勢的數(shù)據(jù)進行壓縮預處理步驟,其中在當前測量值與上一測量值之差的絕對值小于采集靈敏度(事件A),當前二階差分的絕對值小于差分上界(事件B)時,判斷事件A和事件B。當事件A和事件B同時成立時,當前的測量值不存貯,不執(zhí)行下面的步驟,繼續(xù)考察下一個測量數(shù)據(jù)。其中當前二階差分的絕對值表達式之一是|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|,]]>其中,yi為當前測量值,τi為當前測量值的測量時間與上一測量值的測量時間之差。
接下來,對經(jīng)壓縮時間判斷之后獲取的數(shù)據(jù)進行平滑處理判斷步驟3,當測量傳感器的測量精度很差時,需要對當前測量值進行數(shù)據(jù)平滑處理步驟31。數(shù)據(jù)平滑處理步驟31可以按下面的數(shù)據(jù)平滑公式進行xi=axi-1+byi+(1-a-b)yi-1其中,xi為當前時刻的平滑處理后的結(jié)果,xi-1為前一時刻的平滑值,yi為當前時刻的測量數(shù)據(jù),yi-1為前一時刻的測量數(shù)據(jù),a和b為大于零的加權(quán)因子,且滿足a+b<1。數(shù)據(jù)平滑處理步驟31中也可以采用其它的數(shù)據(jù)平滑公式。
接下來,對經(jīng)平滑處理判斷步驟3的測量數(shù)據(jù)執(zhí)行斜率的計算步驟4,此步驟提供下一步計算壓縮偏差參數(shù)的必要參數(shù)當前值斜率(S)=(當前值-上一個存儲點值)/時間差,當S大于當前最大斜率值時,用新值S來代替當前最大斜率,當S小于當前最小斜率值時,用新值S來代替當前最小斜率,這里的時間差是指當前值的測量時間與上一存儲點值的測量時間之差。
接下來,對來自斜率的計算步驟4的測量數(shù)據(jù)執(zhí)行壓縮偏差參數(shù)計算步驟5,此步驟根據(jù)數(shù)據(jù)的動態(tài)變化情況,計算相應(yīng)的壓縮偏差參數(shù),提供下一步計算需要的自適應(yīng)變化參數(shù)。下面給出一種計算當前壓縮偏差參數(shù)的指數(shù)形式當前壓縮偏差參數(shù)=α·exp{-β(當前最大斜率-當前最小斜率)×時間差}其中,參數(shù)α和β為給定的正數(shù),這里α稱為當前壓縮偏差參數(shù)的上界,β稱為當前壓縮偏差參數(shù)的變化參數(shù),exp(.)為指數(shù)函數(shù)。α和β的選擇可根據(jù)以往數(shù)據(jù)的統(tǒng)計值以及傳感器的測量精度來確定。
接下來,利用當前壓縮偏差參數(shù),計算當前值斜率的當前下界S1和當前上界S2(步驟6),此步驟為數(shù)據(jù)壓縮所做的測試判斷提供臨界參數(shù)S1=當前值斜率-當前壓縮偏差參數(shù)/時間差S2=當前值斜率+當前壓縮偏差參數(shù)/時間差對新算的S1,當大于原有的S1時取新值;對新算的S2,當小于原有的S2時取新值。
接下來,執(zhí)行壓縮測試判斷步驟7。其中,當前值斜率S小于更新后的S1(事件C),當前值斜率S大于更新后的S2(事件D),考察事件C和事件D。當事件C和事件D有一發(fā)生時,當前值通過壓縮測試,系統(tǒng)將當前值的前一個值存儲到歷史數(shù)據(jù)緩沖池,并作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點,并對當前最大/最小斜率、S1和S2賦初值;當事件C和事件D都不發(fā)生時,繼續(xù)測試下一個新的數(shù)據(jù)點。
執(zhí)行完上述各步驟后,當新值到來時,重復以上過程。
為了更好的對本發(fā)明的優(yōu)勢進行描述,下面用已有技術(shù)作為對比例子,與本發(fā)明的上述實施例進行比較。
為簡便起見,在下面的仿真中,未考慮最大壓縮時間和最小壓縮時間。此外,數(shù)據(jù)壓縮率定義為(M-N)/M,其中M為總的測試數(shù)據(jù)個數(shù),N為總的存貯數(shù)據(jù)個數(shù),這樣未存貯的(或稱為被壓縮的)數(shù)據(jù)總個數(shù)是M-N。
在此比較中,參予仿真的點(包括初始點)共1001個(未含噪聲,見圖2中的實線),在旋轉(zhuǎn)門算法中壓縮偏差參數(shù)取為0.01;在本發(fā)明的自適應(yīng)數(shù)據(jù)壓縮方法中,壓縮偏差參數(shù)初始值也取為0.01,計算當前壓縮偏差參數(shù)的上界和其相應(yīng)的變化參數(shù)分別取為0.05和0.5。通過仿真顯示,用旋轉(zhuǎn)門算法來壓縮共需要存貯16個點(包括初始點和最后一個點),而用本發(fā)明的自適應(yīng)數(shù)據(jù)壓縮方法來壓縮只需要存貯8個點(包括初始點和最后一個點),壓縮率得到提高。圖2中給出旋轉(zhuǎn)門和本發(fā)明的方法的存貯點比較,圖中標記為o的點為本發(fā)明的存貯點,而標記為*的點則為旋轉(zhuǎn)門算法的存貯點。
在圖3和圖4中分別給出通過本發(fā)明技術(shù)和旋轉(zhuǎn)門算法得到的當前值斜率及其斜率變化區(qū)域。從圖中看出,用旋轉(zhuǎn)門算法來壓縮需要將這1001個數(shù)據(jù)分為15段測試數(shù)據(jù)集,而本發(fā)明只需要分為7段測試數(shù)據(jù)集。圖中的實線為各段中當前值斜率變化曲線,點線為各段斜率的上界變化曲線,點劃線為各段斜率的下界變化曲線。仿真結(jié)果顯示,通過自適應(yīng)地調(diào)整當前壓縮偏差參數(shù),動態(tài)地放大了各段初始當前值斜率的變化范圍,有效地提高了數(shù)據(jù)的壓縮率。
在上面仿真的數(shù)據(jù)中增加標準差為0.01的正態(tài)隨機數(shù),這時由旋轉(zhuǎn)門算法得到的數(shù)據(jù)壓縮率只有43.66%,而通過本發(fā)明得到的數(shù)據(jù)壓縮率達到96.60%(見圖5和圖6)。圖5中的曲線為由旋轉(zhuǎn)門算法得到的存貯點連線(共564個數(shù)據(jù)點);而圖6中的實線部分是由1001個實際測量值連成,圖中標記為o的點為由本發(fā)明得到的存貯點(共34個數(shù)據(jù)點)。明顯地,與旋轉(zhuǎn)門相比,本發(fā)明的數(shù)據(jù)壓縮率得到很大的提高,并在一定程度上起到了對測量噪聲的抑制作用。
權(quán)利要求
1.在當前測量時間差太大時,系統(tǒng)將當前值的前一個值存儲到歷史數(shù)據(jù)緩沖池,并作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點;斜率的計算除了計算當前值斜率外,還計算當前最大斜率和當前最小斜率等;壓縮偏差參數(shù)的計算對不同時刻的測量數(shù)據(jù),根據(jù)當前最大/最小斜率,自適應(yīng)地動態(tài)計算壓縮偏差參數(shù);斜率上界和下界的計算利用新計算的壓縮偏差參數(shù),計算當前值斜率的上界和下界;壓縮測試判斷當前值通過壓縮測試,系統(tǒng)將當前值的前一個值存儲到歷史數(shù)據(jù)緩沖池,并作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點,否則繼續(xù)測試下一個新的數(shù)據(jù)點;歷史數(shù)據(jù)緩沖利用歷史數(shù)據(jù)緩沖池對關(guān)鍵的歷史數(shù)據(jù)進行存儲。
2.根據(jù)權(quán)利要求1所述的自適應(yīng)數(shù)據(jù)壓縮方法,其特征在于在壓縮時間判斷步驟中還包括用于對線性型變化趨勢的數(shù)據(jù)進行預處理的數(shù)據(jù)壓縮預處理步驟,其中包括對采集靈敏度測試和二階差分上界測試步驟。
3.根據(jù)權(quán)利要求1或2所述自適應(yīng)數(shù)據(jù)壓縮方法,其特征在于還包括數(shù)據(jù)平滑處理步驟,其中采用濾波平滑技術(shù),對測量數(shù)據(jù)進行平滑處理。
4.根據(jù)權(quán)利要求2所述的自適應(yīng)數(shù)據(jù)壓縮方法,其特征在于所述當前二階差分的絕對值表達式為|(τi-1yi-(τi-1+τi)yi-1+τiyi-2)/(τi-12τi)|]]>其中,yi為當前測量值,τi為當前測量值的測量時間與上一測量值的測量時間之差。
5.根據(jù)權(quán)利要求3所述的自適應(yīng)數(shù)據(jù)壓縮方法,其特征在于所述濾波平滑技術(shù)可采用的數(shù)據(jù)平滑公式為Xi=axi-1+byi+(1-a-b)yi-1其中,xi為當前時刻的平滑處理后的結(jié)果,xi-1為前一時刻的平滑值,yi為當前時刻的測量數(shù)據(jù),yi-1為前一時刻的測量數(shù)據(jù),a和b為大于零的加權(quán)因子,且滿足a+b<1。
全文摘要
對數(shù)據(jù)庫中的歷史數(shù)據(jù)壓縮處理的自適應(yīng)數(shù)據(jù)壓縮方法,包括步驟壓縮時間判斷對當前測量值,判斷測量時間是否在給定的壓縮時間區(qū)間內(nèi),在當前測量值的時差太小時,不執(zhí)行后面的步驟,繼續(xù)考察下一測量數(shù)據(jù);在當前測量值的時差太大時,存儲當前值的前一值,作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點;斜率的計算計算當前值斜率及當前最大斜率和最小斜率;對不同時刻的測量數(shù)據(jù),根據(jù)當前最大/最小斜率,自適應(yīng)地動態(tài)計算壓縮偏差參數(shù);用新計算的壓縮偏差參數(shù),計算當前值斜率的上界和下界;壓縮測試判斷當前值通過壓縮測試,存儲當前值的前一個值,作為下一輪數(shù)據(jù)壓縮測試的起點和新的上一存儲點,否則繼續(xù)測試下一個新的數(shù)據(jù)點。
文檔編號G06F17/00GK1459743SQ0212038
公開日2003年12月3日 申請日期2002年5月24日 優(yōu)先權(quán)日2002年5月24日
發(fā)明者王宏安, 金宏, 王強, 戴國忠 申請人:中國科學院軟件研究所