欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種sqlite的自由空間的刪除記錄挖掘方法和系統(tǒng)的制作方法

文檔序號:6362555閱讀:218來源:國知局
專利名稱:一種sqlite的自由空間的刪除記錄挖掘方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)庫處理系統(tǒng),尤其涉及sqlite的自由空間的刪除記錄挖掘方法和系統(tǒng)。
背景技術(shù)
傳統(tǒng)的sqlite刪除數(shù)據(jù)解析方法是根據(jù)記錄數(shù)據(jù)的特征來識別記錄關(guān)鍵數(shù)據(jù)的起始和終止標(biāo)志,從而解析某些關(guān)鍵數(shù)據(jù),但是這種方法的弊端是只能針對某一類數(shù)據(jù)庫文件的某些關(guān)鍵數(shù)據(jù),而無法提取全部數(shù)據(jù),并且對于其他的數(shù)據(jù)庫文件則需要重新提取數(shù)據(jù)特征并重新解析,無法保證通用性。目前市場上的sqlite數(shù)據(jù)庫刪除數(shù)據(jù)的通用解析產(chǎn)品具有很大的局限性,其 B+tree自由空間刪除記錄挖掘,由于對于記錄特征提取不夠精確,而且對于多數(shù)據(jù)表刪除數(shù)據(jù)交叉的考慮不夠充分,所以解析效果不盡如人意。測試發(fā)現(xiàn)對于B+tree自由空間刪除記錄挖掘,往往只能解析一小部分的刪除記錄,甚至無法解析任何一條記錄,而且解析結(jié)果經(jīng)常由于記錄劃分的不準(zhǔn)確存在亂碼現(xiàn)象,這樣影響了刪除記錄解析的準(zhǔn)確性和全面性。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種sqlite的自由空間的刪除記錄挖掘方法,可以通用、 全面地解決sqlite的自由空間上刪除記錄的挖掘。本發(fā)明是這樣實現(xiàn)的,一種sqlite的自由空間的刪除記錄挖掘方法,所述方法包括下述步驟讀取sqlite頁的自由空間,從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息;通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄。本發(fā)明的另一目的在于提供一種sqlite的自由空間的刪除記錄挖掘系統(tǒng),所述系統(tǒng)包括關(guān)鍵點信息抽象單元,用于從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息;頁面交叉遍歷單元,用于通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄。作為優(yōu)選的,所述多重通用特征包括五元組,為當(dāng)前頁面的完整的記錄數(shù)據(jù)塊中的記錄總長度的值、頭部索引總長度的值、頭部索引總長度所占用空間的大小,以及當(dāng)前頁面的空閑鏈表節(jié)點的前兩個字節(jié)指向下一個空閑節(jié)點的指針的值、后兩個字節(jié)表示該空閑節(jié)點的大小的值。作為優(yōu)選的,根據(jù)所述五元組抽象出的所述多元組用以描述自由空間上記錄的關(guān)鍵點信息,所述多元組包括三元組,為在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所在的地址偏移、在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所占用空間的大小,以及數(shù)據(jù)類型。作為優(yōu)選的,所述頁面交叉遍歷單元,包括第一次遍歷單元,用于根據(jù)節(jié)點的類型依次處理各個節(jié)點;第二次遍歷單元,用于對于不滿足重組條件的節(jié)點采用節(jié)點合并和拆分方式,再次嘗試重組判斷;第三次遍歷單元,用于判斷是否有不屬于當(dāng)前數(shù)據(jù)表的記錄存在,如果有,采用交叉方法挖掘刪除記錄。本發(fā)明的實施例在研究sqlite格式和B+tree頁面空間分配和釋放的基礎(chǔ)上,提出了基于多重通用特征的Sqlite的B+tree自由空間刪除記錄挖掘方法,并且利用多數(shù)據(jù)表刪除數(shù)據(jù)交叉挖掘技術(shù),充分挖掘其他數(shù)據(jù)表殘留的刪除記錄,以提高自由空間刪除記錄挖掘的準(zhǔn)確性和全面性。


