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

一種數(shù)據(jù)索引創(chuàng)建方法、數(shù)據(jù)檢索方法和系統(tǒng)的制作方法

文檔序號(hào):6400937閱讀:228來(lái)源:國(guó)知局
專利名稱:一種數(shù)據(jù)索引創(chuàng)建方法、數(shù)據(jù)檢索方法和系統(tǒng)的制作方法
一種數(shù)據(jù)索引創(chuàng)建方法、數(shù)據(jù)檢索方法和系統(tǒng)技術(shù)領(lǐng)域
本申請(qǐng)涉及數(shù)據(jù)庫(kù)領(lǐng)域,更具體地說(shuō),涉及一種數(shù)據(jù)索引創(chuàng)建方法、數(shù)據(jù)檢索方法和系統(tǒng)。
背景技術(shù)
隨著現(xiàn)在總線帶寬的不斷提高,電子系統(tǒng)的仿真測(cè)試必不可少,這樣就需要處理大批量的信息數(shù)據(jù),所以在關(guān)于數(shù)據(jù)庫(kù)處理的問題,引起了各個(gè)行業(yè)的關(guān)注,關(guān)注的重點(diǎn)是對(duì)大批量的數(shù)據(jù)進(jìn)行數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)查詢和數(shù)據(jù)分析等方面的內(nèi)容。
目前常用的數(shù)據(jù)庫(kù)在進(jìn)行大批量處理時(shí),都是有一些要求的,如在Mysql數(shù)據(jù)庫(kù)對(duì)大批量數(shù)據(jù)的處理之前,要確保有合適的存儲(chǔ)引擎,而在該數(shù)據(jù)庫(kù)中無(wú)法同時(shí)滿足時(shí)間、存儲(chǔ)容量和空間利用的需求;MySql處理大批量數(shù)據(jù)可以使用多個(gè)值表的插入語(yǔ)句,由客戶終端從存儲(chǔ)Mysql數(shù)據(jù)庫(kù)的服務(wù)器的磁盤中讀取Mysql數(shù)據(jù)庫(kù)中的數(shù)據(jù),而從磁盤中讀取數(shù)據(jù)降低讀取速度,增加讀取時(shí)間。
因此對(duì)于目前在處理數(shù)據(jù)尤其是處理大批量數(shù)據(jù)的時(shí)候,需要一種數(shù)據(jù)索引創(chuàng)建方法,以實(shí)現(xiàn)在時(shí)間上的節(jié)約,提高讀取速度,并且保證空間上的合理分配。發(fā)明內(nèi)容
為解決上述技術(shù)問題,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)索引創(chuàng)建方法,以實(shí)現(xiàn)在處理大批量數(shù)據(jù)時(shí),可以快速的完成索引的創(chuàng)建,節(jié)約時(shí)間,提高讀取速度,并且節(jié)約空間。其技術(shù)方案如下:
本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)索引創(chuàng)建方法,用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索弓|,包括:
獲取與所述數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件記錄的所有索引信息;
計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址;
按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中;
逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息;
確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中;
在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
優(yōu)選地,所述依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址包括:
對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序;
在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址為O ;
在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-ι的索引信息的偏移首地址與順序?yàn)?-ι的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
優(yōu)選地,所述索引信息為關(guān)鍵字時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在索引記錄區(qū)域中占用字節(jié)數(shù)之和;
或者所述索引信息為時(shí)間點(diǎn)時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和;
或者所述索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中所有時(shí)間點(diǎn)內(nèi)每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
優(yōu)選地,所述將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中包括:將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中,當(dāng)緩存中剩余空間為O時(shí),將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,并清除緩存。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)檢索方法,預(yù)先應(yīng)用上述數(shù)據(jù)索引創(chuàng)建方法創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,所述數(shù)據(jù)檢索方法包括:
接收數(shù)據(jù)檢索請(qǐng)求;
提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址;
依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域;
依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)索引創(chuàng)建系統(tǒng),用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,包括:第一獲取模塊、第一計(jì)算模塊、第一讀取模塊、第一存儲(chǔ)模塊和創(chuàng)建模塊;其中:
第一獲取模塊,用于獲取數(shù)據(jù)表文件記錄的所有索引信息;
第一計(jì)算模塊,用于計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址;
第一讀取模塊,用于按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中;逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中;
第一存儲(chǔ)模塊,用于確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中;
創(chuàng)建模塊,用于在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
優(yōu)選地,所述第一計(jì)算模塊包括:第二獲取單元、判斷單元、第一分配單元和第二分配單元;其中:
第二獲取單元,用于對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序;
判斷單元,用于判斷該索引信息在所有索引信息中的順序;
第一分配單元,用于在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址為O;
第二分配單元,用于在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-Ι的索引信息的偏移首地址與順序?yàn)?-ι的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
優(yōu)選地,所述索引信息為關(guān)鍵字時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和;
或者所述索引信息為時(shí)間點(diǎn)時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和;
或者所述索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中所有時(shí)間點(diǎn)內(nèi)每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
優(yōu)選地,
所述第一存儲(chǔ)模塊包括:第二存儲(chǔ)單元,用于將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中;
判斷模塊,用于判斷緩存中剩余空間是否為O ;
第三存儲(chǔ)單元,用于在緩存中的剩余空間為O時(shí),將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,并清除緩存。
本申請(qǐng)實(shí)施例還提供一種數(shù)據(jù)檢索系統(tǒng),預(yù)先應(yīng)用上述數(shù)據(jù)索引創(chuàng)建系統(tǒng)創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,所述數(shù)據(jù)檢索系統(tǒng)包括:
接收模塊,用于接收數(shù)據(jù)檢索請(qǐng)求;
提取模塊,用于提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址;
匹配模塊,用于依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域;
讀取模塊,用于依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
應(yīng)用本申請(qǐng)?zhí)峁┑募夹g(shù)方案,首先根據(jù)數(shù)據(jù)表文件記錄的所有的索引信息,計(jì)算得到每個(gè)索引信息在索引記錄區(qū)域中的偏移首地址;按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)庫(kù)存放在固定大小的內(nèi)存中,并逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中,在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
在應(yīng)用本申請(qǐng)?zhí)峁┑募夹g(shù)方案時(shí),數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中,因此客戶終端可以直接對(duì)自身存儲(chǔ)的數(shù)據(jù)文件建立數(shù)據(jù)索引,并依據(jù)數(shù)據(jù)索引檢索數(shù)據(jù)文件,從而省去客戶終端和服務(wù)器之間的反復(fù)的連接建立和斷開時(shí)間,提高讀取速度。而且在讀取數(shù)據(jù)時(shí)可以從內(nèi)存中讀取數(shù)據(jù),進(jìn)一步節(jié)省讀取時(shí)間,提高讀取速度。并且通過(guò)計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,則可以為每個(gè)索引記錄區(qū)域分配固定的空間,如索引記錄區(qū)域在存放數(shù)據(jù)地址信息時(shí),可以使相鄰兩個(gè)索引記錄區(qū)域中一個(gè)索引記錄區(qū)域的尾地址和另一個(gè)索引記錄區(qū)域的首地址相連,即相鄰兩個(gè)索引記錄區(qū)域之間沒有空閑區(qū)域,從而可以節(jié)約空間。


