專利名稱:生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)壓縮方法,具體來說是一種對生產(chǎn)型時(shí)序數(shù)據(jù)進(jìn)行的實(shí)時(shí)全息無損壓縮方法。
背景技術(shù):
目前,從計(jì)算機(jī)硬軟件到工業(yè)控制技術(shù)領(lǐng)域都在飛速發(fā)展,計(jì)算機(jī)領(lǐng)域的多核技術(shù)、多節(jié)點(diǎn)高速物理內(nèi)存技術(shù)都已經(jīng)成為成熟穩(wěn)定的并行技術(shù)支撐。在工業(yè)控制領(lǐng)域,尤其是電力行業(yè),由于控制和應(yīng)用的精細(xì)化程度不斷提升,人們對生產(chǎn)型時(shí)序數(shù)據(jù)的應(yīng)用需求已經(jīng)提高到了新的高度生產(chǎn)型時(shí)序數(shù)據(jù)的采樣已經(jīng)精確到100幀/秒;和分析運(yùn)行相關(guān)的時(shí)序數(shù)據(jù)通常都要求在線存儲5年以上等。由于單個(gè)數(shù)據(jù)的精度高、多年的運(yùn)行過程中積累了相當(dāng)大量的實(shí)時(shí)數(shù)據(jù),如果單純用存儲設(shè)備存儲這些數(shù)據(jù),將需要耗費(fèi)大量的存儲設(shè)備和機(jī)房用于存放這些設(shè)備,另外,這些數(shù)據(jù)不但需要安全有效地存儲,還需要在后期的生產(chǎn)實(shí)踐中隨時(shí)提取和訪問。而現(xiàn)代生產(chǎn)控制領(lǐng)域?qū)?shù)據(jù)的規(guī)模和響應(yīng)速度方面都提出了非常高的要求,可以說,這對生產(chǎn)經(jīng)營者來說,都是個(gè)巨大的挑戰(zhàn)。為滿足上述需求,不得不耗費(fèi)相當(dāng)大量的生產(chǎn)經(jīng)營成本以達(dá)到目的。尤其在數(shù)據(jù)的壓縮存儲技術(shù)方面,現(xiàn)有的數(shù)據(jù)處理方法都無法直接運(yùn)用于上述領(lǐng)域的生產(chǎn)型時(shí)序數(shù)據(jù)上。傳統(tǒng)上對生產(chǎn)型時(shí)序數(shù)據(jù)的處理有兩種策略(1)文件級別的壓縮,類似于 WinZip等,這種壓縮模式不能很好地解決生產(chǎn)型時(shí)序數(shù)據(jù)的原因包括壓縮實(shí)時(shí)性差、壓縮期運(yùn)算量巨大和回取時(shí)需要解壓整個(gè)文件。同時(shí),這類壓縮技術(shù)在處理生產(chǎn)型實(shí)時(shí)數(shù)據(jù)時(shí)的針對性不強(qiáng),壓縮比低下。(2)旋轉(zhuǎn)門有損壓縮,即采用一定的線性過濾規(guī)則,丟棄一部分變化較小的數(shù)據(jù),以過濾來達(dá)到壓縮的目地;旋轉(zhuǎn)門有損壓縮的實(shí)現(xiàn)方案如下旋轉(zhuǎn)門壓縮算法(SDT)是一種直線趨勢化壓縮算法,其本質(zhì)是通過一條由起點(diǎn)和終點(diǎn)確定的直線代替一系列連續(xù)數(shù)據(jù)點(diǎn)。該算法需要記錄每段時(shí)間間隔長度、起點(diǎn)數(shù)據(jù)和終點(diǎn)數(shù)據(jù),注意到前一段的終點(diǎn)數(shù)據(jù)即為下一段的起點(diǎn)數(shù)據(jù)。其基本原理較為簡單,見附圖 1所示的原理圖第一個(gè)數(shù)據(jù)點(diǎn)a上下各有一點(diǎn),它們與a點(diǎn)之間的距離為E,這兩個(gè)點(diǎn)作為 “門”的兩個(gè)支點(diǎn)。當(dāng)只有第一個(gè)數(shù)據(jù)點(diǎn)時(shí),兩扇門都是關(guān)閉的;隨著點(diǎn)數(shù)越來越多,門將逐步打開;注意到每扇門的寬度是可以伸縮的,在一段時(shí)間間隔里面,門一旦打開就不能閉; 只要兩扇門未達(dá)到平行,或者說兩個(gè)內(nèi)角之和小于180°,這種“轉(zhuǎn)門”操作即可繼續(xù)進(jìn)行。 圖中第一個(gè)時(shí)間段是從a到e,結(jié)果是用a點(diǎn)到e點(diǎn)之間的直線代替數(shù)據(jù)點(diǎn)(a,b,c, d,e); 第二個(gè)時(shí)間間隔從e點(diǎn)開始,開始時(shí)兩扇門關(guān)閉,然后逐步打開,后續(xù)操作與前一段類似。旋轉(zhuǎn)門壓縮算法(SDT)雖然實(shí)時(shí)性較強(qiáng),但由于其壓縮數(shù)據(jù)時(shí),會丟棄一部分?jǐn)?shù)據(jù),因此也不能滿足對生產(chǎn)型時(shí)序數(shù)據(jù)需要無損壓縮的需求。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,該方法能夠?qū)Ω餍懈鳂I(yè)的生產(chǎn)型時(shí)序數(shù)據(jù)和文件進(jìn)行高效、無損地壓縮,能夠滿足基礎(chǔ)工業(yè)、電力、電信、化工、鋼鐵等生產(chǎn)數(shù)據(jù)龐大的行業(yè)中對時(shí)序性數(shù)據(jù)傳輸、分發(fā)、計(jì)算加工和存儲的迫切需求。本發(fā)明的目的可通過以下的技術(shù)措施來實(shí)現(xiàn)一種生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于對序號為1 N的N 個(gè)生產(chǎn)型時(shí)序數(shù)據(jù)中每個(gè)數(shù)據(jù)的三個(gè)數(shù)值域時(shí)間標(biāo)簽、數(shù)據(jù)數(shù)值和數(shù)據(jù)質(zhì)量分別進(jìn)行獨(dú)立壓縮,并分別形成時(shí)間標(biāo)簽壓縮數(shù)據(jù)、數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)和數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù);再將三部分壓縮數(shù)據(jù)合并為一個(gè)完整的壓縮數(shù)據(jù)。其中,對所述時(shí)間標(biāo)簽的壓縮過程為la)、將第一個(gè)時(shí)間標(biāo)簽記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,計(jì)算前兩個(gè)時(shí)間標(biāo)簽的差值作為預(yù)測時(shí)間標(biāo)簽差值,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;lb)、從第三個(gè)時(shí)間標(biāo)簽開始,依次計(jì)算當(dāng)前時(shí)間標(biāo)簽與其前一個(gè)時(shí)間標(biāo)簽之間的時(shí)間標(biāo)簽差值,并將當(dāng)前時(shí)間標(biāo)簽差值與預(yù)測時(shí)間標(biāo)簽差值對比如果兩者相等,則當(dāng)前時(shí)間標(biāo)簽為規(guī)則時(shí)間標(biāo)簽,并且,不處理當(dāng)前時(shí)間標(biāo)簽;否則,當(dāng)前時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽,將當(dāng)前的非規(guī)則時(shí)間標(biāo)簽及其序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;Ic)、重復(fù)步驟lb)直到處理完全部的N個(gè)時(shí)間標(biāo)簽;對所述數(shù)據(jù)數(shù)值的壓縮過程為2a)、將第一個(gè)數(shù)據(jù)數(shù)值記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;2b)、計(jì)算前K+1個(gè)數(shù)據(jù)數(shù)值中兩兩相鄰值之間的差值,共得到K個(gè)預(yù)測數(shù)據(jù)數(shù)值差值,記為Δ、,……,AVlri,并記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;所述預(yù)測數(shù)據(jù)數(shù)值差值的序號為0 k-Ι ;2c)、從第K+2個(gè)數(shù)據(jù)數(shù)值開始,對每個(gè)數(shù)據(jù)數(shù)值記錄一個(gè)固定位的壓縮數(shù)據(jù)頭, 并計(jì)算當(dāng)前數(shù)據(jù)數(shù)值與其前一個(gè)數(shù)據(jù)數(shù)值的數(shù)據(jù)數(shù)值差值如果當(dāng)前數(shù)據(jù)數(shù)值差值等于預(yù)測數(shù)據(jù)數(shù)值差值中的一個(gè),則該數(shù)據(jù)數(shù)值的壓縮數(shù)據(jù)頭記為0,接著再記錄對應(yīng)的預(yù)測數(shù)據(jù)數(shù)值差值的序號;否則,找出預(yù)測數(shù)據(jù)數(shù)值差值中與當(dāng)前數(shù)據(jù)數(shù)值差值最接近的一個(gè)預(yù)測差值Δ\,將前一個(gè)數(shù)據(jù)數(shù)值+ 的值與當(dāng)前數(shù)據(jù)數(shù)值進(jìn)行異或運(yùn)算,并用壓縮數(shù)據(jù)頭記錄運(yùn)算結(jié)果中從最高位開始連續(xù)相同位的個(gè)數(shù)η,再記錄最接近的預(yù)測數(shù)據(jù)數(shù)值差值的序號j、當(dāng)前數(shù)據(jù)數(shù)值的低32-n位數(shù)據(jù)值;對所述數(shù)據(jù)質(zhì)量的壓縮過程為3a)、將第一個(gè)數(shù)據(jù)質(zhì)量記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;北)、計(jì)算前K+1個(gè)數(shù)據(jù)質(zhì)量中兩兩相鄰值之間的差值,作為預(yù)測數(shù)據(jù)質(zhì)量差值, 再將K個(gè)預(yù)測數(shù)據(jù)質(zhì)量差值記錄到最終的數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;3c)、從第K+2個(gè)數(shù)據(jù)質(zhì)量開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量和其前一個(gè)數(shù)據(jù)質(zhì)量的數(shù)據(jù)質(zhì)量差值,如果當(dāng)前差值等于前K個(gè)差值中的某個(gè)Δ i,則當(dāng)前數(shù)據(jù)質(zhì)量為規(guī)則數(shù)據(jù)質(zhì)量,并將該預(yù)測數(shù)據(jù)質(zhì)量差值的序號i記錄臨時(shí)壓縮數(shù)據(jù)A中;反之,當(dāng)前數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量,并將當(dāng)前數(shù)據(jù)質(zhì)量的序號和當(dāng)前的數(shù)據(jù)質(zhì)量差值記錄到臨時(shí)壓縮數(shù)據(jù)B中;3d)、重復(fù)步驟3c),并記錄非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù),直到處理完全部N個(gè)數(shù)據(jù)質(zhì)量后將非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù)、臨時(shí)壓縮數(shù)據(jù)A、臨時(shí)壓縮數(shù)據(jù)B順序拼接到整個(gè)數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)后面。所述時(shí)間標(biāo)簽壓縮過程還包含對時(shí)間標(biāo)簽的序號的壓縮過程,具體是在重復(fù)步驟lb)的過程中累加記錄非規(guī)則時(shí)間標(biāo)簽的數(shù)目,根據(jù)該數(shù)目計(jì)算出存儲當(dāng)前累積的非規(guī)則時(shí)間標(biāo)簽序號所需要的總字節(jié)數(shù),如果所述總字節(jié)數(shù)超過N位(bit),則采用N位的位域方式表達(dá)全部的N個(gè)時(shí)間標(biāo)簽的序號,并將該表達(dá)結(jié)果記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,同時(shí)刪除所述時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽序號的記錄。所述用N位的位域方式表達(dá)全部N個(gè)時(shí)間標(biāo)簽的序號的方法是使用N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的時(shí)間標(biāo)簽,用0表示該位所對應(yīng)的時(shí)間標(biāo)簽為規(guī)則的時(shí)間標(biāo)簽,用1表示該位所對應(yīng)的時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽。所述時(shí)間標(biāo)簽的壓縮過程中還包括進(jìn)一步的非規(guī)則時(shí)間標(biāo)簽的壓縮過程,具體是li)、在重復(fù)步驟lb)處理所有N個(gè)時(shí)間標(biāo)簽的過程中,找出非規(guī)則時(shí)間標(biāo)簽中的最大值和最小值、及最大值和最小值的序號,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;Iii)、計(jì)算非規(guī)則時(shí)間標(biāo)簽中最大值和最小值的差值T,并形成整型連續(xù)區(qū)間
;Iiii)、在已經(jīng)記錄的時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,從第一個(gè)已記錄的非規(guī)則時(shí)間標(biāo)簽開始,將當(dāng)前非規(guī)則時(shí)間標(biāo)簽與最小值的差值在區(qū)間
中的位置、當(dāng)前非規(guī)則時(shí)間標(biāo)簽的序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;同時(shí)刪除所述時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽及其序號。所述數(shù)據(jù)質(zhì)量壓縮過程還包含對臨時(shí)壓縮數(shù)據(jù)B中的非規(guī)則數(shù)據(jù)質(zhì)量的序號的壓縮過程,具體是如果所述累計(jì)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號的字節(jié)數(shù)超過N位(bit), 則采用N位的位域方式表達(dá)全部的N個(gè)數(shù)據(jù)質(zhì)量的序號,同時(shí)刪除所述臨時(shí)壓縮數(shù)據(jù)B中已經(jīng)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號。所述用N位的位域方式表達(dá)全部N個(gè)數(shù)據(jù)質(zhì)量的序號的方法是使用N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的數(shù)據(jù)質(zhì)量,用0表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為規(guī)則的數(shù)據(jù)質(zhì)量,用1表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量。所述對數(shù)據(jù)質(zhì)量的壓縮過程中還包括對臨時(shí)壓縮數(shù)據(jù)B的二次壓縮過程,具體是3i)、在重復(fù)步驟3c)處理所有N個(gè)數(shù)據(jù)質(zhì)量的過程中,找出數(shù)據(jù)質(zhì)量差值中的最大值和最小值、及最大值和最小值所對應(yīng)的數(shù)據(jù)質(zhì)量的序號,并記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;3ii)、計(jì)算數(shù)據(jù)質(zhì)量差值的最大值和最小值的差值L,并形成整型連續(xù)區(qū)間
;3iii)、從臨時(shí)壓縮數(shù)據(jù)B中的第一個(gè)已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量差值與所述數(shù)據(jù)質(zhì)量差值的最小值之間的差值T,并將所述差值T代替原本臨時(shí)壓縮數(shù)據(jù)B中已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值的記錄所述K為3或5。所述當(dāng)前時(shí)間標(biāo)簽或數(shù)據(jù)數(shù)值或數(shù)據(jù)質(zhì)量的序號采用2字節(jié)的短整型進(jìn)行記錄。 所述時(shí)間標(biāo)簽為等差遞增或者是無規(guī)則遞增的4字節(jié)的長整型或者4字節(jié)的長整型外加2 字節(jié)的毫秒精度的整型數(shù)據(jù)。所述數(shù)據(jù)數(shù)值為單精度32bits打0站(32位浮點(diǎn))或者雙精度641^仏double (64位浮點(diǎn))型的數(shù)據(jù)。所述數(shù)據(jù)質(zhì)量為表示當(dāng)前生產(chǎn)型時(shí)序數(shù)據(jù)的狀態(tài)標(biāo)識值的4字節(jié)或者8字節(jié)的整數(shù)。所述時(shí)間標(biāo)簽壓縮過程、數(shù)據(jù)數(shù)值壓縮過程和數(shù)據(jù)質(zhì)量壓縮過程中均包括全局優(yōu)化的過程,具體是如果壓縮數(shù)據(jù)大于等于原始數(shù)據(jù)的大小,那么直接記錄原始數(shù)據(jù)。本發(fā)明對比現(xiàn)有技術(shù),有如下優(yōu)點(diǎn)1、本發(fā)明方法能夠?qū)Ω餍懈鳂I(yè)的生產(chǎn)型時(shí)序數(shù)據(jù)和文件進(jìn)行高效、無損地壓縮, 能夠滿足基礎(chǔ)工業(yè)、電力、電信、化工、鋼鐵等生產(chǎn)數(shù)據(jù)龐大的行業(yè)中對時(shí)序性數(shù)據(jù)傳輸、 分發(fā)、計(jì)算加工和存儲的迫切需求;該壓縮方法能夠?qū)θ魏螡M足典型的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)特性的數(shù)據(jù)進(jìn)行壓縮或解壓,具有很強(qiáng)的針對性,且對生產(chǎn)數(shù)據(jù)不會造成任何精度損失;2、該壓縮方法中將整型數(shù)值的差值映射到一個(gè)連續(xù)的整型區(qū)間,從而能夠進(jìn)一步提升壓縮率。
圖1是本發(fā)明的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法的流程示意圖;圖2是圖1所示的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法中對時(shí)間標(biāo)簽的壓縮過程流程圖;圖3是圖1所示的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法中對數(shù)據(jù)數(shù)值的壓縮過程流程圖;圖4是圖1所示的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法中對數(shù)據(jù)質(zhì)量的壓縮過程流程圖。
具體實(shí)施例方式真實(shí)的一連串的生產(chǎn)型時(shí)序數(shù)據(jù)時(shí)間標(biāo)簽都是遞增值,采用固定的采樣間隔,采樣得到的數(shù)據(jù)就是需要壓縮的原始數(shù)據(jù),因此原始數(shù)據(jù)也都是遞增的。另外采樣周期一般固定,即每次得到同樣數(shù)據(jù)量的原始數(shù)據(jù)。下面的處理流程一般針對每1000條原始數(shù)據(jù)進(jìn)行壓縮。由于相鄰原始數(shù)據(jù)之間的的變化很小,因此大多數(shù)情況都會產(chǎn)生一個(gè)跨度很小的連續(xù)區(qū)間,因此本發(fā)明采用如下實(shí)施例的壓縮處理方法。如圖1所示,該生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法通過對生產(chǎn)型時(shí)序數(shù)據(jù)中的時(shí)間標(biāo)簽、數(shù)據(jù)數(shù)值和數(shù)據(jù)質(zhì)量三部分?jǐn)?shù)據(jù)分別進(jìn)行壓縮,并分別形成時(shí)間標(biāo)簽壓縮數(shù)據(jù)、數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)和數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)。其中,如圖2流程圖所示,時(shí)間標(biāo)簽的壓縮過程為la)、將第一個(gè)時(shí)間標(biāo)簽記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,計(jì)算前兩個(gè)時(shí)間標(biāo)簽的差值作為預(yù)測時(shí)間標(biāo)簽差值,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中N個(gè)生產(chǎn)型時(shí)序數(shù)據(jù)中包含N個(gè)順序地時(shí)間標(biāo)簽,序號為1到N ;計(jì)算第一個(gè)時(shí)間標(biāo)簽和第二個(gè)時(shí)間標(biāo)簽的差值——預(yù)測時(shí)間標(biāo)簽差值Δ tl,并將第一個(gè)時(shí)間標(biāo)簽和時(shí)間標(biāo)簽差值A(chǔ)t1記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;lb)、從第三個(gè)時(shí)間標(biāo)簽開始,依次計(jì)算當(dāng)前時(shí)間標(biāo)簽與其前一個(gè)時(shí)間標(biāo)簽之間的時(shí)間標(biāo)簽差值——時(shí)間標(biāo)簽差值Δ、,并將當(dāng)前時(shí)間標(biāo)簽差值A(chǔ)ti與預(yù)測時(shí)間標(biāo)簽差值 At1對比如果兩者相等,則當(dāng)前時(shí)間標(biāo)簽為規(guī)則時(shí)間標(biāo)簽,并且,不處理當(dāng)前時(shí)間標(biāo)簽;否則,當(dāng)前時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽,將當(dāng)前的非規(guī)則時(shí)間標(biāo)簽及其序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中Ic)、重復(fù)步驟lb)直到處理完所有N個(gè)時(shí)間標(biāo)簽。N就是原始數(shù)據(jù)量,具體多少根據(jù)應(yīng)用需求,通常是越大效果越好,但是在實(shí)時(shí)壓縮中不能無限制地大,一般是1000。對于這1000條原始數(shù)據(jù),如果所有數(shù)據(jù)都是恒定的采樣周期,每一條時(shí)間標(biāo)簽的大小是6個(gè)字節(jié),其中包含4個(gè)字節(jié)的時(shí)間秒數(shù)和2個(gè)字節(jié)的時(shí)間毫秒數(shù);1000條原始時(shí)間標(biāo)簽數(shù)據(jù)的總字節(jié)數(shù)則為6*1000 = 6000 ;按照上述壓縮規(guī)則, 只需要存儲第一條記錄6個(gè)字節(jié)、第二條記錄和第一條記錄的差值4個(gè)字節(jié)、非規(guī)則數(shù)據(jù)的數(shù)目2個(gè)字節(jié),即一共是12個(gè)字節(jié),那么壓縮比提升至6000/12 = 500倍。時(shí)間標(biāo)簽壓縮過程還包含對時(shí)間標(biāo)簽的序號的壓縮過程,具體是如果累計(jì)記錄的非規(guī)則時(shí)間標(biāo)簽序號的字節(jié)數(shù)超過N位(bit),則采用N位的位域的方式表達(dá)全部的N個(gè)時(shí)間標(biāo)簽的序號使用N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的時(shí)間標(biāo)簽,用0表示該位所對應(yīng)的時(shí)間標(biāo)簽為規(guī)則的時(shí)間標(biāo)簽,用1表示該位所對應(yīng)的時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽。具體操作中,將這N位位域的表達(dá)結(jié)果記錄在時(shí)間標(biāo)簽壓縮數(shù)據(jù)的第11 20位上。并將該表達(dá)結(jié)果記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,同時(shí)刪除時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽序號的記錄。例如N= 1000,其中任意一個(gè)序號的儲存需要2字節(jié),如果EC大于等于63,即需要63拉*8 = 1008位,那么采用1000位的位域即可存儲不規(guī)則時(shí)間標(biāo)簽的序號(位置)。位域是C語言中的一種數(shù)據(jù)結(jié)構(gòu)所謂“位域”是把一個(gè)字節(jié)中的二進(jìn)位劃分為幾個(gè)不同的區(qū)域,并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。這樣就可以把幾個(gè)不同的對象用一個(gè)字節(jié)的二進(jìn)制位域來表示。接下來,進(jìn)一步地,在時(shí)間標(biāo)簽的壓縮過程中還包括進(jìn)一步的非規(guī)則時(shí)間標(biāo)簽的壓縮過程,具體是Id)、在重復(fù)步驟lb)處理所有N個(gè)時(shí)間標(biāo)簽的過程中,找出非規(guī)則時(shí)間標(biāo)簽中的最大值和最小值、及最大值和最小值的序號,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;可以計(jì)算出存儲最大值和最小值的差值最多需要幾個(gè)字節(jié)(1個(gè)字節(jié)存儲的范圍為0-255、2個(gè)字節(jié)存儲的范圍為0-65535…)。Ie)、計(jì)算非規(guī)則時(shí)間標(biāo)簽中最大值和最小值的差值T,并形成整型連續(xù)區(qū)間
;If)、在已經(jīng)記錄的時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,從第一個(gè)已記錄的非規(guī)則時(shí)間標(biāo)簽開始,將當(dāng)前非規(guī)則時(shí)間標(biāo)簽與最小值的差值在區(qū)間
中的位置、當(dāng)前非規(guī)則時(shí)間標(biāo)簽的序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;同時(shí)刪除所述時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽及其序號。上述的非規(guī)則時(shí)間標(biāo)簽的壓縮過程主要好處體現(xiàn)在假設(shè)當(dāng)前數(shù)據(jù)中出現(xiàn)大量非規(guī)則時(shí)間標(biāo)簽,每存儲一個(gè)非規(guī)則時(shí)間標(biāo)簽需要6個(gè)字節(jié);此時(shí)如果采用上述壓縮過程, 例如非規(guī)則時(shí)間標(biāo)簽中的最大值為145、最小值為126,最大、最小值之差T為19,那么形成了一個(gè)整型連續(xù)區(qū)間(0,19)。采用這種策略后,對于任何一個(gè)非規(guī)則時(shí)間標(biāo)簽,我們只需要記錄其和最小值之間的差值,這個(gè)差值一定在這個(gè)連續(xù)的整型區(qū)間內(nèi)。比如一個(gè)原始數(shù)據(jù)130,原始數(shù)據(jù)需要4字節(jié)來存儲,現(xiàn)在只需要存儲其在整型連續(xù)區(qū)間內(nèi)的位置編號 130-126 = 4即可,而1 19中的任何一個(gè)整數(shù)值只需!Bbit 二進(jìn)制表達(dá),因此存儲十進(jìn)制的4只是要;3Bits。這種場景下,壓縮的比率為(4*8)/3= 10倍,即大約等于10倍,除去其它內(nèi)部其它額外負(fù)擔(dān),非規(guī)則時(shí)間標(biāo)簽的數(shù)據(jù)壓縮比可以穩(wěn)定在9倍以上,相當(dāng)可觀。如圖3流程圖所示,對數(shù)據(jù)數(shù)值的壓縮過程為2a)、將第一個(gè)數(shù)據(jù)數(shù)值記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;2b)、計(jì)算前K+1個(gè)數(shù)據(jù)數(shù)值中兩兩相鄰值之間的差值,共得到K個(gè)預(yù)測數(shù)據(jù)數(shù)值差值,并記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;2c)、從第K+2個(gè)數(shù)據(jù)數(shù)值開始,對每個(gè)數(shù)據(jù)數(shù)值記錄一個(gè)固定位數(shù)的壓縮數(shù)據(jù)頭,并計(jì)算當(dāng)前數(shù)據(jù)數(shù)值與其前一個(gè)數(shù)據(jù)數(shù)值的數(shù)據(jù)數(shù)值差值如果當(dāng)前數(shù)據(jù)數(shù)值差值等于預(yù)測數(shù)據(jù)數(shù)值差值中的一個(gè),則該數(shù)據(jù)數(shù)值的壓縮數(shù)據(jù)頭記為0,接著再記錄對應(yīng)的預(yù)測數(shù)據(jù)數(shù)值差值的序號;否則,找出預(yù)測數(shù)據(jù)數(shù)值差值中與當(dāng)前數(shù)據(jù)數(shù)值差值最接近的一個(gè)預(yù)測差值A(chǔ)Vj,將前一個(gè)數(shù)據(jù)數(shù)值+AVj的值與當(dāng)前數(shù)據(jù)數(shù)值進(jìn)行異或運(yùn)算,并用壓縮數(shù)據(jù)頭記錄運(yùn)算結(jié)果中從最高位開始連續(xù)相同位的個(gè)數(shù)n,再記錄最接近的預(yù)測數(shù)據(jù)數(shù)值差值的序號j、當(dāng)前數(shù)據(jù)數(shù)值的低32-n位數(shù)據(jù)值;由于原始的數(shù)據(jù)數(shù)值為32位浮點(diǎn)數(shù),異或運(yùn)算后的結(jié)果一共則為32位,S卩,最多有32個(gè)相同位,用6位記錄該相同位的個(gè)數(shù)即可。因此,無論記錄規(guī)則數(shù)據(jù)還是非規(guī)則數(shù)據(jù)時(shí),都固定地先記錄一個(gè)6位的壓縮數(shù)據(jù)頭記錄異或運(yùn)算結(jié)果中最高位開始連續(xù)相同位的個(gè)數(shù)n,其中,對于規(guī)則數(shù)據(jù),異或運(yùn)算的結(jié)果為32位均為0,因此,該6位壓縮數(shù)據(jù)頭的值為32,接著2位記錄j (K = 3,如果K = 5時(shí)需要3位記錄序號j);對于非規(guī)則數(shù)據(jù),緊跟著這個(gè)固定壓縮數(shù)據(jù)頭后面就是最接近的預(yù)測數(shù)據(jù)差值的序號j、異或結(jié)果的低32-n位所對應(yīng)的數(shù)據(jù)數(shù)值的具體值。其中,當(dāng)前數(shù)據(jù)數(shù)值的低32-n位采用位流(bits流)的方式記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中。最終所有的連續(xù)浮點(diǎn)數(shù)數(shù)據(jù)數(shù)值將以bits流的方式壓縮在一起,整個(gè)過程都通過高效的位運(yùn)算實(shí)現(xiàn)。由于數(shù)據(jù)數(shù)值為32位浮點(diǎn)數(shù),則η值一定小于32,因此,存儲η只需要6bit,序號 j為小于3的值,存儲j只需要2bit,另外,由于時(shí)序數(shù)據(jù)的特征,相鄰兩個(gè)時(shí)序數(shù)據(jù)的數(shù)據(jù)數(shù)值的相似度是非常高的,例如連續(xù)兩個(gè)樣本1129. 32和1129. 51,各為32位,將兩者以位異或運(yùn)算后,可以計(jì)算出兩個(gè)樣本的高19bits是完全一樣的,差異部分為低13bits。本發(fā)明引入了前K(K = 3或者幻個(gè)樣本的差值預(yù)測,那么如果將前一個(gè)數(shù)據(jù)數(shù)值加上預(yù)測差值中的一個(gè),將會與當(dāng)前數(shù)據(jù)數(shù)值具有更高的相似性,即,異或運(yùn)算后的結(jié)果得到不同位的數(shù)量一定小于等于13bit,則存儲當(dāng)前數(shù)據(jù)數(shù)值只需要小于等于2+6+13 = 21位。這種壓縮方法對跳變數(shù)據(jù)、鋸齒波形和周期性重復(fù)變化數(shù)據(jù)的壓縮十分高效。如圖4流程圖所示,對數(shù)據(jù)質(zhì)量的壓縮過程為3a)、將第一個(gè)數(shù)據(jù)質(zhì)量記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;北)、計(jì)算前K+1個(gè)數(shù)據(jù)質(zhì)量中兩兩相鄰值之間的差值,作為預(yù)測數(shù)據(jù)質(zhì)量差值, 再將K個(gè)預(yù)測數(shù)據(jù)質(zhì)量差值記錄到最終的數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;K的取值一般為3或5 ; 在實(shí)際應(yīng)用中,一個(gè)生產(chǎn)型時(shí)序數(shù)據(jù)的數(shù)據(jù)質(zhì)量一般是跳變較小的,因此一般通過前K個(gè)差值就能起到很好的壓縮效果,而一個(gè)Δ i編號只需要2bits就可以表達(dá)(K = 5時(shí)需要 3bits),實(shí)踐中取得了非常突出的效果;3c)、從第K+2個(gè)數(shù)據(jù)質(zhì)量開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量和其前一個(gè)數(shù)據(jù)質(zhì)量的數(shù)據(jù)質(zhì)量差值,如果當(dāng)前差值等于前K個(gè)差值中的某個(gè)Δ i,則當(dāng)前數(shù)據(jù)質(zhì)量為規(guī)則數(shù)據(jù)質(zhì)量,并將該預(yù)測數(shù)據(jù)質(zhì)量差值的序號i記錄臨時(shí)壓縮數(shù)據(jù)A中;反之,當(dāng)前數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量,并將當(dāng)前數(shù)據(jù)質(zhì)量的序號和當(dāng)前的數(shù)據(jù)質(zhì)量差值記錄到臨時(shí)壓縮數(shù)據(jù)B中;3d)、重復(fù)步驟3c),并記錄非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù),直到處理完全部N個(gè)數(shù)據(jù)質(zhì)量后將非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù)、臨時(shí)壓縮數(shù)據(jù)A、臨時(shí)壓縮數(shù)據(jù)B順序拼接到整個(gè)數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)后面。每一個(gè)預(yù)測差值的序號用2位來記錄的,在3c)的步驟中記錄了非規(guī)則數(shù)據(jù)質(zhì)量的數(shù)目,那么數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)部分,緊接著第一個(gè)數(shù)據(jù)質(zhì)量記錄后,是非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù)、(N-非規(guī)則數(shù)據(jù)質(zhì)量的數(shù)目)個(gè)連續(xù)的2位的“預(yù)測差值的序號”、規(guī)則的數(shù)據(jù)記錄的 “序號+差值”。簡而言之,所有的規(guī)則數(shù)據(jù)的“預(yù)測差值的序號”是存儲在一起的,所有非規(guī)則數(shù)據(jù)的“序號+差值”是緊隨其后的,根據(jù)“非規(guī)則數(shù)據(jù)質(zhì)量的數(shù)目,,就可以簡單地區(qū)分開兩者。在實(shí)現(xiàn)過程中,采用規(guī)則和非規(guī)則數(shù)據(jù)的信息先記錄在臨時(shí)變量中,最后處理完N 個(gè)數(shù)據(jù)后才進(jìn)行拷貝組合成最終的壓縮數(shù)據(jù)的。數(shù)據(jù)質(zhì)量壓縮過程還包含對臨時(shí)壓縮數(shù)據(jù)B中的非規(guī)則數(shù)據(jù)質(zhì)量的序號的壓縮過程,具體是如果所述累計(jì)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號的字節(jié)數(shù)超過N位,則采用N位的位域方式表達(dá)全部的N個(gè)數(shù)據(jù)質(zhì)量的序號,同時(shí)刪除所述臨時(shí)壓縮數(shù)據(jù)B中已經(jīng)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號。用N位的位域方式表達(dá)全部N個(gè)數(shù)據(jù)質(zhì)量的序號的方法是使用 N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的數(shù)據(jù)質(zhì)量,用0表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為規(guī)則的數(shù)據(jù)質(zhì)量,用1表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量。接下來,進(jìn)一步地,對數(shù)據(jù)質(zhì)量的壓縮過程中還包括對臨時(shí)壓縮數(shù)據(jù)B的二次壓縮過程,具體是!Be)、在重復(fù)步驟3c)處理所有N個(gè)數(shù)據(jù)質(zhì)量的過程中,找出數(shù)據(jù)質(zhì)量差值中的最大值和最小值、及最大值和最小值所對應(yīng)的數(shù)據(jù)質(zhì)量的序號,并記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;3f)、計(jì)算數(shù)據(jù)質(zhì)量差值的最大值和最小值的差值L,并形成整型連續(xù)區(qū)間
;3g)、從臨時(shí)壓縮數(shù)據(jù)B中的第一個(gè)已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量差值與所述數(shù)據(jù)質(zhì)量差值的最小值之間的差值T,并將所述差值T代替原本臨時(shí)壓縮數(shù)據(jù)B中已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值的記錄。在所有的壓縮步驟中,時(shí)間標(biāo)簽、數(shù)據(jù)數(shù)值、數(shù)據(jù)質(zhì)量的序號均采用2字節(jié)的短整型進(jìn)行記錄。時(shí)間標(biāo)簽為等差遞增或者是無規(guī)則遞增的4字節(jié)的長整型或者4字節(jié)的長整型外加2字節(jié)的毫秒精度的整型數(shù)據(jù)。數(shù)據(jù)數(shù)值為工程數(shù)值的IEEE 754浮點(diǎn)數(shù),且為單精度32bits float (32位浮點(diǎn)) 或者雙精度64bits double(64位浮點(diǎn))型的數(shù)據(jù)。數(shù)據(jù)質(zhì)量為當(dāng)前生產(chǎn)型時(shí)序數(shù)據(jù)的狀態(tài)標(biāo)識值的4字節(jié)或者8字節(jié)的整數(shù)。用于表明例如超出范圍、報(bào)警和其他自定義含義。時(shí)間標(biāo)簽壓縮過程、數(shù)據(jù)數(shù)值壓縮過程和數(shù)據(jù)質(zhì)量壓縮過程中均包括全局優(yōu)化的過程,具體是如果壓縮數(shù)據(jù)大于等于原始數(shù)據(jù)的大小,那么直接記錄原始數(shù)據(jù)。在壓縮數(shù)據(jù)和原始數(shù)據(jù)相同的情況下存儲原始數(shù)據(jù)是為了提升解壓的效率。使用本方法對生產(chǎn)型時(shí)序數(shù)據(jù)進(jìn)行壓縮測試,測試環(huán)境為CPU Intel (R) Core (TM) 7-2620Μ CPUi2. 7GHz ;RAW 4G,測試結(jié)果為內(nèi)存壓縮IG的生產(chǎn)數(shù)據(jù)耗時(shí)為1,5ians,與現(xiàn)有的壓縮方法相比,大大節(jié)省壓縮時(shí)間,同時(shí),由于本方法采用無損的壓縮方法,壓縮過程中保留了全部數(shù)據(jù)的特征, 對生產(chǎn)數(shù)據(jù)不會造成任何精度損失。將本方法實(shí)際運(yùn)用于電網(wǎng)高速PMU數(shù)據(jù)的壓縮,結(jié)果證明,本方法的壓縮比是現(xiàn)有有損壓縮技術(shù)的3倍以上,同時(shí)壓縮、解壓性能是其它實(shí)現(xiàn)的 2倍以上。在實(shí)際應(yīng)用中,高速國產(chǎn)實(shí)時(shí)數(shù)據(jù)庫系統(tǒng)PTimeDB中采用了本發(fā)明的壓縮方法, 針對電網(wǎng)高速PMU數(shù)據(jù)的壓縮比是有損壓縮技術(shù)的3倍以上,同時(shí)壓縮、解壓性能是其它實(shí)現(xiàn)的2倍以上。本發(fā)明的實(shí)施方式不限于此,在本發(fā)明上述基本技術(shù)思想前提下,按照本領(lǐng)域的普通技術(shù)知識和慣用手段對本發(fā)明內(nèi)容所做出其它多種形式的修改、替換或變更,均落在本發(fā)明權(quán)利保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于對序號為1 N的N個(gè)生產(chǎn)型時(shí)序數(shù)據(jù)中每個(gè)數(shù)據(jù)的三個(gè)數(shù)值域時(shí)間標(biāo)簽、數(shù)據(jù)數(shù)值和數(shù)據(jù)質(zhì)量分別進(jìn)行獨(dú)立壓縮,并分別形成時(shí)間標(biāo)簽壓縮數(shù)據(jù)、數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)和數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù);再將三部分壓縮數(shù)據(jù)合并為一個(gè)完整的壓縮數(shù)據(jù);其中,對所述時(shí)間標(biāo)簽的壓縮過程為la)、將第一個(gè)時(shí)間標(biāo)簽記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,計(jì)算前兩個(gè)時(shí)間標(biāo)簽的差值作為預(yù)測時(shí)間標(biāo)簽差值,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;lb)、從第三個(gè)時(shí)間標(biāo)簽開始,依次計(jì)算當(dāng)前時(shí)間標(biāo)簽與其前一個(gè)時(shí)間標(biāo)簽之間的時(shí)間標(biāo)簽差值,并將當(dāng)前時(shí)間標(biāo)簽差值與預(yù)測時(shí)間標(biāo)簽差值對比如果兩者相等,則當(dāng)前時(shí)間標(biāo)簽為規(guī)則時(shí)間標(biāo)簽,并且,不處理當(dāng)前時(shí)間標(biāo)簽;否則,當(dāng)前時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽,將當(dāng)前的非規(guī)則時(shí)間標(biāo)簽及其序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中; Ic)、重復(fù)步驟lb)直到處理完全部的N個(gè)時(shí)間標(biāo)簽; 對所述數(shù)據(jù)數(shù)值的壓縮過程為 加)、將第一個(gè)數(shù)據(jù)數(shù)值記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;2b)、計(jì)算前K+1個(gè)數(shù)據(jù)數(shù)值中兩兩相鄰值之間的差值,共得到K個(gè)預(yù)測數(shù)據(jù)數(shù)值差值, 并記錄到數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)中;2c)、從第K+2個(gè)數(shù)據(jù)數(shù)值開始,對每個(gè)數(shù)據(jù)數(shù)值記錄一個(gè)固定位數(shù)的壓縮數(shù)據(jù)頭,并計(jì)算當(dāng)前數(shù)據(jù)數(shù)值與其前一個(gè)數(shù)據(jù)數(shù)值的數(shù)據(jù)數(shù)值差值如果當(dāng)前數(shù)據(jù)數(shù)值差值等于預(yù)測數(shù)據(jù)數(shù)值差值中的一個(gè),則該數(shù)據(jù)數(shù)值的壓縮數(shù)據(jù)頭記為0,接著再記錄對應(yīng)的預(yù)測數(shù)據(jù)數(shù)值差值的序號;否則,找出預(yù)測數(shù)據(jù)數(shù)值差值中與當(dāng)前數(shù)據(jù)數(shù)值差值最接近的一個(gè)預(yù)測差值A(chǔ)Vj,將前一個(gè)數(shù)據(jù)數(shù)值+ AVj的值與當(dāng)前數(shù)據(jù)數(shù)值進(jìn)行異或運(yùn)算,并用壓縮數(shù)據(jù)頭記錄運(yùn)算結(jié)果中從最高位開始連續(xù)相同位的個(gè)數(shù)n,再記錄最接近的預(yù)測數(shù)據(jù)數(shù)值差值的序號j、當(dāng)前數(shù)據(jù)數(shù)值的低32-n位數(shù)據(jù)值; 對所述數(shù)據(jù)質(zhì)量的壓縮過程為 3a)、將第一個(gè)數(shù)據(jù)質(zhì)量記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;北)、計(jì)算前K+1個(gè)數(shù)據(jù)質(zhì)量中兩兩相鄰值之間的差值,作為預(yù)測數(shù)據(jù)質(zhì)量差值,再將K 個(gè)預(yù)測數(shù)據(jù)質(zhì)量差值記錄到最終的數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;3c)、從第K+2個(gè)數(shù)據(jù)質(zhì)量開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量和其前一個(gè)數(shù)據(jù)質(zhì)量的數(shù)據(jù)質(zhì)量差值,如果當(dāng)前差值等于前K個(gè)差值中的某個(gè)△ i,則當(dāng)前數(shù)據(jù)質(zhì)量為規(guī)則數(shù)據(jù)質(zhì)量,并將該預(yù)測數(shù)據(jù)質(zhì)量差值的序號i記錄臨時(shí)壓縮數(shù)據(jù)A中;反之,當(dāng)前數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量,并將當(dāng)前數(shù)據(jù)質(zhì)量的序號和當(dāng)前的數(shù)據(jù)質(zhì)量差值記錄到臨時(shí)壓縮數(shù)據(jù)B中;3d)、重復(fù)步驟3c),并記錄非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù),直到處理完全部N個(gè)數(shù)據(jù)質(zhì)量后將非規(guī)則數(shù)據(jù)質(zhì)量的個(gè)數(shù)、臨時(shí)壓縮數(shù)據(jù)A、臨時(shí)壓縮數(shù)據(jù)B順序拼接到整個(gè)數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)后面。
2.根據(jù)權(quán)利要求1所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述時(shí)間標(biāo)簽壓縮過程還包含對時(shí)間標(biāo)簽的序號的壓縮過程,具體是在重復(fù)步驟lb)的過程中累加記錄非規(guī)則時(shí)間標(biāo)簽的數(shù)目,根據(jù)該數(shù)目計(jì)算出存儲當(dāng)前累積的非規(guī)則時(shí)間標(biāo)簽序號所需要的總字節(jié)數(shù),如果所述總字節(jié)數(shù)超過N位,則采用N位的位域方式表達(dá)全部的N 個(gè)時(shí)間標(biāo)簽的序號,并將該表達(dá)結(jié)果記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,同時(shí)刪除所述時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽序號的記錄。
3.根據(jù)權(quán)利要求2所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述用N位的位域方式表達(dá)全部N個(gè)時(shí)間標(biāo)簽的序號的方法是使用N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的時(shí)間標(biāo)簽,用0表示該位所對應(yīng)的時(shí)間標(biāo)簽為規(guī)則的時(shí)間標(biāo)簽,用1表示該位所對應(yīng)的時(shí)間標(biāo)簽為非規(guī)則時(shí)間標(biāo)簽。
4.根據(jù)權(quán)利要求1或2所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于 所述時(shí)間標(biāo)簽的壓縮過程中還包括進(jìn)一步的非規(guī)則時(shí)間標(biāo)簽的壓縮過程,具體是li)、在重復(fù)步驟lb)處理所有N個(gè)時(shí)間標(biāo)簽的過程中,找出非規(guī)則時(shí)間標(biāo)簽中的最大值和最小值、及最大值和最小值的序號,并記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;Iii)、計(jì)算非規(guī)則時(shí)間標(biāo)簽中最大值和最小值的差值T,并形成整型連續(xù)區(qū)間
;Iiii)、在已經(jīng)記錄的時(shí)間標(biāo)簽壓縮數(shù)據(jù)中,從第一個(gè)已記錄的非規(guī)則時(shí)間標(biāo)簽開始, 將當(dāng)前非規(guī)則時(shí)間標(biāo)簽與最小值的差值在區(qū)間
中的位置、當(dāng)前非規(guī)則時(shí)間標(biāo)簽的序號記錄到時(shí)間標(biāo)簽壓縮數(shù)據(jù)中;同時(shí)刪除所述時(shí)間標(biāo)簽壓縮數(shù)據(jù)中已經(jīng)記錄的非規(guī)則時(shí)間標(biāo)簽及其序號。
5.根據(jù)權(quán)利要求1所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述數(shù)據(jù)質(zhì)量壓縮過程還包含對臨時(shí)壓縮數(shù)據(jù)B中的非規(guī)則數(shù)據(jù)質(zhì)量的序號的壓縮過程,具體是如果所述累計(jì)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號的字節(jié)數(shù)超過N位,則采用N位的位域方式表達(dá)全部的N個(gè)數(shù)據(jù)質(zhì)量的序號,同時(shí)刪除所述臨時(shí)壓縮數(shù)據(jù)B中已經(jīng)記錄的非規(guī)則數(shù)據(jù)質(zhì)量的序號。
6.根據(jù)權(quán)利要求5所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述用N位的位域方式表達(dá)全部N個(gè)數(shù)據(jù)質(zhì)量的序號的方法是使用N位二進(jìn)制值中的每一位對應(yīng)于相應(yīng)位置的數(shù)據(jù)質(zhì)量,用0表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為規(guī)則的數(shù)據(jù)質(zhì)量,用1表示該位所對應(yīng)的數(shù)據(jù)質(zhì)量為非規(guī)則數(shù)據(jù)質(zhì)量。
7.根據(jù)權(quán)利要求1或5所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于 所述對數(shù)據(jù)質(zhì)量的壓縮過程中還包括對臨時(shí)壓縮數(shù)據(jù)B的二次壓縮過程,具體是3i)、在重復(fù)步驟3c)處理所有N個(gè)數(shù)據(jù)質(zhì)量的過程中,找出數(shù)據(jù)質(zhì)量差值中的最大值和最小值、及最大值和最小值所對應(yīng)的數(shù)據(jù)質(zhì)量的序號,并記錄到數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù)中;3ii)、計(jì)算數(shù)據(jù)質(zhì)量差值的最大值和最小值的差值L,并形成整型連續(xù)區(qū)間
;3iii)、從臨時(shí)壓縮數(shù)據(jù)B中的第一個(gè)已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值開始,計(jì)算當(dāng)前數(shù)據(jù)質(zhì)量差值與所述數(shù)據(jù)質(zhì)量差值的最小值之間的差值T,并將所述差值T代替原本臨時(shí)壓縮數(shù)據(jù)B中已記錄的非規(guī)則數(shù)據(jù)質(zhì)量差值的記錄。
8.根據(jù)權(quán)利要求1所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述當(dāng)前時(shí)間標(biāo)簽或數(shù)據(jù)數(shù)值或數(shù)據(jù)質(zhì)量的序號采用2字節(jié)的短整型進(jìn)行記錄。
9.根據(jù)權(quán)利要求1所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述時(shí)間標(biāo)簽為等差遞增或者是無規(guī)則遞增的4字節(jié)的長整型或者4字節(jié)的長整型外加2字節(jié)的毫秒精度的整型數(shù)據(jù);所述數(shù)據(jù)數(shù)值為單精度或者雙精度型的數(shù)據(jù);所述數(shù)據(jù)質(zhì)量為表示當(dāng)前生產(chǎn)型時(shí)序數(shù)據(jù)的狀態(tài)標(biāo)識值的4字節(jié)或者8字節(jié)的整數(shù)。
10.根據(jù)權(quán)利要求1所述的生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,其特征在于所述時(shí)間標(biāo)簽壓縮過程、數(shù)據(jù)數(shù)值壓縮過程和數(shù)據(jù)質(zhì)量壓縮過程中均包括全局優(yōu)化的過程,具體是如果壓縮數(shù)據(jù)大于等于原始數(shù)據(jù)的大小,那么直接記錄原始數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種生產(chǎn)型時(shí)序數(shù)據(jù)的實(shí)時(shí)全息無損壓縮方法,對N個(gè)生產(chǎn)型時(shí)序數(shù)據(jù)中每個(gè)數(shù)據(jù)的三個(gè)數(shù)值域時(shí)間標(biāo)簽、數(shù)據(jù)數(shù)值和數(shù)據(jù)質(zhì)量分別進(jìn)行獨(dú)立壓縮,并分別形成時(shí)間標(biāo)簽壓縮數(shù)據(jù)、數(shù)據(jù)數(shù)值壓縮數(shù)據(jù)和數(shù)據(jù)質(zhì)量壓縮數(shù)據(jù);再將三部分壓縮數(shù)據(jù)合并為一個(gè)完整的壓縮數(shù)據(jù);該方法能夠?qū)Ω餍懈鳂I(yè)的生產(chǎn)型時(shí)序數(shù)據(jù)和文件進(jìn)行高效、無損地壓縮,能夠滿足基礎(chǔ)工業(yè)、電力、電信、化工、鋼鐵等生產(chǎn)數(shù)據(jù)龐大的行業(yè)中對時(shí)序性數(shù)據(jù)傳輸、分發(fā)、計(jì)算加工和存儲的迫切需求。
文檔編號H03M7/40GK102427369SQ20111031789
公開日2012年4月25日 申請日期2011年10月19日 優(yōu)先權(quán)日2011年10月19日
發(fā)明者周伊琳, 孫建偉, 陳揚(yáng), 陳炯聰, 黃縉華 申請人:廣東電網(wǎng)公司電力科學(xué)研究院