一種數(shù)據(jù)記錄存儲方法
【技術領域】
[0001]本發(fā)明涉及實時數(shù)據(jù)采集存儲技術領域,尤其涉及一種適用于實時數(shù)據(jù)存儲的數(shù)據(jù)記錄存儲方法。
【背景技術】
[0002]目前在實時數(shù)據(jù)采集存儲中,對數(shù)據(jù)包的記錄存儲通常是按原內(nèi)容順序進行完全存儲,如當依次接收到數(shù)據(jù)包1、數(shù)據(jù)包2、數(shù)據(jù)包3……,則最終依次存儲為數(shù)據(jù)包1、數(shù)據(jù)包2、數(shù)據(jù)包3……,且各數(shù)據(jù)包即為完全的原始數(shù)據(jù)包。實時數(shù)據(jù)采集過程中,數(shù)據(jù)包之間往往存在大量的重復內(nèi)容,數(shù)據(jù)包之間存在較大的相關性,若采用上述記錄存儲方式則會導致大量相同數(shù)據(jù)內(nèi)容的記錄,從而消耗過多的存儲器空間,造成存儲空間的浪費。
[0003]目前已有從業(yè)者提出采用重復數(shù)據(jù)判斷以去除重復數(shù)據(jù)的方案,來解決相同數(shù)據(jù)重復記錄的問題,但該類方案一方面重復數(shù)據(jù)的判斷以及存儲過程較為復雜,增加了數(shù)據(jù)存儲的復雜度,影響存儲效率且不易于實現(xiàn)數(shù)據(jù)還原;另一方面,該類方案通常是基于數(shù)據(jù)本身的重復判斷,相同數(shù)據(jù)可能所表示的含義完全不同,而在實時數(shù)據(jù)采集中,數(shù)據(jù)的含義對應所需要采集的重要信息內(nèi)容,因而該類方案并不適用于實時數(shù)據(jù)的采集存儲。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術問題就在于:針對現(xiàn)有技術存在的技術問題,本發(fā)明提供一種適用于實時數(shù)據(jù)采集存儲的數(shù)據(jù)記錄存儲方法,能夠減少相同內(nèi)容數(shù)據(jù)的記錄存儲,且存儲實現(xiàn)簡單、占用存儲空間少、存儲效率高以及易實現(xiàn)數(shù)據(jù)還原。
[0005]為解決上述技術問題,本發(fā)明提出的技術方案為:
一種數(shù)據(jù)記錄存儲方法,步驟包括:
1)接收到待存儲數(shù)據(jù)包時,為待存儲數(shù)據(jù)包中表示不同含義的各項數(shù)據(jù)內(nèi)容分配連續(xù)的編碼;
2)判斷待存儲數(shù)據(jù)包是否為接收到的首個數(shù)據(jù)包,如果是,將待存儲數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容與對應的編碼依次進行記錄存儲;如果不是,轉(zhuǎn)入執(zhí)行步驟3);
3)將待存儲數(shù)據(jù)包與接收到的上一個數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容按照對應的編碼依次進行比較,并根據(jù)比較結(jié)果進行記錄存儲;其中每一項進行比較時,若比較結(jié)果在預設范圍內(nèi),則不進行記錄存儲;否則記錄存儲對應的數(shù)據(jù)內(nèi)容以及編碼。
[0006]作為本發(fā)明的進一步改進,所述步驟I)中為待存儲數(shù)據(jù)包中表示不同含義的各項數(shù)據(jù)內(nèi)容分配連續(xù)的編碼的具體步驟為:
1.1)將待存儲數(shù)據(jù)包按照所表示的不同含義劃分為多項數(shù)據(jù)內(nèi)容;
1.2)按照預設的固定編碼格式進行連續(xù)編碼,并對應分配給待存儲數(shù)據(jù)包的各項數(shù)據(jù)內(nèi)容。
[0007]作為本發(fā)明的進一步改進,所述步驟2)中各項數(shù)據(jù)內(nèi)容與編碼對應進行記錄存儲的具體步驟為: 2.1)設置并存儲記錄開始標識、對應首個記錄包的序號;
2.2)獲取第一個編碼以及待存儲數(shù)據(jù)包的第一項數(shù)據(jù)內(nèi)容,依次存儲所述第一個編碼、第一項數(shù)據(jù)內(nèi)容;
2.3)獲取下一個編碼以及待存儲數(shù)據(jù)包的下一項數(shù)據(jù)內(nèi)容,依次存儲獲取得到的編碼以及數(shù)據(jù)內(nèi)容,返回執(zhí)行步驟2.3),直至完成待存儲數(shù)據(jù)包中所有數(shù)據(jù)內(nèi)容的記錄存儲;
2.4)設置并存儲記錄結(jié)束標識。
[0008]作為本發(fā)明的進一步改進,所述步驟3)的具體步驟為:
3.1)設置并存儲記錄開始標識、對應當前記錄包的序號;
3.2)分別取待存儲數(shù)據(jù)包、上一個接收到的數(shù)據(jù)包中第一個編碼所對應的數(shù)據(jù)內(nèi)容,并計算取出的兩項數(shù)據(jù)內(nèi)容的差值;
3.3)若所述兩項數(shù)據(jù)內(nèi)容的差值大于預設閥值,則將當前編碼以及待存儲數(shù)據(jù)包中對應項的數(shù)據(jù)內(nèi)容依次進行存儲;
3.4)分別取待存儲數(shù)據(jù)包、上一個接收到的數(shù)據(jù)包中下一個編碼所對應的數(shù)據(jù)內(nèi)容,并計算取出的兩項數(shù)據(jù)內(nèi)容的差值,返回執(zhí)行步驟3.3);直至完成所有項數(shù)據(jù)內(nèi)容的比較,完成待存儲數(shù)據(jù)包的記錄存儲;
3.5)設置并存儲記錄結(jié)束標識。
[0009]作為本發(fā)明的進一步改進,所述步驟3)中還包括調(diào)整所述預設范圍以調(diào)整所需要記錄存儲的數(shù)據(jù)內(nèi)容的步驟。
[0010]作為本發(fā)明的進一步改進,還包括數(shù)據(jù)還原步驟4),具體步驟為:
4.1)定位首個數(shù)據(jù)包的記錄存儲位置進行還原,依次獲取首個數(shù)據(jù)包記錄存儲的各項數(shù)據(jù)內(nèi)容,還原得到首個數(shù)據(jù)包內(nèi)容;
4.2)定位下一個數(shù)據(jù)包的記錄存儲位置進行還原,并根據(jù)編碼依次獲取記錄存儲的各項數(shù)據(jù)內(nèi)容,若其中存在不連續(xù)的編碼,則從上一個數(shù)據(jù)包中獲取未記錄的編碼所對應的數(shù)據(jù)內(nèi)容;返回執(zhí)行步驟4.2),直至完成所有數(shù)據(jù)包的還原。
[0011]作為本發(fā)明的進一步改進,所述步驟4.2)中定位下一個數(shù)據(jù)包的記錄存儲位置進行還原的具體步驟為:
4.21)定位下一個數(shù)據(jù)包的位置并作為當前數(shù)據(jù)包進行還原,獲取當前數(shù)據(jù)包記錄存儲的第一個編碼并判斷是否為所述固定編碼格式中的首個編碼,如果是,獲取對應的數(shù)據(jù)內(nèi)容;否則判斷獲取的第一個編碼與所述首個編碼之間的各個未記錄編碼,并從上一個數(shù)據(jù)包的各項內(nèi)容中依次獲取所述各個未記錄編碼所對應的數(shù)據(jù)內(nèi)容;
4.22)獲取記錄存儲的下一個編碼,并按照所述固定編碼格式判斷與上一個編碼是否連續(xù),如果是,獲取對應的數(shù)據(jù)內(nèi)容;否則判斷與上一個編碼之間的各個未記錄編碼,并從上一個數(shù)據(jù)包的各項內(nèi)容中依次獲取所述各個未記錄編碼所對應的數(shù)據(jù)內(nèi)容;返回執(zhí)行步驟4.22 ),直至完成所有數(shù)據(jù)內(nèi)容的還原,還原得到當前數(shù)據(jù)包內(nèi)容。
[0012]與現(xiàn)有技術相比,本發(fā)明的優(yōu)點在于:
I)本發(fā)明在數(shù)據(jù)包存儲時,通過判斷數(shù)據(jù)包與上一個數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容的相似性比較來確定是否進行存儲,若相似性在一定范圍內(nèi)則不進行存儲,而只存儲與上一個數(shù)據(jù)包相比產(chǎn)生一定變化的數(shù)據(jù)內(nèi)容,從而可以有效的減少重復數(shù)據(jù)的存儲,減少所需占用的存儲器空間;同時通過相鄰數(shù)據(jù)包之間的相同數(shù)據(jù)處理,可以有效記錄數(shù)據(jù)包之間的變化過程;
2)本發(fā)明將待存儲數(shù)據(jù)包按照數(shù)據(jù)內(nèi)容之間的相似性,確定不進行記錄存儲的數(shù)據(jù),可以有效減少含義相同的重復數(shù)據(jù)記錄存儲,同時保證數(shù)據(jù)內(nèi)容存儲的完整性,能夠適用于實時數(shù)據(jù)采集存儲中;
3)本發(fā)明在接收到待存儲數(shù)據(jù)包時首先對不同數(shù)據(jù)內(nèi)容進行編碼,由不同編碼標識數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容,由此可以方便的結(jié)合編碼來判斷前后數(shù)據(jù)包之間的相似性,以確定需要存儲的數(shù)據(jù);
4)本發(fā)明結(jié)合編碼從記錄存儲的數(shù)據(jù)中,可以方便的確定未存儲的數(shù)據(jù)部分,同時可以方便的從上一個還原出的數(shù)據(jù)包中查找到該數(shù)據(jù)部分,實現(xiàn)快速、準確的數(shù)據(jù)還原;
5)本發(fā)明進一步通過調(diào)整判斷所需要記錄存儲的預設閥值,來調(diào)整所需要記錄的數(shù)據(jù),從而可以根據(jù)實際需求調(diào)整記錄數(shù)據(jù)的變化大小。
【附圖說明】
[0013]圖1是本實施例數(shù)據(jù)記錄存儲方法的實現(xiàn)流程示意圖。
[0014]圖2是本實施例中數(shù)據(jù)包編碼方式的原理示意圖。
[0015]圖3是本實施例中首個數(shù)據(jù)包的記錄存儲原理示意圖。
[0016]圖4是本發(fā)明具體實施例中非首個數(shù)據(jù)包的記錄存儲原理示意圖。
【具體實施方式】
[0017]以下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進一步描述,但并不因此而限制本發(fā)明的保護范圍。
[0018]如圖1所示,本實施例數(shù)據(jù)記錄存儲方法,步驟包括:
1)接收到待存儲數(shù)據(jù)包時,為待存儲數(shù)據(jù)包中表示不同含義的各項數(shù)據(jù)內(nèi)容分配連續(xù)的編碼;
2)判斷待存儲數(shù)據(jù)包是否為接收到的首個數(shù)據(jù)包,如果是,將待存儲數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容與對應的編碼依次進行記錄存儲;如果不是,轉(zhuǎn)入執(zhí)行步驟3);
3)將待存儲數(shù)據(jù)包與接收到的上一個數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容按照對應的編碼依次進行比較,并根據(jù)比較結(jié)果進行記錄存儲;其中每一項進行比較時,若比較結(jié)果在預設范圍內(nèi),則不進行記錄存儲;否則記錄存儲對應的數(shù)據(jù)內(nèi)容以及編碼。
[0019]本實施例在數(shù)據(jù)包存儲時,通過判斷數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容與上一個數(shù)據(jù)包的相似性比較來確定是否進行存儲,若相似性在一定范圍內(nèi)則不進行存儲,而只存儲與上一個數(shù)據(jù)包相比產(chǎn)生一定變化的內(nèi)容,從而可以有效的減少重復數(shù)據(jù)的存儲,減少所需占用的存儲器空間;同時通過相鄰數(shù)據(jù)包之間的相同數(shù)據(jù)處理,可以有效記錄數(shù)據(jù)包之間的變化過程。
[0020]本實施例中,步驟I)中為待存儲數(shù)據(jù)包中表示不同含義的各項數(shù)據(jù)內(nèi)容分配連續(xù)的編碼的具體步驟為:
1.1)將待存儲數(shù)據(jù)包按照所表示的不同含義劃分為多項數(shù)據(jù)內(nèi)容;
1.2)按照預設的固定編碼格式進行連續(xù)編碼,并對應分配給待存儲數(shù)據(jù)包的各項數(shù)據(jù)內(nèi)容。[0021 ] 本實施例將待存儲數(shù)據(jù)包按照數(shù)據(jù)內(nèi)容所對應的含義進行劃分,如速度、位移等,根據(jù)相同數(shù)據(jù)內(nèi)容之間的相似性來確定是否為相同數(shù)據(jù),可以減少含義相同的重復數(shù)據(jù)的記錄存儲,同時保證數(shù)據(jù)內(nèi)容存儲的完整性,因而能夠有效適用于實時數(shù)據(jù)采集存儲中。
[0022]本實施例中,對于接收到的每個待存儲數(shù)據(jù)包按照統(tǒng)一編碼格式均首先分配編碼,以標記數(shù)據(jù)包中各項不同的數(shù)據(jù)內(nèi)容,相同內(nèi)容采用相同的編碼。如圖2所示,本實施例按照遞增的數(shù)字編碼方式進行編碼,在接收到待存儲的數(shù)據(jù)包時,為數(shù)據(jù)包中每項數(shù)據(jù)內(nèi)容對應分配一個數(shù)字編碼,從而通過編碼可以確定數(shù)據(jù)包中對應的數(shù)據(jù)內(nèi)容。本實施例通過對不同數(shù)據(jù)內(nèi)容進行編碼,由不同編碼標識數(shù)據(jù)包中各項數(shù)據(jù)內(nèi)容,由此可以方便的結(jié)合編碼來判斷前后數(shù)據(jù)包之間的相似性,以確定需要存儲的數(shù)據(jù),同時由編碼與數(shù)據(jù)內(nèi)容之間的對應關系,也可以方便的確定未存儲的數(shù)據(jù)部分,以便于實現(xiàn)數(shù)據(jù)還原。
[0023]本實施例中,當接收到首個數(shù)據(jù)包時,存儲所有的數(shù)據(jù)內(nèi)容,同時將各項存儲內(nèi)容按照與編碼對應的方式進行存儲。步驟2)中首個數(shù)據(jù)包存儲時,各項數(shù)據(jù)內(nèi)容與編碼對應進行記錄存儲的具體步驟為:
2.1)設置并存儲記錄開始標識、對應首個記錄包的序號;
2.2)獲取第一個編碼以及待存儲數(shù)據(jù)包的第一項數(shù)據(jù)內(nèi)容,依次存儲所述