圖I為本發(fā)明的sqlite頁面結(jié)構(gòu)示意圖;圖2為本發(fā)明的sqlite頁面的自由空間上WRN的sqlite記錄結(jié)構(gòu)圖;圖3為本發(fā)明的sqlite頁面的自由空間上FRN的sqlite記錄結(jié)構(gòu)圖;圖4為本發(fā)明的sqlite頁面的自由空間的刪除記錄挖掘流程圖。
具體實施例方式( 一)sqlite的B+tree自由空間的簡單介紹Sqlite數(shù)據(jù)庫的頁面組織是由B+tree來管理的,每個B+tree節(jié)點對應(yīng)一個 sqlite頁面,其中存放數(shù)據(jù)的葉子節(jié)點稱為葉子頁,而存放索引的內(nèi)部節(jié)點稱為內(nèi)部頁。每個頁面的數(shù)據(jù)組織分別有頁面頭部(記為PH)的管理部分和頁面尾部(記為PT)的數(shù)據(jù)部分組成,這樣就形成了 PH和PT之間的自由空間(記為FSN)部分,如圖I所示。sqlite頁面轉(zhuǎn)換(比如葉子頁轉(zhuǎn)換為內(nèi)部頁)或者申請已有的空閑頁的時候,原有頁面的內(nèi)容不會清空,從而導(dǎo)致了自由空間的記錄數(shù)據(jù)殘留,與sqlite的空閑鏈表節(jié)點不同的是,殘留的記錄呈現(xiàn)多樣化趨勢當(dāng)前數(shù)據(jù)表的完整的記錄數(shù)據(jù)塊(記為WRN);當(dāng)前數(shù)據(jù)表的空閑鏈表節(jié)點(記為FRN);其他數(shù)據(jù)表的刪除記錄(記為0RN);其中,WRN是因為整表數(shù)據(jù)全部清空的時候,sqlite只會修改相應(yīng)頁面PH部分的前8個字節(jié),而不會對所有記錄執(zhí)行逐條刪除;FRN是由于當(dāng)前數(shù)據(jù)表的記錄單獨刪除而形成的;ORN是因為該頁面在被申請進入當(dāng)前數(shù)據(jù)表所對應(yīng)的B+tree之前可能是從其他數(shù)據(jù)表對應(yīng)的B+tree中釋放出來的,因此ORN可能可以繼續(xù)拆解為相應(yīng)的FRN和WRN。( 二)基于多重通用特征的自由空間記錄關(guān)鍵點信息分析如上述所描述,雖然自由空間上的記錄復(fù)雜,但是,不管自由空間上的記錄數(shù)據(jù)是屬于哪張數(shù)據(jù)表,但是這些都可以歸結(jié)為兩大類WRN和FRN。自由空間上WRN的sqlite記錄結(jié)構(gòu)如圖2所示。其中記錄總長度(記為TL)和 ROWID是變長整數(shù),占用的空間大小為1-9字節(jié),頭部索引總長度(記為HL)是N個索引 (記為Index)和HL占用的空間大小,而N個數(shù)據(jù)(記為Data)域與N個索引域一一對應(yīng), INDEXi記錄了 DATAi占用的空間大小。不過,完整記錄塊可能會由于后續(xù)的空間分配而被截斷,可能是從某記錄的DATAi, i e [I, N]、INDEXi, i e [I, N]甚至是TL、ROffID或HL處被截斷,但是頭部完整的記錄都能保證以下2個基本特征TL 至少滿足 value (TL) < PSZ-offset (TL) _m,其中 value (TL)表示 TL 的值,PSZ 表示B+tree所管理的頁面大小,offset (TL)表示TL所在的地址偏移,而m是一個表示TL 和ROWID的偏移數(shù),根據(jù)當(dāng)前記錄的情況,其取值范圍為m e [2,18];HL至少兩個滿足關(guān)系式size(HL) = η,其中size (HL)表示HL所占用空間的大小,η根據(jù)當(dāng)前數(shù)據(jù)表的結(jié)構(gòu),其取值范圍為n e [1,2];sn ( value (HL) ( sn+off,其中value (HL)表示HL的值,sn表示當(dāng)前數(shù)據(jù)表的字段數(shù),off根據(jù)當(dāng)前數(shù)據(jù)表的結(jié)構(gòu),其取值范圍為off e [O, sn]。自由空間上FRN,其記錄的前4個字節(jié)被覆蓋,其結(jié)構(gòu)如圖3所示。記錄的前4個字節(jié)(記為FR)將被改寫,其中前兩個字節(jié)指向下一個空閑節(jié)點的指針(記為NFP),后兩個字節(jié)表示該空閑節(jié)點的大小(記為FTL),但是由于可能內(nèi)部空間經(jīng)過多次的記錄刪除和插入,導(dǎo)致每個NFP指向的位置呈隨機化趨勢,F(xiàn)TL的大小也未必表示后續(xù)空閑空間的大小, 甚至NFP和FTL都被部分覆蓋。但是,NFP和FTL至少都保持了 2個基本的特征value (NFP) > offset (NFP)value (FTL) e (O, PSZ-offset (NFP)]其中value、offset和PSZ表示的意思與上述描述相同。綜上所述,提出了以下的五元組,用以判斷自由空間上記錄的關(guān)鍵點信息?!础磛alue (TL), value (HL), size (HL) >,〈value (NFP), value (FTL) >>并且抽象出三元組〈offset (REC), size (REC) ,type〉,用以描述自由空間上記錄的關(guān)鍵點信息,其中REC表示W(wǎng)RN或者FRN上的記錄。但是,該五元組及其基本特征僅是滿足記錄關(guān)鍵點信息的必要非充分條件,所以不僅需要識別真?zhèn)侮P(guān)鍵點信息,還要識別哪些記錄不屬于當(dāng)前數(shù)據(jù)表,對于非當(dāng)前數(shù)據(jù)表的記錄,利用頁面交叉方法來挖掘刪除記錄。(三)結(jié)構(gòu)約束機制這里引入了一個可擴展的結(jié)構(gòu)約束集合,不僅能用于識別真?zhèn)侮P(guān)鍵點信息,而且還能夠識別當(dāng)前記錄是否屬于當(dāng)前數(shù)據(jù)表,并且利用對應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)約束來識別和挖掘刪除記錄。下面將舉例說明I) sqlite頁大小帶來的約束所有的類型對應(yīng)的INDEXi,由于sqlite頁的大小限制,INDEXi占用的空間大小也將受到相應(yīng)的限制。因為在sqlite文件初始頁中有定義了 sqlite頁的大小,該值用2個字節(jié)來表示,所以除非記錄使用溢出頁,否則size (INDEXi)的最大值將為2 (溢出頁的情況不在此文檔中考慮)。2) sqlite類型值約束所有的類型對應(yīng)的INDEXi,其原始數(shù)值不能是當(dāng)前未定義的值,如IOUl等。3)數(shù)據(jù)類型約束比如INTEGER類型約束、TEXT類型約束、BLOB類型約束等。4)其他擴展約束比如字符編碼約束等,此外后續(xù)可以繼續(xù)擴展相關(guān)的約束。(四)算法實現(xiàn)步驟
I.根據(jù)sqlite數(shù)據(jù)表結(jié)構(gòu)和文件格式,從B+tree樹上讀取一個頁面page, page 可能是內(nèi)部頁,也可能是葉子頁;2.從page中讀取自由空間FSN a)讀取page的PH部分的前8字節(jié)的管理信息,其中第一個單元塊地址作為FSN 的結(jié)束位置FE ;b) FSN的開始標(biāo)志FB初始化為PH結(jié)束位置,且初始化zero標(biāo)志為O ;c)若FB彡FE,則FB賦值為PH結(jié)束位置,轉(zhuǎn)步驟f);d)若 value (FB) > offset (FB),則 FB = FB+2,轉(zhuǎn)步驟 c);e)否則,若value (FB) = 0,則FB = FB+2,zero標(biāo)志賦值為1,轉(zhuǎn)步驟f);否則,轉(zhuǎn)步驟g);f)若FB彡FE,沒有FSN存在,返回失??;g)否則,根據(jù)zero標(biāo)志確定FB是為當(dāng)前位置還是PH結(jié)束位置,并且根據(jù)FB和 FE 確定 FSN 的二元組信息〈offset (FSN),size (FSN) >,轉(zhuǎn)步驟 3 ;3.根據(jù)上述的五元組信息,識別所有關(guān)鍵點信息,寫入FLIST鏈表a)學(xué)習(xí)當(dāng)前數(shù)據(jù)表的結(jié)構(gòu),確定常量PSZ、m、n、sn和off;b) P初始化為FSN的開始位置P = FB ;c)若P彡FE,則跳出,轉(zhuǎn)步驟4 ;d)計算〈〈value (TL),value (HL),size (HL) >,〈value (NFP),value (FTL) >>,判斷是否滿足該五元組對應(yīng)的五個基本特征,若滿足前3個基本特征,則type標(biāo)識為WRN類型, 計算〈offset (REC),size (REC),type〉并寫入到 FLIST, P = P+size (P),其中 size (P)表不 P對應(yīng)的變長整數(shù)的大小,轉(zhuǎn)步驟c);e)否則,若滿足后2個基本特征,則type標(biāo)識為FRN類型,,計算〈offset (REC), size (REC),type〉并寫入到 FLIST, P = P+1,轉(zhuǎn)步驟 c);f)否則,若type沒有標(biāo)識,P = P+1,轉(zhuǎn)步驟c);4.第一次遍歷FLIST,這里涉及多種記錄類型,需要增加對記錄類型的判斷和處理。首先設(shè)置初始節(jié)點P為FLIST的第一個節(jié)點,a)若P為空,則轉(zhuǎn)步驟5 ;b)讀取P的type值,若type為WRN類型,則根據(jù)圖2的sqlite記錄結(jié)構(gòu)和上述的結(jié)構(gòu)約束,判斷是否滿足WRN類型的REC的重組條件,包括完整記錄和碎片記錄等,若滿足重組條件,打上相應(yīng)的標(biāo)志,轉(zhuǎn)步驟f);c)否則假定REC存在五元組的碎片,調(diào)整P的三元組信息,消除可能存在的關(guān)鍵點信息碎片,然后判斷REC重組條件,若滿足,該節(jié)點打上相應(yīng)標(biāo)記,轉(zhuǎn)步驟g);若不滿足,轉(zhuǎn)步驟f);d)否則,若type為FRN類型,根據(jù)我們之前曾提出的“一種Sqlite刪除記錄結(jié)構(gòu)重組方法”中國專利申請?zhí)?01110266852. I來判斷是否滿足FRN類型的REC的重組條件, 若滿足重組條件,打上相應(yīng)的標(biāo)志,轉(zhuǎn)步驟g);e)否則假定REC存在五元組的碎片,調(diào)整P的三元組信息,消除可能存在的關(guān)鍵點信息碎片,然后判斷REC重組條件,若滿足,該節(jié)點打上相應(yīng)標(biāo)記,轉(zhuǎn)步驟g);若不滿足,轉(zhuǎn)步驟f);
f)還原P的二元組信息;g)P向后取一個關(guān)鍵點信息節(jié)點,轉(zhuǎn)步驟a);5.第二次遍歷FLIST,主要是逆序遍歷FLIST,利用節(jié)點合并和拆分技術(shù),識別出真?zhèn)侮P(guān)鍵點信息,算法抽象為節(jié)點類型無關(guān),如申請人申請的專利201110443733. 9 ;描述如下(其中P初始化為FLIST的最后一個節(jié)點)a)若P為空,轉(zhuǎn)步驟6;b)若P有重組標(biāo)記,轉(zhuǎn)步驟e);c)否則,若前一個節(jié)點PRE有重組標(biāo)記>若P的原始狀態(tài)是碎片,則進行碎片重組,轉(zhuǎn)步驟e);>否則,若P為合并節(jié)點,將合并節(jié)點拆分,P取倒數(shù)第二個被合并節(jié)點,轉(zhuǎn)步驟 a);d)否則,節(jié)點向前合并,P取合并后的節(jié)點,用步驟4的b)至f)的方法來處理各種標(biāo)記,轉(zhuǎn)步驟e);e)P向前取一個節(jié)點,轉(zhuǎn)步驟a);6.第三次遍歷FLIST,首先設(shè)置初始節(jié)點P為FLIST的最后一個節(jié)點,a)若P為空,則跳出算法;b)若P有相應(yīng)的重組或合并標(biāo)記,P向前取一個節(jié)點,轉(zhuǎn)步驟a);c)否則,檢查P的大小,今若P的type為WRN類型,I)若P有相應(yīng)的標(biāo)記,則清空cnt,轉(zhuǎn)步驟a);2)否則,計算節(jié)點P的大小是否滿足下面的關(guān)系式
權(quán)利要求
1.一種sqlite的自由空間的刪除記錄挖掘方法,其特征在于,所述方法包括下述步驟讀取sqlite頁的自由空間,從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息;通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄。
2.根據(jù)權(quán)利要求I所述的sqlite的自由空間的刪除記錄挖掘方法,其特征在于,所述多重通用特征包括五元組,為當(dāng)前頁面的完整的記錄數(shù)據(jù)塊中的記錄總長度的值、頭部索引總長度的值、頭部索引總長度所占用空間的大小,以及當(dāng)前頁面的空閑鏈表節(jié)點的前兩個字節(jié)指向下一個空閑節(jié)點的指針的值、后兩個字節(jié)表示該空閑節(jié)點的大小的值。
3.根據(jù)權(quán)利要求2所述的sqlite的自由空間的刪除記錄挖掘方法,其特征在于,根據(jù)所述五元組抽象出的所述多元組用以描述自由空間上記錄的關(guān)鍵點信息,所述多元組包括三元組,為在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所在的地址偏移、在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所占用空間的大小,以及數(shù)據(jù)類型。
4.根據(jù)權(quán)利要求I所述的sqlite的自由空間的刪除記錄挖掘方法,其特征在于,所述讀取sqlite頁的自由空間,從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息,引入可擴展的結(jié)構(gòu)約束集合。
5.根據(jù)權(quán)利要求5所述的sqlite的自由空間的刪除記錄挖掘方法,其特征在于,所述可擴展的結(jié)構(gòu)約束集合為以下的任一種或其組合sqlite頁大小帶來的約束、sqlite類型值約束以及數(shù)據(jù)類型約束。
6.根據(jù)權(quán)利要求I所述的sqlite的自由空間的刪除記錄挖掘方法,其特征在于, 通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄的具體步驟為第一次遍歷所述關(guān)鍵點信息所在的鏈表,根據(jù)節(jié)點的類型依次處理各個節(jié)點;第二次遍歷所述關(guān)鍵點信息所在的鏈表,對于不滿足重組條件的節(jié)點采用節(jié)點合并和拆分方式,再次嘗試重組判斷;第三次遍歷所述關(guān)鍵點信息所在的鏈表,判斷是否有不屬于當(dāng)前數(shù)據(jù)表的記錄存在, 如果有,采用交叉方法挖掘刪除記錄。
7.—種sqlite的自由空間的刪除記錄挖掘系統(tǒng),其特征在于,所述系統(tǒng)包括關(guān)鍵點信息抽象單元,用于從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息;頁面交叉遍歷單元,用于通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄。
8.根據(jù)權(quán)利要求7所述的sqlite的自由空間的刪除記錄挖掘系統(tǒng),其特征在于,所述多重通用特征包括五元組,為當(dāng)前頁面的完整的記錄數(shù)據(jù)塊中的記錄總長度的值、頭部索引總長度的值、頭部索引總長度所占用空間的大小,以及當(dāng)前頁面的空閑鏈表節(jié)點的前兩個字節(jié)指向下一個空閑節(jié)點的指針的值、后兩個字節(jié)表示該空閑節(jié)點的大小的值。
9.根據(jù)權(quán)利要求8所述的sqlite的自由空間的刪除記錄挖掘系統(tǒng),其特征在于,根據(jù)所述五元組抽象出的所述多元組用以描述自由空間上記錄的關(guān)鍵點信息,所述多元組包括三元組,為在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所在的地址偏移、在當(dāng)前頁面的完整的記錄數(shù)據(jù)塊的或者當(dāng)前頁面的空閑鏈表節(jié)點的記錄的所占用空間的大小,以及數(shù)據(jù)類型。
10.根據(jù)權(quán)利要求7所述的sqlite的自由空間的刪除記錄挖掘系統(tǒng),其特征在于,所述頁面交叉遍歷單元,包括第一次遍歷單元,用于根據(jù)節(jié)點的類型依次處理各個節(jié)點;第二次遍歷單元,用于對于不滿足重組條件的節(jié)點采用節(jié)點合并和拆分方式,再次嘗試重組判斷;第三次遍歷單元,用于判斷是否有不屬于當(dāng)前數(shù)據(jù)表的記錄存在,如果有,采用交叉方法挖掘刪除記錄。
全文摘要
本發(fā)明提供一種sqlite的自由空間的刪除記錄挖掘方法,所述方法包括下述步驟讀取sqlite頁的自由空間,從sqlite的多重通用特征中抽象出多元組用以描述自由空間的記錄的關(guān)鍵點信息;通過頁面交叉方法遍歷上述關(guān)鍵點信息以挖掘刪除記錄。本方法能充分挖掘其他數(shù)據(jù)表殘留的刪除記錄,以提高自由空間刪除記錄挖掘的準(zhǔn)確性和全面性。
文檔編號G06F17/30GK102591979SQ20121000168
公開日2012年7月18日 申請日期2012年1月5日 優(yōu)先權(quán)日2012年1月5日
發(fā)明者吳世雄, 方均灘, 陳明輝 申請人:廈門市美亞柏科信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
文登市| 云安县| 土默特右旗| 遂溪县| 工布江达县| 龙里县| 大冶市| 洪江市| 凭祥市| 诸暨市| 海兴县| 台北县| 泸溪县| 营山县| 西林县| 云林县| 蓬溪县| 汉源县| 瓦房店市| 句容市| 旬邑县| 日照市| 大兴区| 吕梁市| 荆州市| 金坛市| 十堰市| 兰溪市| 山阳县| 台湾省| 茂名市| 郴州市| 台南市| 东阿县| 聂拉木县| 县级市| 和林格尔县| 临安市| 札达县| 家居| 思南县|