一種數(shù)據(jù)處理的方法及裝置制造方法
【專利摘要】本發(fā)明公開一種數(shù)據(jù)處理的方法及裝置,涉及通信網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,可以解決為未建立索引的數(shù)據(jù)表創(chuàng)建索引的效率低的問題。本發(fā)明實施例通過讀取未建立索引的數(shù)據(jù)表;掃描未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息;根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組;通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。本發(fā)明實施例提供的方案適于對數(shù)據(jù)進行處理時采用。
【專利說明】一種數(shù)據(jù)處理的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)處理的方法及裝置。
【背景技術(shù)】
[0002]隨著信息技術(shù)的發(fā)展,信息數(shù)據(jù)量不斷增加,對大量的數(shù)據(jù)進行快速的存儲和查詢變得十分重要。為了方便快速的查找數(shù)據(jù),在將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫時會建立索引,數(shù)據(jù)在數(shù)據(jù)庫中以表格的形式存儲,表格的列表示屬性,表格的行表示數(shù)據(jù)元組,每個數(shù)據(jù)元組為數(shù)據(jù)表中的一行數(shù)據(jù),索引是根據(jù)數(shù)據(jù)表中一列或若干列按照一定順序建立的列信息與數(shù)據(jù)元組之間的對應(yīng)關(guān)系表。在查詢數(shù)據(jù)時,首先通過列信息從索引中查詢列信息對應(yīng)的數(shù)據(jù)元組,從而確定需要查詢的數(shù)據(jù)元組的位置,然后根據(jù)數(shù)據(jù)元組的位置直接訪問數(shù)據(jù)元組獲得所需數(shù)據(jù),避免了繁雜的查找過程。
[0003]通常建立索引的方法為先把數(shù)據(jù)表中的索引設(shè)置為不可用,在導(dǎo)入數(shù)據(jù)時不啟動索引的建立,導(dǎo)入數(shù)據(jù)之后設(shè)置數(shù)據(jù)表上的索引為可用,然后掃描數(shù)據(jù)表中的所有數(shù)據(jù)元組,為每個數(shù)據(jù)元組生成一個索引元組,對所有的索引元組排序生成索引文件。之后重新掃描數(shù)據(jù)表中的所有數(shù)據(jù)元組,按照上述方法生成下一個索引文件,由于每生成一個索引文件都需要掃描一次數(shù)據(jù)表中的所有數(shù)據(jù)元組,會導(dǎo)致創(chuàng)建索引的效率低。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的實施例提供的數(shù)據(jù)處理的方法及裝置,可以解決創(chuàng)建索引效率低的問題。
[0005]第一方面,本發(fā)明的實施例提供一種數(shù)據(jù)處理的方法,所述方法應(yīng)用于處理未建立索引的數(shù)據(jù)表,所述未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,所述數(shù)據(jù)元組為所述未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),所述未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,所述索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,所述索引元組為確定所述數(shù)據(jù)元組位置的信息,包括:
[0006]讀取所述未建立索引的數(shù)據(jù)表;
[0007]掃描所述未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過所述用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息;
[0008]根據(jù)所述用于創(chuàng)建索引元組的信息,每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組;
[0009]通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0010]在第一種可能的實施例中,結(jié)合第一方面,當還存在已建立索引的數(shù)據(jù)表時,其中,所述已建立索引的數(shù)據(jù)表與所述未建立索引的數(shù)據(jù)表相比,所述已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián),所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括:
[0011]獲取所述已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組;
[0012]通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的所述已建立索引的數(shù)據(jù)表的索引元組和所述未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0013]在第二種可能的實施例中,結(jié)合第一方面或第一方面中的第一種可能的實施例,在所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件之前,所述方法還包括:
[0014]確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小;
[0015]根據(jù)所述內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量;
[0016]所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括:
[0017]31、通過所述索引元組的排序規(guī)則,對所述第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第一索引定義數(shù)量的索引定義對應(yīng)的索引文件;
[0018]32、將已生成的索引文件進行導(dǎo)出;
[0019]33、當導(dǎo)出所述已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量;
[0020]34、根據(jù)所述更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第~索引定義數(shù)量,所述~為大于1的整數(shù),所述~用于表示對索引元組進行排序的次數(shù);
[0021]35、通過所述索引元組的排序規(guī)則,對所述第~索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第~索引定義數(shù)量的索引定義對應(yīng)的索引文件;
[0022]36、按照步驟32-35的順序執(zhí)行,直到完成所有索引定義對應(yīng)的索引文件的生成。
[0023]在第三種可能的實施例中,結(jié)合第一方面或第一方面中的第一種可能的實施例,所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括:
[0024]通過所述索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0025]在第四種可能的實施例中,結(jié)合第一方面中第三種可能的實施例,在所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件之后,所述方法還包括:
[0026]將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
[0027]第二方面,本發(fā)明的實施例提供一種數(shù)據(jù)處理的裝置,所述裝置應(yīng)用于處理未建立索引的數(shù)據(jù)表,所述未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,所述數(shù)據(jù)元組為所述未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),所述未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,所述索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,所述索引元組為確定所述數(shù)據(jù)元組位置的信息,包括:
[0028]讀取單元,用于讀取所述未建立索引的數(shù)據(jù)表,;
[0029]獲取單元,用于掃描所述讀取單元讀取到的所述未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過所述用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息;
[0030]索引元組生成單元,用于根據(jù)所述獲取單元獲取的每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組;
[0031]索引文件生成單元,用于通過所述索引元組的排序規(guī)則,對所述索引元組生成單元生成的每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0032]在第一種可能的實施例中,結(jié)合第二方面,所述索引文件生成單元,包括:
[0033]索引元組獲取模塊,用于當還存在已建立索引的數(shù)據(jù)表時,獲取所述已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組,其中,所述已建立索引的數(shù)據(jù)表與所述未建立索引的數(shù)據(jù)表相比,所述已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián);
[0034]索引文件生成模塊,用于當還存在已建立索引的數(shù)據(jù)表時,通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的所述已建立索引的數(shù)據(jù)表的索引元組和所述未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0035]在第二種可能的實施例中,結(jié)合第二方面或第二方面中的第一種可能的實施例,所述裝置還包括:
[0036]索引定義數(shù)量確定單元,用于確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大??;根據(jù)所述內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量;
[0037]所述索引文件生成單元,還包括:導(dǎo)出模塊,內(nèi)存空閑容量確定模塊,索引定義數(shù)量確定模塊;
[0038]所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,對所述索引定義數(shù)量確定單元確定的所述第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第一索引定義數(shù)量的索引定義對應(yīng)的索引文件;
[0039]所述導(dǎo)出模塊,用于將已生成的索引文件進行導(dǎo)出;
[0040]所述內(nèi)存空閑容量確定模塊,用于當所述導(dǎo)出模塊導(dǎo)出所述已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量;
[0041]所述索引定義數(shù)量確定模塊,用于根據(jù)所述更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第~索引定義數(shù)量,所述~為大于1的整數(shù),所述~用于表示對索引元組進行排序的次數(shù);
[0042]所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,對所述第~索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第~索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0043]在第三種可能的實施例中,結(jié)合第二方面或第二方面中的第一種可能的實施例,所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0044]在第四種可能的實施例中,結(jié)合第二方面中的第三種可能的實施例,所述裝置還包括:
[0045]狀態(tài)標記單元,用于將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
[0046]本發(fā)明實施例提供的數(shù)據(jù)處理的方法及裝置,首先讀取未建立索引的數(shù)據(jù)表,掃描未建立索引的數(shù)據(jù)表中的所有的數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,進而根據(jù)獲取到的內(nèi)容生成每個索引定義對應(yīng)的索引元組,最后通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,與現(xiàn)有技術(shù)中生成每個索引定義對應(yīng)的索引文件都需要掃描一次所有的數(shù)據(jù)元組相比,本發(fā)明掃描一次所有的數(shù)據(jù)元組后就能夠生成每個索引定義對應(yīng)的索引元組,進而可以生成所有索引定義對應(yīng)的索引文件,提高了為未建立索弓I的數(shù)據(jù)表創(chuàng)建索弓I的效率。
【專利附圖】
【附圖說明】
[0047]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048]圖1為本發(fā)明實施例提供的一種數(shù)據(jù)處理的方法的流程圖;
[0049]圖2為本發(fā)明實施例提供的另一種數(shù)據(jù)處理的方法的流程圖;
[0050]圖3為本發(fā)明實施例提供的另一種數(shù)據(jù)處理的方法的流程圖;
[0051]圖4為本發(fā)明實施例提供的一種數(shù)據(jù)處理的裝置的邏輯結(jié)構(gòu)示意圖;
[0052]圖5為本發(fā)明實施例提供的另一種數(shù)據(jù)處理的裝置的邏輯結(jié)構(gòu)示意圖;
[0053]圖6為本發(fā)明實施例提供的另一種數(shù)據(jù)處理的裝置的邏輯結(jié)構(gòu)示意圖;
[0054]圖7為本發(fā)明實施例提供的另一種數(shù)據(jù)處理的裝置的邏輯結(jié)構(gòu)示意圖。
【具體實施方式】
[0055]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0056]本發(fā)明實施例提供一種數(shù)據(jù)處理的方法,該方法應(yīng)用于處理未建立索引的數(shù)據(jù)表,未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,數(shù)據(jù)元組為未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,索引元組為確定數(shù)據(jù)元組位置的信息,如圖1所示,該方法包括:
[0057]101、讀取未建立索引的數(shù)據(jù)表。
[0058]其中,本方法適用于處理設(shè)備,該處理設(shè)備可以用于為數(shù)據(jù)表(未建立索引的數(shù)據(jù)表)建立索引。
[0059]102、掃描未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信肩、0
[0060]其中,用于創(chuàng)建索引元組的信息指定了使用數(shù)據(jù)表(未建立索引的數(shù)據(jù)表)中的哪一列信息進行索引的創(chuàng)建,數(shù)據(jù)元組的位置信息包括該數(shù)據(jù)元組所在的未建立索引的數(shù)據(jù)表的ID (identity,身份標識)以及該數(shù)據(jù)元組在該未建立索引的數(shù)據(jù)表中的偏移量。對于一個數(shù)據(jù)元組而言,索引定義對應(yīng)的列信息為索引定義規(guī)定該數(shù)據(jù)元組的列對應(yīng)存儲的內(nèi)容。
[0061]需要說明的是,本實施例中未建立索引的數(shù)據(jù)表可以為數(shù)據(jù)庫中的未建立索引的數(shù)據(jù)表,在數(shù)據(jù)庫中,將固定大小的一個存儲空間作為一頁,讀取未建立索引的數(shù)據(jù)表的方式可以為:讀取一頁未建立索引的數(shù)據(jù)表,然后掃描這一頁未建立索引的數(shù)據(jù)表中的數(shù)據(jù)兀組,掃描完之后,將這一頁未建立索引的數(shù)據(jù)表從內(nèi)存中移除,繼續(xù)讀取下一頁未建立索弓I的數(shù)據(jù)表,然后掃描下一頁未建立索引的數(shù)據(jù)表,直到讀取完所有未建立索引的數(shù)據(jù)表。
[0062]或者,在內(nèi)存空閑容量允許的條件下,依次讀取每頁未建立索引的數(shù)據(jù)表,在讀取的同時,掃描已經(jīng)讀取到的未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,掃描完一頁未建立索引的數(shù)據(jù)表,即將該頁未建立索引的數(shù)據(jù)表從內(nèi)存中移除,并繼續(xù)讀取剩余的未建立索引的數(shù)據(jù)表,直到讀取完所有未建立索引的數(shù)據(jù)表。
[0063]103、根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組。
[0064]其中,一個索引元組包括一個列信息、該列信息所屬數(shù)據(jù)元組的位置信息以及列信息與列信息所屬數(shù)據(jù)元組的對應(yīng)關(guān)系。在一個數(shù)據(jù)元組中,一個索引定義對應(yīng)一個索引元組。在未建立索引的數(shù)據(jù)表中,一個索引定義對應(yīng)的索引元組的數(shù)量與該未建立索引的數(shù)據(jù)表中數(shù)據(jù)元組的數(shù)量相同,且同一個索引定義對應(yīng)的多個索引元組中的列信息的屬性相同。
[0065]104、通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0066]其中,索引元組的排序規(guī)則規(guī)定了如何對每個索引定義對應(yīng)的索引元組進行排序,例如可以按照不同索引元組中列信息之間的從屬關(guān)系或者并列關(guān)系進行排序,或者,當索引元組的列信息為具體數(shù)值時,可以按照數(shù)值從大到小或者從小到大的順序排序。
[0067]本發(fā)明實施例提供的數(shù)據(jù)處理的方法,首先讀取未建立索引的數(shù)據(jù)表,掃描未建立索引的數(shù)據(jù)表中的所有的數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,進而根據(jù)獲取到的內(nèi)容生成每個索引定義對應(yīng)的索引元組,最后通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,與現(xiàn)有技術(shù)中生成每個索引定義對應(yīng)的索引文件都需要掃描一次所有的數(shù)據(jù)元組相比,本發(fā)明掃描一次所有的數(shù)據(jù)元組后就能夠生成每個索引定義對應(yīng)的索引元組,進而可以生成所有索引定義對應(yīng)的索引文件,提高了為未建立索引的數(shù)據(jù)表創(chuàng)建索引的效率。
[0068]可選的,作為本發(fā)明的另一實施例,當還存在已建立索引的數(shù)據(jù)表時,其中,已建立索引的數(shù)據(jù)表和未建立索引的數(shù)據(jù)表相比,已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián)??梢岳斫獾氖?,已建立索引的數(shù)據(jù)表也包括至少一個數(shù)據(jù)元組,該數(shù)據(jù)元組為已建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),已建立索弓I的數(shù)據(jù)表也對應(yīng)至少一個索引定義。為了方便查詢數(shù)據(jù),需要使一個索引定義只對應(yīng)一個數(shù)據(jù)表,所以要將與同一個索引定義對應(yīng)的已建立索引的數(shù)據(jù)表的索引元組和未建立索引的數(shù)據(jù)表的索引元組進行合并。所以上述步驟104、通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件的具體實現(xiàn)方式為:
[0069]首先,處理設(shè)備需要獲取已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組。然后,處理設(shè)備通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的已建立索引的數(shù)據(jù)表的索引元組和未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0070]值得說明的是,當完成所有索引定義對應(yīng)的索引文件的生成后,將已建立索引的數(shù)據(jù)表之前關(guān)聯(lián)的索引文件進行刪除。
[0071]可選的,作為本發(fā)明的另一實施例,在步驟104之前,該方法還可以包括:
[0072]處理設(shè)備確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小。根據(jù)內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量。
[0073]舉例說明,當內(nèi)存空閑容量為每個索引定義對應(yīng)的索引元組的大小的三倍時,說明內(nèi)存空閑容量可以滿足對三個索引定義對應(yīng)的索引元組同時進行排序的條件,即對索引元組排序的第一索引定義數(shù)量為3。
[0074]進一步的,步驟104、通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件的具體實現(xiàn)方式為:
[0075]S1、處理設(shè)備通過索引元組的排序規(guī)則,對第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第一索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0076]S2、處理設(shè)備將已生成的索引文件進行導(dǎo)出。
[0077]S3、當導(dǎo)出已生成的索引文件之后,處理設(shè)備重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量。
[0078]需要說明的是,導(dǎo)出已生成的索引文件之后會釋放一部分內(nèi)存,更新后的內(nèi)存空閑容量變大。
[0079]S4、處理設(shè)備根據(jù)更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索弓I元組排序的第N索引定義數(shù)量。
[0080]其中,N為大于I的整數(shù),用于表示對索引元組進行排序的次數(shù),第N索引定義數(shù)量為對索引元組第N次排序時的索引定義數(shù)量。
[0081]當內(nèi)存空閑容量變大時,對索引元組排序的第N索引定義數(shù)量也會變大。
[0082]S5、處理設(shè)備通過索引元組的排序規(guī)則,對第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第N索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0083]之后按照步驟S2-S5的順序執(zhí)行,直到完成所有索引定義對應(yīng)的索引文件的生成。
[0084]舉例說明,假設(shè)第一次確定的內(nèi)存空閑容量只允許對一個索引定義對應(yīng)的索引元組進行排序,生成該索引定義對應(yīng)的索引文件后,將該索引定義對應(yīng)的索引文件導(dǎo)出,此時內(nèi)存空閑容量會變大,可能會允許對兩個索引定義對應(yīng)的索引元組同時進行排序,同時生成這兩個索引定義對應(yīng)的索引文件,將這兩個索引文件對應(yīng)的索引定義導(dǎo)出后,內(nèi)存空閑容量將變得更大,允許對更多數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,利用這種生成索引文件的方法可以加快為未建立索引的數(shù)據(jù)表創(chuàng)建索引速度。
[0085]可選的,在本發(fā)明的另一實施例中,步驟104、通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件的方法,還可以包括:通過索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0086]需要說明的時,本實施例為生成索引文件的另一種方法,在本發(fā)明中,可以根據(jù)內(nèi)存空閑容量的大小,并行生成每個索引定義對應(yīng)的索引文件,也可以依次生成每個索引定義對應(yīng)的索引文件。
[0087]結(jié)合圖1以及上述描述,本發(fā)明實施例還可以提供另一種數(shù)據(jù)處理方法,如圖2所示,該方法包括:
[0088]201、讀取未建立索引的數(shù)據(jù)表。
[0089]202、掃描未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信肩、O
[0090]203、根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組。
[0091]進一步的,當存在已建立索引的數(shù)據(jù)表時,執(zhí)行下述步驟204,當不存在已建立索引的數(shù)據(jù)表時,不執(zhí)行步驟204,直接執(zhí)行下述步驟205,圖2中以存在已建立索引的數(shù)據(jù)表為例進行說明。
[0092]204、獲取已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組。
[0093]205、確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小。
[0094]206、根據(jù)內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量。
[0095]207、通過索引元組的排序規(guī)則,對第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第一索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0096]208、將已生成的索引文件進行導(dǎo)出。
[0097]209、當導(dǎo)出已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量。
[0098]210、根據(jù)更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第N索引定義數(shù)量。
[0099]其中N為大于I的整數(shù),用于表示對索引元組進行排序的次數(shù)。
[0100]211、通過索引元組的排序規(guī)則,對第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第N索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0101]值得說明的是,當存在已建立索引的數(shù)據(jù)表時,上述步驟205至211中的每個索引定義對應(yīng)的索引元組為每個索引定義對應(yīng)的已建立索引數(shù)據(jù)表的索引元組和未建立索引數(shù)據(jù)表的索引元組。
[0102]當只存在未建立索引的數(shù)據(jù)表時,上述步驟205至211中的每個索引定義對應(yīng)的索引元組為未建立索引的數(shù)據(jù)表對應(yīng)每個索引定義的索引元組。
[0103]212、判斷是否已經(jīng)完成所有索引定義對應(yīng)的索引文件的生成,若是,則執(zhí)行下述步驟213,若否,則執(zhí)行上述步驟206。
[0104]213、將已生成的索引文件對應(yīng)的未建立索弓I的數(shù)據(jù)表標記為已建立索弓I狀態(tài)。
[0105]結(jié)合圖1、圖2以及上述實施例,本發(fā)明實施例還可以提供另一種數(shù)據(jù)處理的方法,如圖3所示,該方法包括:
[0106]301、讀取未建立索引的數(shù)據(jù)表。
[0107]302、掃描未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信肩、O
[0108]303、根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組。
[0109]304、通過索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0110]305、將已生成的索引文件進行導(dǎo)出。
[0111]306、將已生成的索引文件對應(yīng)的未建立索引的數(shù)據(jù)表標記為已建立索引狀態(tài)。
[0112]值得說明的是,圖3中以只存在未建立索引的數(shù)據(jù)表為例進行說明,當存在已建立索引的數(shù)據(jù)表時,在步驟303與304之間還需執(zhí)行上述步驟204。
[0113]本發(fā)明實施例提供的數(shù)據(jù)處理的方法,首先讀取未建立索引的數(shù)據(jù)表,掃描未建立索引的數(shù)據(jù)表中的所有的數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,進而根據(jù)獲取到的內(nèi)容生成每個索引定義對應(yīng)的索引元組,最后通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,與現(xiàn)有技術(shù)中生成每個索引定義對應(yīng)的索引文件都需要掃描一次所有的數(shù)據(jù)元組相比,本發(fā)明掃描一次所有的數(shù)據(jù)元組后就能夠生成每個索引定義對應(yīng)的索引元組,進而可以生成所有索引定義對應(yīng)的索引文件,提高了為未建立索引的數(shù)據(jù)表創(chuàng)建索引的效率。
[0114]本發(fā)明實施例提供一種數(shù)據(jù)處理的裝置,該裝置應(yīng)用于處理未建立索引的數(shù)據(jù)表,未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,數(shù)據(jù)元組為未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,索引元組為確定數(shù)據(jù)元組位置的信息,如圖4所示,該裝置包括:讀取單元41,獲取單元42,索引元組生成單元43,索引文件生成單元44。
[0115]讀取單元41,用于讀取未建立索引的數(shù)據(jù)表。
[0116]獲取單元42,用于掃描讀取單元41讀取到的未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息。
[0117]索引元組生成單元43,用于根據(jù)獲取單元42獲取的每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組。
[0118]索引文件生成單元44,用于通過索引元組的排序規(guī)則,對索引元組生成單元43生成的每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0119]進一步的,如圖5所示,當還存在已建立索引的數(shù)據(jù)表時,其中,已建立索引的數(shù)據(jù)表與未建立索引的數(shù)據(jù)表相比,已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián),索引文件生成單元44包括:索引元組獲取模塊441,索引文件生成模塊442。
[0120]索引元組獲取模塊441,用于當還存在已建立索引的數(shù)據(jù)表時,獲取已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組。
[0121]索引文件生成模塊442,用于當還存在已建立索引的數(shù)據(jù)表時,通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的已建立索引的數(shù)據(jù)表的索引元組和未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0122]進一步的,如圖6所示,該裝置還包括:索引定義數(shù)量確定單元45。
[0123]索引文件生成單元44,還包括:導(dǎo)出模塊443,內(nèi)存空閑容量確定模塊444,索引定義數(shù)量確定模塊445。
[0124]索引定義數(shù)量確定單元45,用于確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大?。桓鶕?jù)內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量。
[0125]索引文件生成模塊442,還用于通過索引元組的排序規(guī)則,對索引定義數(shù)量確定單元45確定的第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第一索引定義數(shù)量的索引定義對應(yīng)的索引文件,并將生成的索引文件發(fā)送給導(dǎo)出模塊443。
[0126]導(dǎo)出模塊443,用于將已生成的索引文件進行導(dǎo)出。
[0127]內(nèi)存空閑容量確定模塊444,用于當導(dǎo)出模塊443導(dǎo)出已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量,并將更新后的內(nèi)存空閑容量發(fā)送給索引定義數(shù)量確定模塊445。
[0128]索引定義數(shù)量確定模塊445,用于根據(jù)更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第N索引定義數(shù)量,N為大于I的整數(shù),用于表示對索弓I元組進行排序的次數(shù)。
[0129]索引文件生成模塊442,還用于通過索引元組的排序規(guī)則,對第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第N索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0130]進一步的,作為本發(fā)明的另一實施例,索引文件生成模塊442,還用于通過索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0131]進一步的,作為本發(fā)明的另一實施例,如圖6所示,該裝置還包括:狀態(tài)標記單元46,用于將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
[0132]本發(fā)明實施例提供的數(shù)據(jù)處理裝置,首先讀取單元讀取未建立索引的數(shù)據(jù)表,獲取單元掃描未建立索引的數(shù)據(jù)表中的所有的數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,進而索引元組生成單元根據(jù)獲取到的內(nèi)容生成每個索引定義對應(yīng)的索引元組,最后索引文件生成單元通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,與現(xiàn)有技術(shù)中生成每個索引定義對應(yīng)的索引文件都需要掃描一次所有的數(shù)據(jù)元組相比,本發(fā)明掃描一次所有的數(shù)據(jù)元組后就能夠生成每個索引定義對應(yīng)的索引元組,進而可以生成所有索引定義對應(yīng)的索引文件,提高了為未建立索引的數(shù)據(jù)表創(chuàng)建索引的效率。
[0133]如圖7所示,圖7為該數(shù)據(jù)處理的裝置的硬件結(jié)構(gòu)示意圖。其中,該裝置可包括存儲器71、發(fā)送器72、處理器73和總線74,其中,存儲器71、發(fā)送器72、處理器73通過總線74通信連接。
[0134]存儲器71可以是只讀存儲器(Read Only Memory, ROM),靜態(tài)存儲設(shè)備,動態(tài)存儲設(shè)備或者隨機存取存儲器(Random Access Memory,RAM)。存儲器71可以存儲操作系統(tǒng)和其他應(yīng)用程序。在通過軟件或者固件來實現(xiàn)本發(fā)明實施例提供的技術(shù)方案時,用于實現(xiàn)本發(fā)明實施例提供的技術(shù)方案的程序代碼保存在存儲器71中,并由處理器73來執(zhí)行。
[0135]發(fā)送器72用于裝置與其他設(shè)備或通信網(wǎng)絡(luò)(例如但不限于以太網(wǎng),無線接入網(wǎng)(Rad1 Access Network, RAN),無線局域網(wǎng)(Wireless Local Area Network, WLAN)等)之間的通信。
[0136]處理器73可以采用通用的中央處理器(Central Processing Unit,CPU),微處理器,應(yīng)用專用集成電路(Applicat1n Specific Integrated Circuit, ASIC),或者一個或多個集成電路,用于執(zhí)行相關(guān)程序,以實現(xiàn)本發(fā)明實施例所提供的技術(shù)方案。
[0137]總線74可包括一通路,在裝置各個部件(例如存儲器71、發(fā)送器72和處理器73)之間傳送信息。
[0138]應(yīng)注意,盡管圖7所示的硬件僅僅示出了存儲器71、發(fā)送器72和處理器73以及總線74,但是在具體實現(xiàn)過程中,本領(lǐng)域的技術(shù)人員應(yīng)當明白,該終端還包含實現(xiàn)正常運行所必須的其他器件。同時,根據(jù)具體需要,本領(lǐng)域的技術(shù)人員應(yīng)當明白,還可包含實現(xiàn)其他功能的硬件器件。
[0139]具體的,圖7所示的裝置用于實現(xiàn)圖4-圖6實施例所示的裝置時,該裝置中的發(fā)送器72,用于將索引文件提供給處理器73。
[0140]處理器73,與存儲器71和發(fā)送器72耦合,用于控制程序指令的執(zhí)行,具體用于對數(shù)據(jù)表中的數(shù)據(jù)進行處理。
[0141 ] 存儲器71,用于存儲未建立索引的數(shù)據(jù)表和已建立索引的數(shù)據(jù)表。
[0142]其中,未建立索引的數(shù)據(jù)表至少包括一個數(shù)據(jù)元組,數(shù)據(jù)元組為未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,索引元組為確定數(shù)據(jù)元組位置的信息,已建立索弓I的數(shù)據(jù)表和未建立索引的數(shù)據(jù)表相比,已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián)。
[0143]處理器73,用于讀取未建立索引的數(shù)據(jù)表;掃描讀取到的未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息;進而根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組。
[0144]進一步的,當存儲器中存在已建立索引的數(shù)據(jù)表時,處理器73,還用于獲取已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組,通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的已建立索引的數(shù)據(jù)表的索引元組和未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0145]在本裝置的一種可選構(gòu)成方式中,處理器73,還用于確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大?。桓鶕?jù)內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量;通過索引元組的排序規(guī)則,對第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第一索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0146]發(fā)送器72,用于將已生成的索引文件進行導(dǎo)出。
[0147]存儲器71,還用于存儲發(fā)送器72導(dǎo)出的每個索引定義對應(yīng)的索引文件。
[0148]當發(fā)送器72導(dǎo)出已生成的索引文件之后,處理器73,還用于重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量;根據(jù)更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第N索引定義數(shù)量,N為大于I的整數(shù),N用于表示對索引元組進行排序的次數(shù);通過索引元組的排序規(guī)則,對第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成第N索引定義數(shù)量的索引定義對應(yīng)的索引文件。
[0149]在本裝置的另一種可選構(gòu)成方式中,處理器73,還用于通過索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
[0150]進一步的,處理器73,還用于將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
[0151]本發(fā)明實施例提供的數(shù)據(jù)處理的裝置,處理器讀取存儲器中未建立索引的數(shù)據(jù)表,掃描未建立索引的數(shù)據(jù)表中的所有的數(shù)據(jù)元組,通過用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,進而根據(jù)獲取到的內(nèi)容生成每個索引定義對應(yīng)的索引元組,最后通過索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,與現(xiàn)有技術(shù)中生成每個索引定義對應(yīng)的索引文件都需要掃描一次所有的數(shù)據(jù)元組相比,本發(fā)明掃描一次所有的數(shù)據(jù)元組后就能夠生成每個索引定義對應(yīng)的索引元組,進而可以生成所有索引定義對應(yīng)的索引文件,提高了為未建立索弓I的數(shù)據(jù)表創(chuàng)建索弓I的效率。
[0152]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
[0153]在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0154]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0155]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0156]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM, Read-Only Memory)、隨機存取存儲器(RAM, Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0157]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準。
【權(quán)利要求】
1.一種數(shù)據(jù)處理的方法,其特征在于,所述方法應(yīng)用于處理未建立索引的數(shù)據(jù)表,所述未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,所述數(shù)據(jù)元組為所述未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),所述未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,所述索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,所述索引元組為確定所述數(shù)據(jù)元組位置的信息,所述方法包括: 讀取所述未建立索引的數(shù)據(jù)表; 掃描所述未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過所述用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息; 根據(jù)每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組; 通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理的方法,其特征在于,當還存在已建立索引的數(shù)據(jù)表時,其中,所述已建立索引的數(shù)據(jù)表與所述未建立索引的數(shù)據(jù)表相比,所述已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián),所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括: 獲取所述已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組; 通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的所述已建立索引的數(shù)據(jù)表的索引元組和所述未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)處理的方法,其特征在于,在所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件之前,所述方法還包括: 確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大??; 根據(jù)所述內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量; 所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括: 51、通過所述索引元組的排序規(guī)則,對所述第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第一索引定義數(shù)量的索引定義對應(yīng)的索引文件; 52、將已生成的索引文件進行導(dǎo)出; 53、當導(dǎo)出所述已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量; 54、根據(jù)所述更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第N索引定義數(shù)量,所述N為大于I的整數(shù),所述N用于表示對索引元組進行排序的次數(shù); 55、通過所述索引元組的排序規(guī)則,對所述第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第N索引定義數(shù)量的索引定義對應(yīng)的索引文件; S6、按照步驟S2-S5的順序執(zhí)行,直到完成所有索引定義對應(yīng)的索引文件的生成。
4.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)處理的方法,其特征在于,所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件,包括: 通過所述索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)處理的方法,其特征在于,在所述通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件之后,所述方法還包括: 將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
6.一種數(shù)據(jù)處理的裝置,其特征在于,所述裝置應(yīng)用于處理未建立索引的數(shù)據(jù)表,所述未建立索引的數(shù)據(jù)表包括至少一個數(shù)據(jù)元組,所述數(shù)據(jù)元組為所述未建立索引的數(shù)據(jù)表中的一行數(shù)據(jù),所述未建立索引的數(shù)據(jù)表對應(yīng)至少一個索引定義,所述索引定義包括用于創(chuàng)建索引元組的信息和索引元組的排序規(guī)則,所述索引元組為確定所述數(shù)據(jù)元組位置的信息,包括: 讀取單元,用于讀取所述未建立索引的數(shù)據(jù)表; 獲取單元,用于掃描所述讀取單元讀取到的所述未建立索引的數(shù)據(jù)表中的所有數(shù)據(jù)元組,通過所述用于創(chuàng)建索引元組的信息,獲取每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息; 索引元組生成單元,用于根據(jù)所述獲取單元獲取的每個索引定義對應(yīng)的列信息和每個索引定義對應(yīng)的列信息所屬數(shù)據(jù)元組的位置信息,生成每個索引定義對應(yīng)的索引元組; 索引文件生成單元,用于通過所述索引元組的排序規(guī)則,對所述索引元組生成單元生成的每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)處理的裝置,其特征在于,所述索引文件生成單元,包括: 索引元組獲取模塊,用于當還存在已建立索引的數(shù)據(jù)表時,獲取所述已建立索引的數(shù)據(jù)表中每個索引定義對應(yīng)的索引元組,其中,所述已建立索引的數(shù)據(jù)表與所述未建立索引的數(shù)據(jù)表相比,所述已建立索引的數(shù)據(jù)表還與索引文件關(guān)聯(lián); 索引文件生成模塊,用于當還存在已建立索引的數(shù)據(jù)表時,通過所述索引元組的排序規(guī)則,對每個索引定義對應(yīng)的所述已建立索引的數(shù)據(jù)表的索引元組和所述未建立索引的數(shù)據(jù)表的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
8.根據(jù)權(quán)利要求6或7所述的數(shù)據(jù)處理的裝置,其特征在于,所述裝置還包括: 索引定義數(shù)量確定單元,用于確定內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大??;根據(jù)所述內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第一索引定義數(shù)量; 所述索引文件生成單元,還包括:導(dǎo)出模塊,內(nèi)存空閑容量確定模塊,索引定義數(shù)量確定模塊; 所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,對所述索引定義數(shù)量確定單元確定的所述第一索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第一索引定義數(shù)量的索引定義對應(yīng)的索引文件; 所述導(dǎo)出模塊,用于將已生成的索引文件進行導(dǎo)出; 所述內(nèi)存空閑容量確定模塊,用于當所述導(dǎo)出模塊導(dǎo)出所述已生成的索引文件之后,重新確定內(nèi)存空閑容量,得到更新后的內(nèi)存空閑容量; 所述索引定義數(shù)量確定模塊,用于根據(jù)所述更新后的內(nèi)存空閑容量和每個索引定義對應(yīng)的索引元組的大小,確定對索引元組排序的第N索引定義數(shù)量,所述N為大于I的整數(shù),所述N用于表示對索引元組進行排序的次數(shù); 所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,對所述第N索引定義數(shù)量的索引定義對應(yīng)的索引元組同時進行排序,生成所述第N索引定義數(shù)量的索引定義對應(yīng)的索引文件。
9.根據(jù)權(quán)利要求6或7所述的數(shù)據(jù)處理的裝置,其特征在于, 所述索引文件生成模塊,還用于通過所述索引元組的排序規(guī)則,依次對每個索引定義對應(yīng)的索引元組進行排序,生成每個索引定義對應(yīng)的索引文件。
10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)處理的裝置,其特征在于,所述裝置還包括: 狀態(tài)標記單元,用于將已生成的索引文件對應(yīng)的數(shù)據(jù)表標記為已建立索引狀態(tài)。
【文檔編號】G06F17/30GK104462291SQ201410706742
【公開日】2015年3月25日 申請日期:2014年11月27日 優(yōu)先權(quán)日:2014年11月27日
【發(fā)明者】杜培亮 申請人:杭州華為數(shù)字技術(shù)有限公司