圖1為本申請(qǐng)中提供的數(shù)據(jù)索引創(chuàng)建方法的一種流程圖2為本申請(qǐng)中數(shù)據(jù)表文件的結(jié)構(gòu)示意圖3為本申請(qǐng)中計(jì)算每個(gè)索引信息的偏移首地址的具體流程圖4為本申請(qǐng)中索引信息為關(guān)鍵字時(shí)的索引文件的內(nèi)部結(jié)構(gòu)圖5為本申請(qǐng)中索引信息為時(shí)間點(diǎn)時(shí)的索引文件的內(nèi)部結(jié)構(gòu)圖6為本申請(qǐng)中索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí)的索引文件的內(nèi)部結(jié)構(gòu)圖7為本申請(qǐng)中提供的數(shù)據(jù)檢索方法的一種流程圖8為本申請(qǐng)中數(shù)據(jù)索引創(chuàng)建系統(tǒng)的結(jié)構(gòu)示意圖9為本申請(qǐng)中第一計(jì)算模塊的結(jié)構(gòu)示意圖10為本申請(qǐng)中第一存儲(chǔ)模塊的結(jié)構(gòu)示意圖11為本申請(qǐng)中數(shù)據(jù)檢索系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
本申請(qǐng)?zhí)峁┝艘环N數(shù)據(jù)索引創(chuàng)建方法,首先根據(jù)數(shù)據(jù)表文件記錄的所有索引信息,計(jì)算每個(gè)索引信息的偏移首地址;然后按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序存放在固定大小的內(nèi)塊中,并逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息;確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中,在數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后完成數(shù)據(jù)索引的創(chuàng)建。
一個(gè)實(shí)施例
請(qǐng)參閱圖1,其示出了本申請(qǐng)中提供的數(shù)據(jù)索引創(chuàng)建方法的一種流程圖,該數(shù)據(jù)索引創(chuàng)建方法用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,可以包括以下步驟:
步驟101:獲取與數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件記錄的所有索引信息。
因?yàn)閿?shù)據(jù)文件較大,所以在每次存儲(chǔ)的時(shí)候,會(huì)有一個(gè)與數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件,數(shù)據(jù)表文件中存儲(chǔ)的是數(shù)據(jù)文件的信息。請(qǐng)參閱圖2,其示出了本申請(qǐng)中數(shù)據(jù)表文件的結(jié)構(gòu)不意圖,包括:starttime、endtime、totalfilenum、key、key_count 和 key_seq。其中starttime為數(shù)據(jù)文件中第一條數(shù)據(jù)記錄時(shí)間、endtime為數(shù)據(jù)文件最后一條數(shù)據(jù)記錄時(shí)間,totalfilenum為每一次試驗(yàn)后對(duì)應(yīng)的數(shù)據(jù)文件的個(gè)數(shù);key為關(guān)鍵字,key_count為關(guān)鍵字key的條數(shù),key_seq為關(guān)鍵字key的序列號(hào)。
步驟102:計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址。
在本實(shí)施例中,索引信息可以為關(guān)鍵字,如數(shù)據(jù)表文件中的key字段,如一個(gè)表示各地時(shí)間點(diǎn)的溫度的數(shù)據(jù)文件中,其中關(guān)鍵字可以為地區(qū),不同的關(guān)鍵字表示不同的地區(qū)。當(dāng)然數(shù)據(jù)表文件中的starttime和endtime之間的時(shí)間可以劃分為多個(gè)時(shí)間段,每個(gè)時(shí)間段的起始時(shí)間為時(shí)間點(diǎn),并將時(shí)間點(diǎn)作為索引信息。此外索引信息還可以為關(guān)鍵字和時(shí)間點(diǎn)。
需要說(shuō)明的是,對(duì)于一個(gè)數(shù)據(jù)文件,如果除了時(shí)間點(diǎn)和地區(qū)之外,還有其它多個(gè)不同的標(biāo)注信息,那么可以從中選擇一個(gè)標(biāo)注信息作為關(guān)鍵字。
由于不同數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)條數(shù)可能互不相同,且為了便于在數(shù)據(jù)量較大時(shí)可以方便對(duì)數(shù)據(jù)文件中的數(shù)據(jù)進(jìn)行讀取,需要對(duì)不同數(shù)據(jù)文件分別創(chuàng)建數(shù)據(jù)索引,并將不同數(shù)據(jù)文件的數(shù)據(jù)索引存儲(chǔ)在不同區(qū)域中,所以在創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引時(shí),需要獲取不同數(shù)據(jù)文件的數(shù)據(jù)索引占用的空間以及索引信息的偏移首地址。
在本實(shí)施例中不同數(shù)據(jù)文件的數(shù)據(jù)索引占用的空間可以根據(jù)上述的數(shù)據(jù)表文件中的信息內(nèi)容計(jì)算得出,進(jìn)一步可以結(jié)合各個(gè)索引記錄區(qū)域大小及索引記錄區(qū)域順序,計(jì)算該區(qū)域偏移首地址,具體請(qǐng)參閱圖3,其示出了本申請(qǐng)中計(jì)算每個(gè)索引信息的偏移首地址的具體流程圖,包括以下步驟:
S1:對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序。
其中,索引信息在所有索引信息中的順序,即索引信息是所有索引信息中的第幾個(gè)索引信息。以索引信息為關(guān)鍵字為例,數(shù)據(jù)表文件中key_Seq為關(guān)鍵字key的序列號(hào),該序列號(hào)表明關(guān)鍵字key是第幾個(gè)關(guān)鍵字,所以該序列號(hào)可以表明索引信息為關(guān)鍵字時(shí),索引信息在所有索引信息中的順序。
而在索引信息為時(shí)間點(diǎn)時(shí),可以依據(jù)對(duì)starttime和endtime之間的時(shí)間的劃分確定索引信息在所有索引信息中的順序。
S2:在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址為O。
S3:在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-ι的索引信息的偏移首地址與順序?yàn)?-ι的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
通過(guò)上述方法可以計(jì)算出每個(gè)索引信息的偏移首地址。
在索引信息為關(guān)鍵字時(shí),偏移首地址的計(jì)算過(guò)程如下:首先獲取此關(guān)鍵字在關(guān)鍵字中的順序,關(guān)鍵字的順序?yàn)镮時(shí),關(guān)鍵字對(duì)應(yīng)的偏移首地址為0,關(guān)鍵字的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-Ι的索引信息的偏移首地址與順序?yàn)?-Ι的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。其中,所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
在索引信息為時(shí)間點(diǎn)時(shí),偏移首地址的計(jì)算過(guò)程如下:對(duì)于任意一個(gè)時(shí)間點(diǎn),獲取該時(shí)間點(diǎn)在所有索引信息中的順序;在該時(shí)間點(diǎn)在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的時(shí)間點(diǎn)的偏移首地址為O ;在該時(shí)間點(diǎn)在所有時(shí)間點(diǎn)中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的時(shí)間點(diǎn)的偏移首地址為順序?yàn)閕_l的時(shí)間點(diǎn)的偏移首地址與順序?yàn)閕_l的時(shí)間點(diǎn)對(duì)應(yīng)的索引記錄區(qū)域大小之和。其中,所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
在索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí)偏移首地址的計(jì)算過(guò)程如下:用坐標(biāo)(X,y)表示索引信息為關(guān)鍵字和時(shí)間點(diǎn)的偏移地址,其中i表示該關(guān)鍵字在關(guān)鍵字信息中的順序,其偏移地址為X,j表示該時(shí)間點(diǎn)在時(shí)間點(diǎn)信息中的順序,偏移地址為I。當(dāng)關(guān)鍵字的順序?yàn)?,時(shí)間點(diǎn)的順序?yàn)镮時(shí)的偏移地址可以表示為(0,O);關(guān)鍵字的順序?yàn)閕,時(shí)間點(diǎn)的順序?yàn)閖的偏移地址中X為關(guān)鍵字順序?yàn)?-Ι,時(shí)間點(diǎn)順序?yàn)閖的索引記錄的偏移地址與關(guān)鍵字順序?yàn)閕_l,時(shí)間點(diǎn)順序?yàn)閖的索引記錄的長(zhǎng)度之和。I為關(guān)鍵字順序?yàn)閕,時(shí)間點(diǎn)順序?yàn)閖_l的索引記錄的偏移地址與關(guān)鍵字順序?yàn)閕,時(shí)間點(diǎn)順序?yàn)閖-ι的索引記錄的長(zhǎng)度之和。
步驟103:按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中;逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索弓I信息和數(shù)據(jù)地址信息,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中。
在本實(shí)施例中,數(shù)據(jù)文件在讀取之前首先是按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序存放在固定大小的內(nèi)存中,并逐條從內(nèi)存中讀取數(shù)據(jù)。由于在讀取數(shù)據(jù)時(shí)可以從內(nèi)存中逐條讀取,而內(nèi)存的讀取速度優(yōu)于其他方式,所以從內(nèi)存中讀取數(shù)據(jù)加快本實(shí)施例提供的數(shù)據(jù)索引創(chuàng)建方法的處理速度,節(jié)約時(shí)間。
在從內(nèi)存中逐條讀取數(shù)據(jù)時(shí),首先判斷內(nèi)存中是否存儲(chǔ)有數(shù)據(jù),如果內(nèi)存中存儲(chǔ)有數(shù)據(jù),則直接從內(nèi)存中逐條讀取數(shù)據(jù);如果內(nèi)存中未存儲(chǔ)有數(shù)據(jù),則判斷數(shù)據(jù)文件中是否存儲(chǔ)有未存儲(chǔ)到內(nèi)存中的數(shù)據(jù),如果有,則將數(shù)據(jù)文件中的數(shù)據(jù)存儲(chǔ)到內(nèi)存中,再?gòu)膬?nèi)存中逐條讀取數(shù)據(jù)。
步驟104:確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中。
在內(nèi)存的迭代器中記錄有數(shù)據(jù)表文件中所有索引信息,并且對(duì)于不同索引信息分配不同的緩存,因此在內(nèi)存逐條讀取到數(shù)據(jù)后,首先查找迭代器中為該數(shù)據(jù)對(duì)應(yīng)的索引信息分配的緩存,再將數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到該緩存中。
需要說(shuō)明的是:緩存的存儲(chǔ)空間有限,所以將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中時(shí),當(dāng)緩存中剩余空間為O時(shí),首先將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,然后清除緩存,以存儲(chǔ)其他數(shù)據(jù)的數(shù)據(jù)地址信息。
步驟105:在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
數(shù)據(jù)文件中的所有數(shù)據(jù)的地址信息都被完全存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域時(shí),則完成了此數(shù)據(jù)文件的數(shù)據(jù)索引創(chuàng)建。
如數(shù)據(jù)文件為記錄北京的天氣的數(shù)據(jù)文件,索引信息可以為關(guān)鍵字——北京,相應(yīng)地北京這一索引信息對(duì)應(yīng)的索引記錄區(qū)域?yàn)橛糜诖鎯?chǔ)所有索引信息區(qū)域中的第一個(gè)索引記錄區(qū)域,則記錄北京的天氣的數(shù)據(jù)文件中的所有數(shù)據(jù)的數(shù)據(jù)地址信息可以依次存儲(chǔ)到第一個(gè)索引記錄區(qū)域中。
請(qǐng)參閱圖4,其示出了本實(shí)施例中索引信息為關(guān)鍵字時(shí)的索引文件的內(nèi)部結(jié)構(gòu)圖,在圖中keyl關(guān)鍵字記錄區(qū)域內(nèi)記錄有η條關(guān)鍵字為keyl的數(shù)據(jù)地址信息,從偏移首地址開始依次存儲(chǔ);在索引記錄中存儲(chǔ)的信息為datefilenum和dataoffset,其中datefilenum為數(shù)據(jù)文件編號(hào),dataoffset為數(shù)據(jù)偏移地址。因此可以得出每條索引記錄所占空間的長(zhǎng)度。
請(qǐng)參閱圖5,其示出了本實(shí)施例中索引信息為時(shí)間點(diǎn)時(shí)的索引文件的內(nèi)部結(jié)構(gòu)圖,在圖中T0、T1、T2...Tn為選取的時(shí)間點(diǎn),下面的atefilenum和dataoffset分別為數(shù)據(jù)文件的號(hào)碼和該時(shí)間點(diǎn)數(shù)據(jù)記錄的起始偏移地址。
請(qǐng)參閱圖6,其示出了本實(shí)施例中索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí)的索引文件的內(nèi)部結(jié)構(gòu)示意圖,在圖中第一行為各個(gè)時(shí)間點(diǎn)、然后接著是關(guān)鍵字為keyl的索引記錄區(qū)域,其中offsetl表示關(guān)鍵字為keyl的偏移首地址,時(shí)間點(diǎn)下面第一行的countl、count2...countn為關(guān)鍵字keyl的各個(gè)時(shí)間點(diǎn)到來(lái)的數(shù)據(jù)在該關(guān)鍵字中的條數(shù)。
通過(guò)本實(shí)施例提供的數(shù)據(jù)索引創(chuàng)建方法,可以在內(nèi)存中逐條讀取數(shù)據(jù)文件,并且在迭代器中建立各個(gè)索引信息的緩存,可以將數(shù)據(jù)文件中索引信息相同的多個(gè)數(shù)據(jù)的數(shù)據(jù)地址信息暫時(shí)放入到迭代器中對(duì)應(yīng)的緩存,當(dāng)其緩存中沒有空余空間時(shí),將多個(gè)數(shù)據(jù)的數(shù)據(jù)地址信息同時(shí)放入到相對(duì)應(yīng)的索引記錄區(qū)域中,節(jié)約了時(shí)間,提高了索引創(chuàng)建的效率。在本申請(qǐng)?zhí)峁┑募夹g(shù)方案在為每個(gè)索引記錄區(qū)域分配固定的空間,這樣可以節(jié)約空間,提高了空間利用率。
與上述數(shù)據(jù)索引創(chuàng)建方法相對(duì)應(yīng),本申請(qǐng)還提供了一種數(shù)據(jù)檢索方法,請(qǐng)參閱圖7,其示出了本申請(qǐng)中數(shù)據(jù)檢索方法的流程圖,主要包括以下步驟:
步驟701:接收數(shù)據(jù)檢索請(qǐng)求。
在接收數(shù)據(jù)檢索請(qǐng)求檢索數(shù)據(jù)之前,首先需要?jiǎng)?chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引。其中數(shù)據(jù)文件的數(shù)據(jù)索引創(chuàng)建可以參見圖1至圖6的示意圖以及示意圖對(duì)應(yīng)的實(shí)施例說(shuō)明,對(duì)此不再加以闡述。
步驟702:提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址。
在本實(shí)施例中接收數(shù)據(jù)檢索請(qǐng)求的過(guò)程其實(shí)是接收一個(gè)索引信息的過(guò)程。即在接收到的數(shù)據(jù)索弓I請(qǐng)求中攜帶有索引信息,該索引信息對(duì)應(yīng)用戶需要檢索的數(shù)據(jù)文件。由于不同索引信息具有不同偏移首地址,所以在確定索引信息后,即可以獲知該索引信息的偏移首地址。
當(dāng)索引/[目息為關(guān)鍵字時(shí),可以根據(jù)其關(guān)鍵字和在關(guān)鍵字中的條數(shù)從圖4所不的結(jié)構(gòu)圖中找到對(duì)應(yīng)的偏移首地址。當(dāng)索引信息為時(shí)間點(diǎn)時(shí),可以根據(jù)時(shí)間點(diǎn)從圖5所示的結(jié)構(gòu)圖中找到對(duì)應(yīng)的偏移首地址。當(dāng)索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),可以根據(jù)其提供的關(guān)鍵字和時(shí)間點(diǎn)信息從圖6所示的結(jié)構(gòu)圖中找到對(duì)應(yīng)的偏移首地址。
如索引信息為北京時(shí),而在數(shù)據(jù)索引創(chuàng)建過(guò)程中北京這一索引信息的偏移首地址為50,所以在接收到北京這一索引信息對(duì)應(yīng)的數(shù)據(jù)文件提出的數(shù)據(jù)檢索請(qǐng)求,即可以獲知北京這一索引信息的偏移首地址為50。
步驟703:依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域。
在索引信息的偏移首地址為已知的情況下,則可以確定索引信息對(duì)應(yīng)的索引記錄區(qū)域。當(dāng)然還可以根據(jù)索引信息在該所有索引信息中的順序確定其對(duì)應(yīng)的索引記錄區(qū)域。
步驟704:依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
在索引信息對(duì)應(yīng)的索引記錄區(qū)域中存儲(chǔ)有數(shù)據(jù)地址信息,而該數(shù)據(jù)地址信息為數(shù)據(jù)文件中每條數(shù)據(jù)的存儲(chǔ)地址,所以依據(jù)數(shù)據(jù)地址信息即可以從數(shù)據(jù)文件中讀取數(shù)據(jù)即可完成數(shù)據(jù)的檢索。
與上述方法相對(duì)應(yīng),本申請(qǐng)還提供了一種數(shù)據(jù)索引創(chuàng)建系統(tǒng),用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,請(qǐng)參閱圖8,其示出了本申請(qǐng)中數(shù)據(jù)索引創(chuàng)建系統(tǒng)的結(jié)構(gòu)示意圖,包括:第一獲取模塊801、第一計(jì)算模塊802、第一讀取模塊803、第一存儲(chǔ)模塊804和創(chuàng)建模塊805 ;其中:
第一獲取模塊801,用于獲取與數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件記錄的所有索引信息。
數(shù)據(jù)表文件中存儲(chǔ)的是數(shù)據(jù)文件的信息請(qǐng)參閱圖2,其示出了本申請(qǐng)中數(shù)據(jù)表文件的結(jié)構(gòu)不意圖,包括:starttime、endtime、totalfilenum、key、key_count 和 key_seq。其中starttime為數(shù)據(jù)文件中第一條數(shù)據(jù)記錄時(shí)間、endtime為數(shù)據(jù)文件最后一條數(shù)據(jù)記錄時(shí)間,totalfilenum為每一次試驗(yàn)后對(duì)應(yīng)的數(shù)據(jù)文件的個(gè)數(shù);key為關(guān)鍵字,key_count為關(guān)鍵字key的條數(shù),key_seq為關(guān)鍵字key的序列號(hào)。
第一計(jì)算模塊802,用于計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址。
在本實(shí)施例中不同數(shù)據(jù)文件的數(shù)據(jù)索引占用的空間可以根據(jù)上述的數(shù)據(jù)表文件中的信息內(nèi)容計(jì)算得出,進(jìn)一步可以結(jié)合數(shù)據(jù)索引占用的空間計(jì)算出數(shù)據(jù)索引信息的偏移首地址,請(qǐng)參閱圖9,其示出了本申請(qǐng)中第一計(jì)算模塊802的結(jié)構(gòu)示意圖,所述第一計(jì)算模塊802包括:第二獲取單元901、第一判斷單元902、第一分配單元903和第二分配單元904 ;其中:
第二獲取單元901,用于對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序。
索引信息在所有索引信息中的順序,即索引信息是所有索引信息中的第幾個(gè)索引信息。以索引信息為關(guān)鍵字為例,數(shù)據(jù)表文件中key_Seq為關(guān)鍵字key的序列號(hào),該序列號(hào)表明關(guān)鍵字key是第幾個(gè)關(guān)鍵字,所以該序列號(hào)可以表明索弓I信息為關(guān)鍵字時(shí),索引信息在所有索引信息中的順序。
第一判斷單元902,用于判斷該索引信息在所有索引信息中的順序。
第一分配單元903,用于在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址為O。
第二分配單元904,用于在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-ι的索引信息的偏移首地址與順序?yàn)?-Ι的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
索引信息為關(guān)鍵字時(shí),所述第二分配單元904中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
索引信息為時(shí)間點(diǎn)時(shí),所述第二分配單元904中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),所述第二分配單元904中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中所有時(shí)間點(diǎn)內(nèi)每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
第一讀取模塊803,用于按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中;逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中。
請(qǐng)參閱圖10,其示出了本申請(qǐng)中第一存儲(chǔ)模塊804的結(jié)構(gòu)示意圖,所述第一存儲(chǔ)模塊804包括:第二存儲(chǔ)單元401,用于將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中;
第二判斷單元402,用于判斷緩存中剩余空間是否為O ;
第三存儲(chǔ)單元403,用于在緩存中的剩余空間為O時(shí),將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,并清除緩存。
在內(nèi)存的迭代器中記錄有數(shù)據(jù)表文件中所有索引信息,并且對(duì)于不同索引信息分配不同的緩存,因此在內(nèi)存逐條讀取到數(shù)據(jù)后,首先查找迭代器中為該數(shù)據(jù)對(duì)應(yīng)的索引信息分配的緩存,再將數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到該緩存中。
創(chuàng)建模塊805,用于在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
數(shù)據(jù)文件中的所有數(shù)據(jù)的地址信息都被完全存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域時(shí),則完成了此數(shù)據(jù)文件的數(shù)據(jù)索引創(chuàng)建。
與上述方法實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供了一種數(shù)據(jù)檢索系統(tǒng),請(qǐng)參閱圖11,其示出了本申請(qǐng)中數(shù)據(jù)檢索系統(tǒng)的結(jié)構(gòu)示意圖,所述數(shù)據(jù)檢索系統(tǒng)包括:接收模塊501、提取模塊502、匹配模塊503和讀取模塊504 ;其中:
接收模塊501,用于接收數(shù)據(jù)檢索請(qǐng)求。
在接收數(shù)據(jù)檢索請(qǐng)求檢索數(shù)據(jù)之前,首先需要?jiǎng)?chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引。其中數(shù)據(jù)文件的數(shù)據(jù)索引系統(tǒng)可以參見圖8至圖10的示意圖以及示意圖對(duì)應(yīng)的實(shí)施例說(shuō)明,對(duì)此不再加以闡述。
提取模塊502,用于提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址。
在本實(shí)施例中接收數(shù)據(jù)檢索請(qǐng)求的過(guò)程其實(shí)是接收一個(gè)索引信息的過(guò)程。即在接收到的數(shù)據(jù)索弓I請(qǐng)求中攜帶有索引信息,該索引信息對(duì)應(yīng)用戶需要檢索的數(shù)據(jù)文件。由于不同索引信息具有不同偏移首地址,所以在確定索引信息后,即可以獲知該索引信息的偏移首地址。
匹配模塊503,用于依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域;
在索引信息的偏移首地址為已知的情況下,則可以確定索引信息對(duì)應(yīng)的索引記錄區(qū)域。當(dāng)然還可以根據(jù)索引信息在該所有索引信息中的順序確定其對(duì)應(yīng)的索引記錄區(qū)域。
讀取模塊504,用于依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
在索引信息對(duì)應(yīng)的索引記錄區(qū)域中存儲(chǔ)有數(shù)據(jù)地址信息,而該數(shù)據(jù)地址信息為數(shù)據(jù)文件中每條數(shù)據(jù)的存儲(chǔ)地址,所以依據(jù)數(shù)據(jù)地址信息即可以從數(shù)據(jù)文件中讀取數(shù)據(jù)即可完成數(shù)據(jù)的檢索。
以上所描述的裝置或系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的裝置/單元可以是或者也可以不是物理上分開的,作為裝置/單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)設(shè)備單元上來(lái)實(shí)現(xiàn)??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,在沒有超過(guò)本申請(qǐng)的精神和范圍內(nèi),可以通過(guò)其他的方式實(shí)現(xiàn)。當(dāng)前的實(shí)施例只是一種示范性的例子,不應(yīng)該作為限制,所給出的具體內(nèi)容不應(yīng)該限制本申請(qǐng)的目的。例如,所述單元或子單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或多個(gè)子單元結(jié)合一起。另外,多個(gè)單元可以或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。
以上所述僅是本申請(qǐng)的具體實(shí)施方式
,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本申請(qǐng)?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。
權(quán)利要求
1.一種數(shù)據(jù)索引創(chuàng)建方法,用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,其特征在于,包括: 獲取與所述數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件記錄的所有索引信息; 計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址; 按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中; 逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息;確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中; 在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)索引創(chuàng)建方法,其特征在于,所述依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址包括: 對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序; 在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址為O ; 在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)閕_l的索引信息的偏移首地址與順序?yàn)閕_l的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)索引創(chuàng)建方法,其特征在于,所述索引信息為關(guān)鍵字時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在索引記錄區(qū)域中占用字節(jié)數(shù)之和; 或者所述索引信息為時(shí)間點(diǎn)時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和; 或者所述索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中所有時(shí)間點(diǎn)內(nèi)每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū) 域中占用字節(jié)數(shù)之和。
4.根據(jù)權(quán)利要求1至3任意一項(xiàng)所述的數(shù)據(jù)索引創(chuàng)建方法,其特征在于,所述將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中包括:將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中,當(dāng)緩存中剩余空間為O時(shí),將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,并清除緩存。
5.一種數(shù)據(jù)檢索方法,其特征在于,預(yù)先應(yīng)用權(quán)利要求1至4任意一項(xiàng)所述的數(shù)據(jù)索引創(chuàng)建方法創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,所述數(shù)據(jù)檢索方法包括: 接收數(shù)據(jù)檢索請(qǐng)求; 提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址; 依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域; 依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
6.一種數(shù)據(jù)索引創(chuàng)建系統(tǒng),用于創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,其特征在于,包括:第一獲取模塊、第一計(jì)算模塊、第一讀取模塊、第一存儲(chǔ)模塊和創(chuàng)建模塊;其中: 第一獲取模塊,用于獲取與所述數(shù)據(jù)文件對(duì)應(yīng)的數(shù)據(jù)表文件記錄的所有索引信息; 第一計(jì)算模塊,用于計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址; 第一讀取模塊,用于按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中;逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索弓I信息和數(shù)據(jù)地址信息,其中所述數(shù)據(jù)文件預(yù)先存儲(chǔ)在客戶終端的硬盤中; 第一存儲(chǔ)模塊,用于確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中; 創(chuàng)建模塊,用于在將所述數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)索引創(chuàng)建系統(tǒng),其特征在于,所述第一計(jì)算模塊包括:第二獲取單元、判斷單元、第一分配單元和第二分配單元;其中: 第二獲取單元,用于對(duì)于任意一個(gè)索引信息,獲取該索引信息在所有索引信息中的順序; 判斷單元,用于判斷該索引信息在所有索引信息中的順序; 第一分配單元,用于在該索引信息在所有索引信息中的順序?yàn)镮時(shí),則順序?yàn)镮的索引信息的偏移首地址 為O ; 第二分配單元,用于在該索引信息在所有索引信息中的順序?yàn)閕,且i為正整數(shù),i不等于I時(shí),則順序?yàn)閕的索引信息的偏移首地址為順序?yàn)?-Ι的索引信息的偏移首地址與順序?yàn)閕_l的索引信息對(duì)應(yīng)的索引記錄區(qū)域大小之和。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)索引創(chuàng)建系統(tǒng),其特征在于,所述索引信息為關(guān)鍵字時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和; 或者所述索引信息為時(shí)間點(diǎn)時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中數(shù)據(jù)文件的號(hào)碼占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和; 或者所述索引信息為關(guān)鍵字和時(shí)間點(diǎn)時(shí),所述第二分配單元中所述索引信息對(duì)應(yīng)的索引記錄區(qū)域大小為索引記錄區(qū)域中所有時(shí)間點(diǎn)內(nèi)每條數(shù)據(jù)占用字節(jié)數(shù)和該索引記錄區(qū)域?qū)?yīng)的的偏移首地址在對(duì)應(yīng)的索引記錄區(qū)域中占用字節(jié)數(shù)之和。
9.根據(jù)權(quán)利要求6至8任意一項(xiàng)所述的數(shù)據(jù)索引創(chuàng)建系統(tǒng),其特征在于, 所述第一存儲(chǔ)模塊包括:第二存儲(chǔ)單元,用于將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的緩存中; 判斷模塊,用于判斷緩存中剩余空間是否為O ; 第三存儲(chǔ)單元,用于在緩存中的剩余空間為O時(shí),將緩存中存儲(chǔ)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域中,并清除緩存。
10.一種數(shù)據(jù)檢索系統(tǒng),其特征在于,預(yù)先應(yīng)用權(quán)利要求6至9任意一項(xiàng)所述的數(shù)據(jù)索引創(chuàng)建系統(tǒng)創(chuàng)建數(shù)據(jù)文件的數(shù)據(jù)索引,所述數(shù)據(jù)檢索系統(tǒng)包括: 接收模塊,用于接收數(shù)據(jù)檢索請(qǐng)求; 提取模塊,用于提取所述數(shù)據(jù)檢索請(qǐng)求中攜帶的索引信息,并獲取所述索引信息的偏移首地址; 匹配模塊,用于依據(jù)索引信息的偏移首地址,確定所述索引信息對(duì)應(yīng)的索引記錄區(qū)域; 讀取模塊,用于依據(jù)所述索引記錄區(qū)域中記錄的數(shù)據(jù)地址信息,從數(shù)據(jù)文件中讀取數(shù)據(jù)地址信息對(duì)應(yīng)的數(shù)據(jù)。
全文摘要
本發(fā)明公開一種數(shù)據(jù)索引創(chuàng)建方法、數(shù)據(jù)檢索方法和系統(tǒng)。其中一種數(shù)據(jù)索引創(chuàng)建方法包括獲取數(shù)據(jù)表文件記錄的所有索引信息;計(jì)算每個(gè)索引信息對(duì)應(yīng)的索引記錄區(qū)域大小,并依據(jù)索引記錄區(qū)域大小計(jì)算每個(gè)索引信息的偏移首地址;按照數(shù)據(jù)在數(shù)據(jù)文件中存儲(chǔ)順序,將數(shù)據(jù)文件中預(yù)設(shè)大小的數(shù)據(jù)塊存放在固定大小的內(nèi)存中;逐條從內(nèi)存中讀取數(shù)據(jù),并獲取讀取的每條數(shù)據(jù)的數(shù)據(jù)索引信息和數(shù)據(jù)地址信息;確定每條數(shù)據(jù)的數(shù)據(jù)索引信息對(duì)應(yīng)的索引信息,將每條數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引信息的偏移首地址所對(duì)應(yīng)的索引記錄區(qū)域中;在將數(shù)據(jù)文件中所有數(shù)據(jù)的數(shù)據(jù)地址信息存儲(chǔ)到對(duì)應(yīng)的索引記錄區(qū)域后,完成數(shù)據(jù)索引創(chuàng)建,以提高讀取速度并節(jié)約空間。
文檔編號(hào)G06F17/30GK103150397SQ201310099809
公開日2013年6月12日 申請(qǐng)日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者宋平, 代志遠(yuǎn) 申請(qǐng)人:北京經(jīng)緯恒潤(rùn)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
墨脱县| 正镶白旗| 揭东县| 泽库县| 麦盖提县| 习水县| 镇赉县| 佛学| 马公市| 会东县| 西乌珠穆沁旗| 东平县| 孟连| 庄河市| 建瓯市| 德保县| 芦山县| 南开区| 玉龙| 于都县| 鄂托克旗| 长治县| 玛沁县| 绍兴市| 平定县| 平度市| 临江市| 合山市| 秭归县| 会东县| 昭平县| 营山县| 屏边| 太保市| 宜兰县| 喀什市| 荣昌县| 巨野县| 错那县| 阳信县| 自贡市|