和當(dāng)前單增區(qū)間的用于記錄最靠近索引空間結(jié)束位的置位位置的末位索引 指針都指向新插入的偏移量的位置。
[0034] 進(jìn)一步,所述插入模塊中在索引空間中插入當(dāng)前關(guān)鍵字對(duì)應(yīng)的日志文件的文件編 號(hào)具體為,在索引空間中將表示文件編號(hào)的位進(jìn)行置位。
[0035] 進(jìn)一步,所述指向模塊中的索引空間的預(yù)定臨界值為有效文件范圍與容量系數(shù)的 乘積。
【附圖說明】
[0036] 圖1為本發(fā)明方法步驟流程圖;
[0037] 圖2為本發(fā)明裝置結(jié)構(gòu)圖;
[0038] 圖3為每個(gè)關(guān)鍵字對(duì)應(yīng)的索引結(jié)構(gòu)不意圖;
[0039] 圖4為當(dāng)前關(guān)鍵字出現(xiàn)在索引數(shù)據(jù)庫中、但上一次插入的文件編號(hào)小于索引范圍 的起始位時(shí)的空間動(dòng)態(tài)調(diào)整示意圖;
[0040] 圖5為當(dāng)前關(guān)鍵字的索引空間中實(shí)際有效文件范圍〈有效文件范圍與容量系數(shù)的 乘積時(shí)空間動(dòng)態(tài)調(diào)整示意圖;
[0041] 圖6為執(zhí)彳丁插入操作時(shí)、置位點(diǎn)在最后時(shí)空間動(dòng)態(tài)調(diào)整不意圖;
[0042] 圖7為執(zhí)行插入操作時(shí)、置位點(diǎn)在索引范圍內(nèi)部時(shí)空間動(dòng)態(tài)調(diào)整示意圖;
[0043] 圖8為執(zhí)行插入操作時(shí)、置位點(diǎn)在索引范圍內(nèi)部時(shí)空間動(dòng)態(tài)調(diào)整示意圖;
[0044] 圖9為插入一個(gè)新的置位點(diǎn)后、出現(xiàn)三個(gè)單增區(qū)間時(shí)的操作示意圖;
[0045] 圖10為應(yīng)用于redis重啟時(shí)最大內(nèi)存空間消耗情況對(duì)比示意圖。
[0046] 附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0047]1、獲取模塊,2、判斷模塊,3、檢測(cè)模塊,4、插入模塊,5、指向模塊,6、保存模塊,7、 記錄模塊,8、整合模塊,9、刪除模塊,10、結(jié)束模塊。
【具體實(shí)施方式】
[0048] 以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。
[0049] 實(shí)施例1
[0050] 一種基于空間位圖模型的輔助索引方法,包括以下步驟:
[0051] 步驟1:從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志 文件從日志文件生產(chǎn)隊(duì)列中刪除,每個(gè)所述日志文件均包括多個(gè)關(guān)鍵字,獲取當(dāng)前日志文 件中的所有關(guān)鍵字;
[0052] 步驟2:如果當(dāng)前日志文件中的所有的關(guān)鍵字均處理完畢,執(zhí)行步驟10,否則,從 未處理的關(guān)鍵字中選擇任一關(guān)鍵字作為當(dāng)前關(guān)鍵字并執(zhí)行步驟3;
[0053] 步驟3:對(duì)當(dāng)前關(guān)鍵字做檢測(cè),如果當(dāng)前關(guān)鍵字沒有出現(xiàn)在索引數(shù)據(jù)庫中,執(zhí)行步 驟4,如果當(dāng)前關(guān)鍵字出現(xiàn)在索引數(shù)據(jù)庫中、但上一次插入的文件編號(hào)小于索引范圍的起始 位,將當(dāng)前關(guān)鍵字的索引信息從索引數(shù)據(jù)庫中刪除,執(zhí)行步驟4 ;否則,執(zhí)行步驟5 ;
[0054] 步驟4:重新在索引數(shù)據(jù)庫中為當(dāng)前關(guān)鍵字申請(qǐng)索引空間,在索引空間中插入當(dāng) 前關(guān)鍵字對(duì)應(yīng)的日志文件的文件編號(hào)、并記錄文件編號(hào)的偏移量,并在索引數(shù)據(jù)庫中記錄 當(dāng)前插入索引空間的文件編號(hào),令當(dāng)前關(guān)鍵字的用于記錄最后一個(gè)置位位置的末位索引指 針和當(dāng)前單增區(qū)間的用于記錄最靠近索引空間結(jié)束位的置位位置的末位索引指針都指向 新插入的偏移量的位置,執(zhí)行步驟2;在索引空間中插入當(dāng)前關(guān)鍵字對(duì)應(yīng)的日志文件的文 件編號(hào)具體為,在索引空間中將表示文件編號(hào)的位進(jìn)行置位。
[0055] 步驟5:令用于記錄臨時(shí)有效文件范圍的臨時(shí)有效文件范圍指針指向當(dāng)前關(guān)鍵字 的索引空間,如果當(dāng)前關(guān)鍵字的索引空間中實(shí)際有效文件范圍小于索引空間的預(yù)定臨界 值,索引空間的預(yù)定臨界值為有效文件范圍與容量系數(shù)的乘積,執(zhí)行步驟6,否則,執(zhí)行步驟 7;
[0056] 步驟6 :將有效文件范圍內(nèi)的所有索引信息保存到臨時(shí)有效文件范圍中,執(zhí)行步 驟7 ;
[0057] 步驟7:如果待置位的文件編號(hào)在索引范圍的起始位與插入索引空間的最大的文 件編號(hào)的范圍內(nèi),在臨時(shí)有效文件范圍內(nèi)查找待置位的文件編號(hào)的插入位置,利用順序后 移指針記錄查找到的插入位置及偏移量的信息;如果待置位的文件編號(hào)大于插入索引空間 的最大的文件編號(hào),則直接將待置位的文件編號(hào)的偏移量賦值給順序后移指針,令插入索 引空間的最大的文件編號(hào)更新為待置位的文件編號(hào);
[0058] 步驟8 :將臨時(shí)有效文件范圍指針與順序后移指針整合成新的索引空間的信息;
[0059] 步驟9:如果整合后的索引空間的信息里出現(xiàn)了三個(gè)關(guān)于偏移量的單增區(qū)間,則 刪除其中第一個(gè)形成的單增區(qū)間,保留最后兩個(gè)單增區(qū)間,執(zhí)行步驟2;
[0060] 步驟10 :結(jié)束處理。
[0061] 一種基于空間位圖模型的輔助索引系統(tǒng),包括獲取模塊1、判斷模塊2、檢測(cè)模塊 3、插入模塊4、指向模塊5、保存模塊6、記錄模塊7、整合模塊8、刪除模塊9和結(jié)束模塊10;
[0062] 所述獲取模塊1,用于從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào), 并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,每個(gè)所述日志文件均包括多個(gè)關(guān)鍵字,獲取 當(dāng)前日志文件中的所有關(guān)鍵字;
[0063] 所述判斷模塊2,用于如果當(dāng)前日志文件中的所有的關(guān)鍵字均處理完畢,執(zhí)行結(jié)束 模塊10,否則,從未處理的關(guān)鍵字中選擇任一關(guān)鍵字作為當(dāng)前關(guān)鍵字并執(zhí)行檢測(cè)模塊3 ;
[0064] 所述檢測(cè)模塊3,用于對(duì)當(dāng)前關(guān)鍵字做檢測(cè),如果當(dāng)前關(guān)鍵字沒有出現(xiàn)在索引數(shù)據(jù) 庫中,執(zhí)行插入模塊4,如果當(dāng)前關(guān)鍵字出現(xiàn)在索引數(shù)據(jù)庫中、但上一次插入的文件編號(hào)小 于索引范圍的起始位,將當(dāng)前關(guān)鍵字的索引信息從索引數(shù)據(jù)庫中刪除,執(zhí)行插入模塊4;否 貝!J,執(zhí)行指向豐旲塊5 ;
[0065] 所述插入模塊4,用于重新在索引數(shù)據(jù)庫中為當(dāng)前關(guān)鍵字申請(qǐng)索引空間,在索引空 間中插入當(dāng)前關(guān)鍵字對(duì)應(yīng)的日志文件的文件編號(hào)、并記錄文件編號(hào)的偏移量,并在索引數(shù) 據(jù)庫中記錄當(dāng)前插入索引空間的文件編號(hào),令當(dāng)前關(guān)鍵字的用于記錄最后一個(gè)置位位置的 末位索引指針和當(dāng)前單增區(qū)間的用于記錄最靠近索引空間結(jié)束位的置位位置的末位索引 指針都指向新插入的偏移量的位置,執(zhí)行判斷模塊2;在索引空間中插入當(dāng)前關(guān)鍵字對(duì)應(yīng) 的曰志文件的文件編號(hào)具體為,在索引空間中將表示文件編號(hào)的位進(jìn)行置位;
[0066] 所述指向模塊5,用于令用于記錄臨時(shí)有效文件范圍的臨時(shí)有效文件范圍指針指 向當(dāng)前關(guān)鍵字的索引空間,如果當(dāng)前關(guān)鍵字的索引空間中實(shí)際有效文件范圍小于索引空間 的預(yù)定臨界值,索引空間的預(yù)定臨界值為有效文件范圍與容量系數(shù)的乘積,執(zhí)行保存模塊 6,否則,執(zhí)行記錄模塊7;
[0067] 所述保存模塊6,用于將有效文件范圍內(nèi)的所有索引信息保存到臨時(shí)有效文件范 圍中,執(zhí)行記錄模塊7 ;
[0068] 所述記錄模塊7,用于如果待置位的文件編號(hào)在索引范圍的起始位與插入索引空 間的最大的文件編號(hào)的范圍內(nèi),在臨時(shí)有效文件范圍內(nèi)查找待置位的文件編號(hào)的插入位 置,利用順序后移指針記錄查找到的插入位置及偏移量的信息;如果待置位的文件編號(hào)大 于插入索引空間的最大的文件編號(hào),則直接將待置位的文件編號(hào)的偏移量賦值給順序后移 指針,令插入索引空間的最大的文件編號(hào)更新為待置位的文件編號(hào);
[0069] 所述整合模塊8,用于將臨時(shí)有效文件范圍指針與順序后移指針整合成新的索引 空間的信息;
[0070] 所述刪除模塊9,用于如果整合后的索引空間的信息里出現(xiàn)了三個(gè)關(guān)于偏移量的 單增區(qū)間,則刪除其中第一個(gè)形成的單增區(qū)間,保留最后兩個(gè)單增區(qū)間,執(zhí)行判斷模塊2 ;
[0071] 所述結(jié)束模塊10,用于結(jié)束處理。
[0072] 在