一種基于循環(huán)位圖模型的輔助索引方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種基于循環(huán)位圖模型的輔助索引方法及裝置,包括以下步驟:從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖;判斷文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間;檢查文件編號(hào)是否在索引范圍起始位與有效索引范圍終點(diǎn)之間;在日志文件的文件編號(hào)處執(zhí)行置位操作;對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索引范圍結(jié)束位;等待直到文件生產(chǎn)隊(duì)列中生成新的日志文件,執(zhí)行步驟1。本發(fā)明不隨日志編號(hào)增加而擴(kuò)展內(nèi)存使用空間,能夠在客戶端和服務(wù)器實(shí)現(xiàn),并針對(duì)客戶端提出基于流水線的提速模型。
【專利說(shuō)明】
一種基于循環(huán)位圖模型的輔助索引方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)查詢優(yōu)化領(lǐng)域,特別涉及基于內(nèi)存數(shù)據(jù)庫(kù)用作加速查詢的一種基于循環(huán)位圖模型的輔助索引方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)網(wǎng)絡(luò)的快速發(fā)展,“大數(shù)據(jù)”吸引了越來(lái)越多的關(guān)注,如何能在龐大的流式數(shù)據(jù)中快速,高效地查詢目標(biāo)信息成為了熱門話題。為了達(dá)到這個(gè)目標(biāo),能否根據(jù)數(shù)據(jù)的特點(diǎn)建立索引成為了關(guān)鍵問(wèn)題。
[0003]在某特定應(yīng)用場(chǎng)景中,服務(wù)器每天都會(huì)產(chǎn)生大量的系統(tǒng)日志、網(wǎng)絡(luò)數(shù)據(jù)等流式數(shù)據(jù),這些數(shù)據(jù)按照時(shí)間分片的原則定時(shí)收集并以ID號(hào)遞增的方式為由收集的數(shù)據(jù)組成的文件命名,同時(shí)這些文件有一定的存儲(chǔ)周期,例如某服務(wù)器收集產(chǎn)生的網(wǎng)絡(luò)數(shù)據(jù),每隔一小時(shí)將收集到的數(shù)據(jù)集中在當(dāng)前文件中,命名為ID ;然后將創(chuàng)建新的文件,命名為ID+1,繼續(xù)收集數(shù)據(jù);如果存儲(chǔ)周期為3個(gè)月,則有效文件數(shù)為2160 (24*30*3 = 2160),當(dāng)?shù)?161個(gè)文件收集數(shù)據(jù)完畢后,將刪除第I個(gè)文件。
[0004]如果要在這樣的情景中快速獲取相應(yīng)信息,可以采用這樣的方法:對(duì)產(chǎn)生的流式數(shù)據(jù)文件實(shí)時(shí)更新倒排索引;在每次查詢時(shí),能夠根據(jù)鍵來(lái)查找目標(biāo)信息在哪些文件中;過(guò)期的文件信息可以在更新索引時(shí)從索引信息中刪除。以位圖結(jié)構(gòu)為基礎(chǔ)的倒排索引能滿足高效查詢,使用在基于內(nèi)存查詢數(shù)據(jù)信息的數(shù)據(jù)庫(kù)中可以做到實(shí)時(shí)更新,添加一些操作可以保證過(guò)期日志信息刪除后還能正確索引,但是這樣的結(jié)構(gòu)隨著日志編號(hào)的增加,需要不斷擴(kuò)展位圖容量,從而耗費(fèi)了巨大的內(nèi)存空間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種不隨日志編號(hào)增加而擴(kuò)展內(nèi)存使用空間的基于循環(huán)位圖模型的輔助索引方法及裝置。
[0006]本發(fā)明解決上述技術(shù)問(wèn)題的技術(shù)方案如下:一種基于循環(huán)位圖模型的輔助索引方法,包括以下步驟:
[0007]步驟1:從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn);
[0008]步驟2:判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行步驟3,否則,執(zhí)行步驟7 ;
[0009]步驟3:根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行步驟4,否則,執(zhí)行步驟5,直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行步驟6 ;
[0010]步驟4:在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,執(zhí)行步驟7;
[0011]步驟5:對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索引范圍結(jié)束位,執(zhí)行步驟7 ;
[0012]步驟6:如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行步驟I ;
[0013]步驟7:結(jié)束。
[0014]本發(fā)明的有益效果是:本發(fā)明的索引結(jié)構(gòu)是基于循環(huán)隊(duì)列和位圖改進(jìn)而來(lái)的,當(dāng)最大索引空間容量較大時(shí),會(huì)占用很多內(nèi)存空間。將該索引結(jié)構(gòu)應(yīng)用于100W個(gè)關(guān)鍵字的數(shù)據(jù)規(guī)模上時(shí),實(shí)現(xiàn)在客戶端的該索引結(jié)構(gòu)與流水線模型結(jié)合后的平均更新速度為1W次/秒,實(shí)現(xiàn)在服務(wù)器端的該索引結(jié)構(gòu)的平均更新速度為19W次/秒,該索引結(jié)構(gòu)適合應(yīng)用于平均置位率在4.5%以上的場(chǎng)景。
[0015]在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
[0016]進(jìn)一步,所述索引范圍起始位處為有效的用于索引的位,索引范圍結(jié)束位處為無(wú)效的用于索引的位。
[0017]進(jìn)一步,所述步驟5中的復(fù)位清零操作具體為:根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零;
[0018]當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
[0019]進(jìn)一步,所述步驟5,在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
[0020]進(jìn)一步,當(dāng)日志文件生產(chǎn)隊(duì)列設(shè)置于服務(wù)器中時(shí),用于操作控制的客戶端采用三級(jí)流水線的方式與服務(wù)器進(jìn)行信息交互:
[0021]在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn),并將有效索引范圍終點(diǎn)的集合發(fā)送給二級(jí)流水線;
[0022]在_■級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值;
[0023]在三級(jí)流水線中,客戶端對(duì)每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)與索引范圍結(jié)束位處分別執(zhí)行置位和復(fù)位操作。
[0024]進(jìn)一步,在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)時(shí),如果不存在任何關(guān)鍵字,將有效索引范圍終點(diǎn)的值標(biāo)記為第一非法值;如果存在一個(gè)或多個(gè)關(guān)鍵字,但有效索引范圍終點(diǎn)小于索引范圍起始位,則將有效索引范圍終點(diǎn)標(biāo)記為第二非法值。
[0025]進(jìn)一步,在二級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值時(shí),如果日志文件的文件編號(hào)在索引范圍起始位于有效索引范圍終點(diǎn)之間或者有效索引范圍終點(diǎn)為第一非法值或第二非法值時(shí),不獲取待置位關(guān)鍵字的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間的字節(jié)值。
[0026]進(jìn)一步,一種基于循環(huán)位圖模型的輔助索引裝置,包括獲取建立模塊、判斷模塊、獲取檢查模塊、置位模塊、復(fù)位模塊和等待模塊;
[0027]所述獲取建立模塊,用于從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn);
[0028]所述判斷模塊,用于判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行獲取檢查模塊,否則,結(jié)束處理;
[0029]所述獲取檢查模塊,用于根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行置位模塊,否則,執(zhí)行復(fù)位模塊,直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行等待模塊;
[0030]所述置位模塊,用于在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,結(jié)束處理;
[0031]所述復(fù)位模塊,用于對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索弓I范圍結(jié)束位,結(jié)束處理;
[0032]所述等待模塊,用于如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行獲取建立模塊。
[0033]進(jìn)一步,所述復(fù)位模塊在執(zhí)行復(fù)位清零操作時(shí),根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零;
[0034]當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
[0035]進(jìn)一步,所述復(fù)位模塊在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
【專利附圖】
【附圖說(shuō)明】
[0036]圖1為本發(fā)明方法步驟流程圖;
[0037]圖2為本發(fā)明裝置結(jié)構(gòu)圖。
[0038]附圖中,各標(biāo)號(hào)所代表的部件列表如下:
[0039]1、獲取建立模塊,2、判斷模塊,3、獲取檢查模塊,4、置位模塊,5、復(fù)位模塊,6、等待模塊。
【具體實(shí)施方式】
[0040]以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0041]如圖1所示,為本發(fā)明方法步驟流程圖;圖2為本發(fā)明裝置結(jié)構(gòu)圖。
[0042]實(shí)施例1
[0043]一種基于循環(huán)位圖模型的輔助索引方法,包括以下步驟:
[0044]步驟1:從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn);
[0045]步驟2:判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行步驟3,否則,執(zhí)行步驟7 ;
[0046]步驟3:根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行步驟4,否則,執(zhí)行步驟5,直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行步驟6 ;
[0047]步驟4:在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,執(zhí)行步驟7;
[0048]步驟5:對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索引范圍結(jié)束位,執(zhí)行步驟7 ;
[0049]步驟6:如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行步驟I ;
[0050]步驟7:結(jié)束。
[0051]所述索引范圍起始位處為有效的用于索引的位,索引范圍結(jié)束位處為無(wú)效的用于索引的位。
[0052]所述步驟5中的復(fù)位清零操作具體為:根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零;
[0053]當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
[0054]所述步驟5,在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
[0055]當(dāng)日志文件生產(chǎn)隊(duì)列設(shè)置于服務(wù)器中時(shí),用于操作控制的客戶端采用三級(jí)流水線的方式與服務(wù)器進(jìn)行信息交互:
[0056]在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn),并將有效索引范圍終點(diǎn)的集合發(fā)送給二級(jí)流水線;
[0057]在二級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值;
[0058]在三級(jí)流水線中,客戶端對(duì)每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)與索引范圍結(jié)束位處分別執(zhí)行置位和復(fù)位操作。
[0059]在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)時(shí),如果不存在任何關(guān)鍵字,將有效索引范圍終點(diǎn)的值標(biāo)記為第一非法值;如果存在一個(gè)或多個(gè)關(guān)鍵字,但有效索引范圍終點(diǎn)小于索引范圍起始位,則將有效索引范圍終點(diǎn)標(biāo)記為第二非法值。
[0060]在二級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值時(shí),如果日志文件的文件編號(hào)在索引范圍起始位于有效索引范圍終點(diǎn)之間或者有效索引范圍終點(diǎn)為第一非法值或第二非法值時(shí),不獲取待置位關(guān)鍵字的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間的字節(jié)值。
[0061]一種基于循環(huán)位圖模型的輔助索引裝置,包括獲取建立模塊1、判斷模塊2、獲取檢查模塊3、置位模塊4、復(fù)位模塊5和等待模塊6 ;
[0062]所述獲取建立模塊1,用于從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn);
[0063]所述判斷模塊2,用于判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行獲取檢查模塊3,否則,結(jié)束處理;
[0064]所述獲取檢查模塊3,用于根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行置位模塊4,否則,執(zhí)行復(fù)位模塊5,直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行等待模塊6 ;
[0065]所述置位模塊4,用于在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,結(jié)束處理;
[0066]所述復(fù)位模塊5,用于對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索弓I范圍結(jié)束位,結(jié)束處理;
[0067]所述等待模塊6,用于如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行獲取建立模塊I。
[0068]所述復(fù)位模塊5在執(zhí)行復(fù)位清零操作時(shí),根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零;
[0069]當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
[0070]所述復(fù)位模塊5在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
[0071 ] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于循環(huán)位圖模型的輔助索引方法,其特征在于,包括以下步驟: 步驟1:從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn); 步驟2:判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行步驟3,否則,執(zhí)行步驟7 ; 步驟3:根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行步驟4,否則,執(zhí)行步驟5,直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行步驟6 ; 步驟4:在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,執(zhí)行步驟7; 步驟5:對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索引范圍結(jié)束位,執(zhí)行步驟7 ; 步驟6:如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行步驟I ; 步驟7:結(jié)束。
2.根據(jù)權(quán)利要求1所述的輔助索引方法,其特征在于:所述索引范圍起始位處為有效的用于索引的位,索引范圍結(jié)束位處為無(wú)效的用于索引的位。
3.根據(jù)權(quán)利要求1所述的輔助索引方法,其特征在于,所述步驟5中的復(fù)位操作具體為:根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零; 當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
4.根據(jù)權(quán)利要求3所述的輔助索引方法,其特征在于:所述步驟5,在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
5.根據(jù)權(quán)利要求1所述的輔助索引方法,其特征在于:當(dāng)日志文件生產(chǎn)隊(duì)列設(shè)置于服務(wù)器中時(shí),用于操作控制的客戶端采用三級(jí)流水線的方式與服務(wù)器進(jìn)行信息交互: 在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn),并將有效索引范圍終點(diǎn)的集合發(fā)送給二級(jí)流水線; 在二級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值; 在三級(jí)流水線中,客戶端對(duì)每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)與索引范圍結(jié)束位處分別執(zhí)行置位和復(fù)位操作。
6.根據(jù)權(quán)利要求5所述的輔助索引方法,其特征在于:在一級(jí)流水線中,客戶端從服務(wù)器中獲取每個(gè)關(guān)鍵字的有效索引范圍終點(diǎn)時(shí),如果不存在任何關(guān)鍵字,將有效索引范圍終點(diǎn)的值標(biāo)記為第一非法值;如果存在一個(gè)或多個(gè)關(guān)鍵字,但有效索引范圍終點(diǎn)小于索引范圍起始位,則將有效索引范圍終點(diǎn)標(biāo)記為第二非法值。
7.根據(jù)權(quán)利要求6所述的輔助索引方法,其特征在于:在二級(jí)流水線中,客戶端獲取每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位處的字節(jié)的值時(shí),如果日志文件的文件編號(hào)在索引范圍起始位于有效索引范圍終點(diǎn)之間或者有效索引范圍終點(diǎn)為第一非法值或第二非法值時(shí),不獲取待置位關(guān)鍵字的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間的字節(jié)值。
8.一種基于循環(huán)位圖模型的輔助索引裝置,其特征在于:包括獲取建立模塊(I)、判斷模塊(2)、獲取檢查模塊(3)、置位模塊(4)、復(fù)位模塊(5)和等待模塊(6); 所述獲取建立模塊(I),用于從日志文件生產(chǎn)隊(duì)列里獲取當(dāng)前的日志文件及其文件編號(hào),并將該日志文件從日志文件生產(chǎn)隊(duì)列中刪除,根據(jù)預(yù)設(shè)的循環(huán)位圖的最大容量為該日志文件中的所有關(guān)鍵字分別建立循環(huán)位圖,每個(gè)循環(huán)位圖的索引范圍起始位為最小的日志文件的文件編號(hào),每個(gè)循環(huán)位圖的索引范圍結(jié)束位為最大的日志文件的文件編號(hào),并為每個(gè)日志文件中的每個(gè)關(guān)鍵字建立一個(gè)有效索引范圍終點(diǎn); 所述判斷模塊(2),用于判斷當(dāng)前的日志文件的文件編號(hào)是否在索引范圍起始位與索引范圍結(jié)束位之間的有效索引范圍內(nèi),如果是,執(zhí)行獲取檢查模塊(3),否則,結(jié)束處理; 所述獲取檢查模塊(3),用于根據(jù)當(dāng)前的日志文件中的所有關(guān)鍵字分別獲取與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)及與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖的索引范圍起始位,并檢查日志文件的文件編號(hào)是否在索引范圍起始位與每個(gè)關(guān)鍵字對(duì)應(yīng)的有效索引范圍終點(diǎn)之間,如果是,執(zhí)行置位模塊(4),否則,執(zhí)行復(fù)位模塊(5),直到將當(dāng)前的日志文件中的所有關(guān)鍵字全部檢查完畢,執(zhí)行等待模塊(6); 所述置位模塊(4),用于在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的日志文件的文件編號(hào)處執(zhí)行置位操作,執(zhí)行完畢后,結(jié)束處理; 所述復(fù)位模塊(5),用于對(duì)與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間做復(fù)位操作,在與每個(gè)關(guān)鍵字對(duì)應(yīng)的循環(huán)位圖中的待置位的文件編號(hào)處執(zhí)行置位操作,并將有效索引范圍終點(diǎn)賦值為索弓I范圍結(jié)束位,結(jié)束處理; 所述等待模塊(6),用于如果日志文件生產(chǎn)隊(duì)列里沒(méi)有其他待處理的日志文件,進(jìn)入等待狀態(tài),直到文件生產(chǎn)隊(duì)列中生成新的日志文件,重新執(zhí)行獲取建立模塊(I)。
9.根據(jù)權(quán)利要求8所述的輔助索引裝置,其特征在于:所述復(fù)位模塊(5)在執(zhí)行復(fù)位清零操作時(shí),根據(jù)最大容量確定循環(huán)位圖的邊界點(diǎn),當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間時(shí),將有效索引范圍終點(diǎn)與邊界點(diǎn)之間及邊界點(diǎn)至索引范圍結(jié)束位之間進(jìn)行復(fù)位清零; 當(dāng)邊界點(diǎn)位于有效索引范圍終點(diǎn)與索引范圍結(jié)束位外部時(shí),只對(duì)有效索引范圍終點(diǎn)與索引范圍結(jié)束位之間進(jìn)行復(fù)位清零。
10.根據(jù)權(quán)利要求8所述的輔助索引裝置,其特征在于:所述復(fù)位模塊(5)在執(zhí)行置位和/或復(fù)位時(shí),先檢查待置位和/或復(fù)位的位所在的字節(jié)的存儲(chǔ)空間是否存在,如果不存在,將循環(huán)位圖的邊界點(diǎn)擴(kuò)展到字節(jié)的末尾處,然后在相應(yīng)的位執(zhí)行置位和/或復(fù)位操作。
【文檔編號(hào)】G06F17/30GK104182522SQ201410425094
【公開(kāi)日】2014年12月3日 申請(qǐng)日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】李波, 王卓, 陳明雨, 古井子, 文雨, 王偉平, 孟丹 申請(qǐng)人:中國(guó)科學(xué)院信息工程研究所