本申請涉及計算機領(lǐng)域,尤其涉及一種創(chuàng)建索引表的方法及設(shè)備。
背景技術(shù):
::隨著數(shù)據(jù)庫技術(shù)的發(fā)展和應(yīng)用,數(shù)據(jù)庫存儲的數(shù)據(jù)量與日俱增,同時快速、靈活地進(jìn)行大數(shù)據(jù)量的復(fù)雜查詢處理也成為新的需求。olap(on-lineanalyticalprocessing,聯(lián)機分析處理),專門用于支持復(fù)雜的分析操作,側(cè)重對決策人員和高層管理人員的決策支持。通常狀況下,olap用戶只需要查詢少數(shù)的幾個數(shù)據(jù)列,利用行式存儲會加載很多無用的數(shù)據(jù)列,導(dǎo)致查詢性能下降。分布式列式存儲的基本查詢方法首先從zookeeper中讀取元信息,進(jìn)而去集群中各個機器讀取所有的數(shù)據(jù)文件,進(jìn)而從每個數(shù)據(jù)文件中讀取滿足條件的記錄,此方式直接導(dǎo)致數(shù)據(jù)訪問量過大,影響了olap的查詢性能。申請內(nèi)容本申請的一個目的是提供一種創(chuàng)建索引表的方法及設(shè)備,優(yōu)化底層存儲結(jié)構(gòu),從而為數(shù)據(jù)查詢提供方便。根據(jù)本申請的一個方面,提供了一種創(chuàng)建索引表的方法,所述方法包括:創(chuàng)建獲取到的數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息的結(jié)構(gòu),其中,所述數(shù)據(jù)表的元信息包括所述數(shù)據(jù)表中所有數(shù)據(jù)文件的位置信息,所述數(shù)據(jù)文件以列的形式存儲;創(chuàng)建待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),根據(jù)用戶的請求確定所述數(shù)據(jù)表中所述待創(chuàng)建索引表的索引列,所述索引列為所述數(shù)據(jù)表中的部分列,并根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),其中,所述待創(chuàng)建索引表對應(yīng)的元信息包括所述待創(chuàng)建索引表中索引文件的位置信息;將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至從節(jié)點,并根據(jù)所述數(shù)據(jù)表的元信息的結(jié)構(gòu)及所述數(shù)據(jù)文件的已分配的位置信息,更新所述數(shù)據(jù)文件對應(yīng)數(shù)據(jù)表的元信息;將所述待創(chuàng)建索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中,并更新所述待創(chuàng)建索引表對應(yīng)的元信息。進(jìn)一步地,所述待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu)中索引文件的結(jié)構(gòu)包括bplustree結(jié)構(gòu),其中,所述bplustree結(jié)構(gòu)的葉子節(jié)點包括鍵值和位置信息值。進(jìn)一步地,所述創(chuàng)建所述待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),包括:根據(jù)所述待創(chuàng)建索引表的索引列的值確定所述葉子節(jié)點的鍵值;根據(jù)所述索引列所屬數(shù)據(jù)文件的文件名及所述索引列所在的行在所述數(shù)據(jù)文件中的偏移量確定所述葉子節(jié)點的位置信息值。進(jìn)一步地,所述待創(chuàng)建索引表包括哈希類全局索引表和/或范圍類全局索引表。進(jìn)一步地,當(dāng)所述待創(chuàng)建索引表為哈希類全局索引表時,將所述待創(chuàng)建索引表中索引列對應(yīng)的索引文件的信息分配至所述待創(chuàng)建索引表對應(yīng)的從節(jié)點的索引文件中,包括:根據(jù)所述哈希類全局索引表的索引列的值確定的哈希值,將所述哈希類全局索引表的索引文件對應(yīng)的鍵值和位置信息值分配至對應(yīng)的從節(jié)點的索引文件中。進(jìn)一步地,根據(jù)所述哈希類全局索引表的索引列的值確定的哈希值,將所述哈希類全局索引表的索引文件對應(yīng)的鍵值和位置信息值分配至所述哈希類全局索引表對應(yīng)的從節(jié)點的索引文件中,包括:根據(jù)所述哈希類全局索引表的索引列的值及所述從節(jié)點的個數(shù)確定所述索引列的哈希值;將所述索引列的哈希值為i對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至第i+1個從節(jié)點的索引文件中,其中,i為自然數(shù)。進(jìn)一步地,當(dāng)所述待創(chuàng)建索引表為范圍類全局索引表時,d將所述待創(chuàng)建索引表中索引列對應(yīng)的索引文件的信息分配至所述待創(chuàng)建索引表對應(yīng)的從節(jié)點的索引文件中,包括:根據(jù)對所述索引列的值進(jìn)行采樣的采樣結(jié)果確定分配范圍區(qū)間,并記錄每個從節(jié)點以及其對應(yīng)的索引列的分配范圍區(qū)間;根據(jù)所述分配范圍區(qū)間將所述范圍類全局索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中。進(jìn)一步地,根據(jù)所述分配范圍區(qū)間將所述范圍類全局索引表的索引文件的信息分配至所述范圍類全局索引表對應(yīng)的從節(jié)點的索引文件中,包括:將所述范圍類全局索引表的索引列的值與所述記錄的分配范圍區(qū)間進(jìn)行比較,確定所述索引列的值所在的分配范圍區(qū)間;根據(jù)所述索引列的值所在的分配范圍區(qū)間,將所述索引列的值對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至所述分配范圍區(qū)間對應(yīng)的從節(jié)點的索引文件。進(jìn)一步地,將所述待創(chuàng)建索引表中索引列對應(yīng)的索引文件的信息分配至所述待創(chuàng)建索引表對應(yīng)的從節(jié)點的索引文件中時,還包括:若所述索引文件中已存在所述鍵值;則將新的位置信息值與舊的位置信息值融合至所述鍵值對應(yīng)的葉子節(jié)點。進(jìn)一步地,將所述待創(chuàng)建索引表中索引列對應(yīng)的索引文件的信息分配至所述待創(chuàng)建索引表對應(yīng)的從節(jié)點的索引文件中時,還包括:若所述索引文件中不存在所述鍵值,則在所述bplustree結(jié)構(gòu)中插入新的葉子節(jié)點,將所述鍵值及位置信息值存儲至所述新的葉子節(jié)點。進(jìn)一步地,將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至所述數(shù)據(jù)表對應(yīng)的從節(jié)點之前,還包括:當(dāng)所述數(shù)據(jù)源的行數(shù)達(dá)到預(yù)設(shè)的數(shù)據(jù)文件的大小閾值時,則將當(dāng)前數(shù)據(jù)行新生成為一個數(shù)據(jù)文件,將新生成的數(shù)據(jù)文分配至所述數(shù)據(jù)表對應(yīng)的從節(jié)點,并更新所述數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)表的元信息。進(jìn)一步地,將所述待創(chuàng)建索引表中索引列對應(yīng)的索引文件的信息分配至所述待創(chuàng)建索引表對應(yīng)的從節(jié)點的索引文件中之前,還包括:當(dāng)所述待創(chuàng)建索引表的索引文件的大小達(dá)到預(yù)設(shè)的索引文件大小閾值時,生成新的索引文件,并將所述新的索引文件的位置信息更新至所述待創(chuàng)建索引表對應(yīng)的元信息中。根據(jù)本申請另一個方面,還提供了一種創(chuàng)建索引表的設(shè)備,所述設(shè)備包括:第一創(chuàng)建裝置,用于創(chuàng)建獲取到的數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息的結(jié)構(gòu),其中,所述數(shù)據(jù)表的元信息包括所述數(shù)據(jù)表中所有數(shù)據(jù)文件的位置信息,所述數(shù)據(jù)文件以列的形式存儲;第二創(chuàng)建裝置,用于創(chuàng)建待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),根據(jù)用戶的請求確定所述數(shù)據(jù)表中所述待創(chuàng)建索引表的索引列,所述索引列為所述數(shù)據(jù)表中的部分列,并根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),其中,所述待創(chuàng)建索引表對應(yīng)的元信息包括所述待創(chuàng)建索引表中索引文件的位置信息;數(shù)據(jù)文件分配裝置,用于將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至從節(jié)點,并根據(jù)所述數(shù)據(jù)表的元信息的結(jié)構(gòu)及所述數(shù)據(jù)文件的已分配的位置信息,更新所述數(shù)據(jù)文件對應(yīng)數(shù)據(jù)表的元信息;分配裝置,用于將所述待創(chuàng)建索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中,并更新所述待創(chuàng)建索引表對應(yīng)的元信息。進(jìn)一步地,所述待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu)中索引文件的結(jié)構(gòu)包括bplustree結(jié)構(gòu),其中,所述bplustree結(jié)構(gòu)的葉子節(jié)點包括鍵值和位置信息值。進(jìn)一步地,所述第二創(chuàng)建裝置用于:根據(jù)所述待創(chuàng)建索引表的索引列的值確定所述葉子節(jié)點的鍵值;根據(jù)所述索引列所屬數(shù)據(jù)文件的文件名及所述索引列所在的行在所述數(shù)據(jù)文件中的偏移量確定所述葉子節(jié)點的位置信息值。進(jìn)一步地,所述待創(chuàng)建索引表包括哈希類全局索引表和/或范圍類全局索引表。進(jìn)一步地,當(dāng)所述待創(chuàng)建索引表為哈希類全局索引表時,所述分配裝置用于:根據(jù)所述哈希類全局索引表的索引列的值確定的哈希值,將所述哈希類全局索引表的索引文件對應(yīng)的鍵值和位置信息值分配至對應(yīng)的從節(jié)點的索引文件中。進(jìn)一步地,所述分配裝置用于:根據(jù)所述哈希類全局索引表的索引列的值及所述從節(jié)點的個數(shù)確定所述索引列的哈希值;將所述索引列的哈希值為i對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至第i+1個從節(jié)點的索引文件中,其中,i為自然數(shù)。進(jìn)一步地,當(dāng)所述待創(chuàng)建索引表為范圍類全局索引表時,所述分配裝置用于:根據(jù)對所述索引列的值進(jìn)行采樣的采樣結(jié)果確定分配范圍區(qū)間,并記錄每個從節(jié)點以及其對應(yīng)的索引列的分配范圍區(qū)間;根據(jù)所述分配范圍區(qū)間將所述范圍類全局索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中。進(jìn)一步地,所述分配裝置用于:將所述范圍類全局索引表的索引列的值與所述記錄的分配范圍區(qū)間進(jìn)行比較,確定所述索引列的值所在的分配范圍區(qū)間;根據(jù)所述索引列的值所在的分配范圍區(qū)間,將所述索引列的值對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至所述分配范圍區(qū)間對應(yīng)的從節(jié)點的索引文件。進(jìn)一步地,所述分配裝置還用于:若所述索引文件中已存在所述鍵值;則將新的位置信息值與舊的位置信息值融合至所述鍵值對應(yīng)的葉子節(jié)點。進(jìn)一步地,所述分配裝置還用于:若所述索引文件中不存在所述鍵值,則在所述bplustree結(jié)構(gòu)中插入新的葉子節(jié)點,將所述鍵值及位置信息值存儲至所述新的葉子節(jié)點。進(jìn)一步地,所述設(shè)備還包括:生成數(shù)據(jù)文件裝置,用于當(dāng)所述數(shù)據(jù)源的行數(shù)達(dá)到預(yù)設(shè)的數(shù)據(jù)文件的大小閾值時,則將當(dāng)前數(shù)據(jù)行新生成為一個數(shù)據(jù)文件,將新生成的數(shù)據(jù)文分配至所述數(shù)據(jù)表對應(yīng)的從節(jié)點,并更新所述數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)表的元信息。進(jìn)一步地,所述設(shè)備還包括:生成索引文件裝置,用于當(dāng)所述待創(chuàng)建索引表的索引文件的大小達(dá)到預(yù)設(shè)的索引文件大小閾值時,生成新的索引文件,并將所述新的索引文件的位置信息更新至所述待創(chuàng)建索引表對應(yīng)的元信息中。與現(xiàn)有技術(shù)相比,本申請通過創(chuàng)建獲取到的數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息的結(jié)構(gòu),其中,所述數(shù)據(jù)表的元信息包括所述數(shù)據(jù)表中所有數(shù)據(jù)文件的位置信息,所述數(shù)據(jù)文件以列的形式存儲;接著,創(chuàng)建待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),根據(jù)用戶的請求確定所述數(shù)據(jù)表中所述待創(chuàng)建索引表的索引列,所述索引列為所述數(shù)據(jù)表中的部分列,并根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),其中,所述待創(chuàng)建索引表對應(yīng)的元信息包括所述待創(chuàng)建索引表中索引文件的位置信息;隨后,將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至從節(jié)點,并根據(jù)所述數(shù)據(jù)表的元信息的結(jié)構(gòu)及所述數(shù)據(jù)文件的已分配的位置信息,更新所述數(shù)據(jù)文件對應(yīng)數(shù)據(jù)表的元信息;將所述待創(chuàng)建索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中,并更新所述待創(chuàng)建索引表對應(yīng)的元信息,進(jìn)而優(yōu)化了底層存儲結(jié)構(gòu),當(dāng)應(yīng)用于數(shù)據(jù)查詢時,提供索引文件的信息,從而根據(jù)索引文件的信息能夠快速定位到滿足條件的數(shù)據(jù)文件,大大減少了數(shù)據(jù)的訪問量,提高了查詢性能。附圖說明通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細(xì)描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:圖1示出根據(jù)本申請一個方面的一種創(chuàng)建索引表的方法流程示意圖;圖2示出本申請中的一實施例的分布式系統(tǒng)框架;圖3示出本申請中的一實施例的數(shù)據(jù)源;圖4示出本申請中的一實施例中數(shù)據(jù)源的查詢結(jié)構(gòu)化語句;圖5示出本申請中的一實施例中數(shù)據(jù)表的數(shù)據(jù)文件的結(jié)構(gòu)示意圖;圖6示出本申請中的一實施例中創(chuàng)建索引表后索引文件的信息分配示意圖;圖7示出本申請中的一實施例中哈希類索引表的一個索引文件的結(jié)構(gòu)示意圖;圖8示出本申請中的一實施例中范圍類索引表的一個索引文件的結(jié)構(gòu)示意圖;圖9示出根據(jù)本申請另一個方面的一種創(chuàng)建索引表的設(shè)備的結(jié)構(gòu)示意圖。附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。具體實施方式下面結(jié)合附圖對本申請作進(jìn)一步詳細(xì)描述。在本申請一個典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。圖1示出根據(jù)本申請的一個方面,提供的一種創(chuàng)建索引表的方法流程示意圖,所述方法包括:步驟s11~步驟s14,應(yīng)用于分布式系統(tǒng)中,在步驟s11中,創(chuàng)建獲取到的數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息的結(jié)構(gòu),其中,所述數(shù)據(jù)表的元信息包括所述數(shù)據(jù)表中所有數(shù)據(jù)文件的位置信息,所述數(shù)據(jù)文件以列的形式存儲;在本申請一實施例中,創(chuàng)建分布式全局索引表,則首先需要創(chuàng)建數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息,元信息包括數(shù)據(jù)表所包含的所有數(shù)據(jù)文件在集群中各個機器硬盤上的位置信息。需要說明的是,創(chuàng)建數(shù)據(jù)表對應(yīng)的元信息之前需要創(chuàng)建數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的結(jié)構(gòu)包括數(shù)據(jù)文件的結(jié)構(gòu),數(shù)據(jù)表中包括數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)源中的數(shù)據(jù)存儲為數(shù)據(jù)表,而數(shù)據(jù)表的存儲形式為數(shù)據(jù)文件。本申請一實施例中的分布式系統(tǒng)框架圖如圖2所示,包括客戶端(client)、主節(jié)點(master)、一個或若干從節(jié)點(slave)以及zookeeper,可將每個數(shù)據(jù)表中數(shù)據(jù)文件存儲于固態(tài)硬盤(ssd)中,在本申請實施例中,數(shù)據(jù)表的元信息存儲在zookeeper中,其中,所述zookeeper為性能分布式應(yīng)用的協(xié)調(diào)系統(tǒng)。在步驟s12中,創(chuàng)建待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),根據(jù)用戶的請求確定所述數(shù)據(jù)表中所述待創(chuàng)建索引表的索引列,所述索引列為所述數(shù)據(jù)表中的部分列,并根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),其中,所述待創(chuàng)建索引表對應(yīng)的元信息包括所述待創(chuàng)建索引表中索引文件的位置信息;接上述實施例,根據(jù)實際需求,確定需要創(chuàng)建全局索引的列,即從數(shù)據(jù)表中選取部分列作為索引列,進(jìn)而利用所選取的索引列創(chuàng)建分布式全局索引表對應(yīng)的元信息,其中,該元信息包括全局索引表所包含的所有索引文件在集群中各個機器硬盤上的位置信息。所述待創(chuàng)建的索引表被創(chuàng)建成功后可以用于分布式系統(tǒng)中數(shù)據(jù)的查詢,能夠滿足用戶只需要查詢少數(shù)的幾個數(shù)據(jù)列的需求的同時避免讀取所有的數(shù)據(jù)文件,大大減少訪問的數(shù)據(jù)量。需要說明的是,在本申請一實施例中,根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu)時,可以是根據(jù)每一個索引列建立對應(yīng)的一個索引表,然后創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),當(dāng)然,創(chuàng)建索引表時也可以是根據(jù)用戶需求對應(yīng)的索引列中的若干索引列共同建立一個索引表。其中,創(chuàng)建全局索引表的數(shù)據(jù)結(jié)構(gòu),全局索引表的結(jié)構(gòu)包括索引文件的結(jié)構(gòu)。優(yōu)選地,所述待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu)中索引文件的結(jié)構(gòu)包括bplustree結(jié)構(gòu),其中,所述bplustree結(jié)構(gòu)的葉子節(jié)點包括鍵值和位置信息值。在此,全局索引表的索引文件可采用bplustree結(jié)構(gòu)進(jìn)行組織存儲,bplustree結(jié)構(gòu)的葉子節(jié)點包含元組<鍵值,位置信息值>(<key,value>),bplustree結(jié)構(gòu)能夠有效地對輸入的索引列數(shù)據(jù)進(jìn)行排序,從而可以快速查詢索引列對應(yīng)的記錄的位置,快速響應(yīng)數(shù)據(jù)的查詢?nèi)蝿?wù)。在本申請一具體實施例中,如圖3所示的實例的數(shù)據(jù)源,該數(shù)據(jù)源共1000條記錄,包括地址標(biāo)識(id)、姓名(name)、年齡(age)、性別(sex)四列數(shù)據(jù)。圖4所示的用戶針對該數(shù)據(jù)源的查詢sql語句,用戶需要對id列的數(shù)據(jù)進(jìn)行過濾篩選,因而需要對id列創(chuàng)建全局索引表,其中,tablea表示為圖3所示的數(shù)據(jù)源對應(yīng)的數(shù)據(jù)表,sql1:“select*fromtableawhereid=1”表示查詢sql1語句執(zhí)行的是查詢數(shù)據(jù)表a中id為1的數(shù)據(jù)列對應(yīng)的數(shù)據(jù),其他sql語句表示與其類似。在步驟s13中,將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至從節(jié)點,并根據(jù)所述數(shù)據(jù)表的元信息的結(jié)構(gòu)及所述數(shù)據(jù)文件的已分配的位置信息,更新所述數(shù)據(jù)文件對應(yīng)數(shù)據(jù)表的元信息;在此,如圖2所示的分布式列式存儲平臺,分布式列式存儲平臺存儲數(shù)據(jù)源數(shù)據(jù)時,master根據(jù)負(fù)載平衡原則將數(shù)據(jù)文件均勻分布在集群中的各個機器,每臺機器含有該數(shù)據(jù)表的若干個數(shù)據(jù)文件(filesegment),filesegment的結(jié)構(gòu)如圖5所示,數(shù)據(jù)文件以列式存儲的方式進(jìn)行了存儲,當(dāng)olap用戶只需要查詢少數(shù)的幾個數(shù)據(jù)列時,列式存儲能夠為用戶只提供需要讀取的相應(yīng)的數(shù)據(jù)列,進(jìn)而大大提高olpa的查詢效率。優(yōu)選地,在步驟s13之前,還包括:步驟s13’,當(dāng)所述數(shù)據(jù)源的行數(shù)達(dá)到預(yù)設(shè)的數(shù)據(jù)文件的大小閾值時,則將當(dāng)前數(shù)據(jù)行新生成為一個數(shù)據(jù)文件,將新生成的數(shù)據(jù)文分配至所述數(shù)據(jù)表對應(yīng)的從節(jié)點,并更新所述數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)表的元信息。在本申請一實施例中,每當(dāng)內(nèi)存中數(shù)據(jù)源的數(shù)據(jù)的行數(shù)等于一個數(shù)據(jù)文件的大小范圍時,即把當(dāng)前的數(shù)據(jù)行生成為一個數(shù)據(jù)文件,同時集群中的主節(jié)點(master)根據(jù)負(fù)載均衡原則將其分配至集群中某一機器的硬盤中存儲,并更新數(shù)據(jù)表文件對應(yīng)的元信息,此時,針對該數(shù)據(jù)文件的全局索引表也開始創(chuàng)建。在步驟s14中,將所述待創(chuàng)建索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中,并更新所述待創(chuàng)建索引表對應(yīng)的元信息。在此,將生成的數(shù)據(jù)文件分配存儲后,需要將其對應(yīng)的索引文件的信息進(jìn)行分配至對應(yīng)slave的索引文件中,并更新全局索引表對應(yīng)的元信息中。其中,索引文件的信息可以包括創(chuàng)建完成的索引表中的索引列的值、所述索引列所屬數(shù)據(jù)文件的文件名、所述索引列所在的行在所述數(shù)據(jù)文件中的偏移量等等。在本申請一實施例中,所述待創(chuàng)建索引表包括哈希類全局索引表或范圍類全局索引表。在此,哈希類與范圍類全局索引表的索引文件在集群中的分配策略略有不同。哈希類全局索引表是根據(jù)索引列的哈希值決定索引文件在分布式集群中所分布的機器,而范圍類全局索引表則是根據(jù)索引列值的范圍將索引文件分配到對應(yīng)的機器。優(yōu)選地,在步驟s12中,根據(jù)所述待創(chuàng)建索引表的索引列的值確定所述葉子節(jié)點的鍵值;根據(jù)所述數(shù)據(jù)表的元信息中數(shù)據(jù)文件的位置信息、所述待創(chuàng)建索引表的元信息中索引文件的位置信息及所述索引列在索引文件中的偏移量確定所述葉子節(jié)點的位置信息值。在本申請一實施例中,哈希類全局索引表和哈希類全局索引表的索引文件均采用bplustree結(jié)構(gòu)進(jìn)行組織存儲。bplustree的葉子節(jié)點包含元組<key,value>,其中,key值為索引列的值,來源于數(shù)據(jù)文件,value為該索引列所在的數(shù)據(jù)文件信息和滿足條件的記錄在該索引文件中的偏移量。master根據(jù)負(fù)載均衡原則將數(shù)據(jù)文件均勻地分布在集群中的各個機器。每臺機器含有該數(shù)據(jù)表的若干個數(shù)據(jù)文件(filesegment),filesegment的結(jié)構(gòu)如圖5所示;分布式列式存儲平臺創(chuàng)建數(shù)據(jù)源對應(yīng)的全局索引表時,哈希類全局索引表對應(yīng)的索引文件為hashindexfilesegment,而范圍類全局索引表對應(yīng)的索引文件為rangeindexfilesegment。優(yōu)選地,當(dāng)所述待創(chuàng)建索引表為哈希類全局索引表時,在步驟s14中,根據(jù)所述哈希類全局索引表的索引列的值確定的哈希值,將所述哈希類全局索引表的索引文件對應(yīng)的鍵值和位置信息值分配至所述哈希類全局索引表對應(yīng)的從節(jié)點的索引文件中。具體地,在步驟s14中,根據(jù)所述哈希類全局索引表的索引列的值及所述從節(jié)點的個數(shù)確定所述索引列的哈希值,將所述索引列的哈希值為i對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至第i+1個從節(jié)點的索引文件中,其中,i為自然數(shù),從而合理地將索引文件的信息分配至每個slave中,達(dá)到均勻分布的目的。需要說明的是,通過確定哈希值,從而確定了索引文件的信息被分配至的機器的信息(如被分配至機器1上),即確定了將哈希值對應(yīng)的<key,value>分配至的機器的信息,只有當(dāng)<key,value>被分配至對應(yīng)的機器的索引文件中時,其對應(yīng)的bplustree結(jié)構(gòu)中葉子點才真正的被創(chuàng)建完成。在本申請一實施例中,假設(shè)分布式集群中有1臺master,n臺slave。哈希類全局索引表通過對索引列求哈希值,而索引列的值為bplustree結(jié)構(gòu)中葉子節(jié)點的key值,索引列對應(yīng)的數(shù)據(jù)文件的信息和索引列對應(yīng)記錄在數(shù)據(jù)文件中的偏移量為value。將key以及key的哈希值為i的記錄的位置信息value分配到第i+1臺slave的索引文件中,其中,哈希值可以根據(jù)索引列的值及分布式集群中的slave個數(shù)確定。優(yōu)選地,當(dāng)所述待創(chuàng)建索引表為范圍類全局索引表時,在步驟s14中,根據(jù)對所述索引列的值進(jìn)行采樣的采樣結(jié)果確定分配范圍區(qū)間,并記錄每個從節(jié)點以及其對應(yīng)的索引列的分配范圍區(qū)間;根據(jù)所述分配范圍區(qū)間將所述范圍類全局索引表的索引文件的信息分配至所述范圍類全局索引表對應(yīng)的從節(jié)點的索引文件中。具體地,在步驟s14中,將所述范圍類全局索引表的索引列的值與所述記錄的分配范圍區(qū)間進(jìn)行比較,確定所述索引列的值所在的分配范圍區(qū)間;根據(jù)所述索引列的值所在的分配范圍區(qū)間,將所述索引列的值對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至所述分配范圍區(qū)間對應(yīng)的從節(jié)點的索引文件。在本申請一實施例中,假設(shè)分布式集群中有1臺master,n臺slave。范圍類全局索引表通過對數(shù)據(jù)表文件的索引列的值進(jìn)行采樣,根據(jù)采樣結(jié)果設(shè)定n個范圍,使得每個范圍內(nèi)的數(shù)據(jù)量盡量均勻分布,并在master中記錄每臺機器以及其對應(yīng)的索引列的范圍區(qū)間。當(dāng)生成一個索引文件時,會將索引文件的索引列的值與master中的n個范圍進(jìn)行比較,根據(jù)所屬范圍區(qū)域?qū)⒃摿袑?yīng)的數(shù)據(jù)文件信息和在數(shù)據(jù)文件中的偏移量,即<key,value>更新到范圍區(qū)域相應(yīng)的slave的索引文件中。在本申請一實施例中,在步驟s14中,若所述索引文件中已存在所述鍵值;則將新的位置信息值與舊的位置信息值融合至所述鍵值對應(yīng)的葉子節(jié)點。若所述索引文件中不存在所述鍵值,則在所述bplustree結(jié)構(gòu)中插入新的葉子節(jié)點,將所述鍵值及位置信息值存儲至所述新的葉子節(jié)點。在此,當(dāng)將<key,value>分配到相應(yīng)的slave的索引文件時,若該索引文件中已經(jīng)存在該key值對應(yīng)的葉子節(jié)點,則將新value與舊value進(jìn)行融合;若該索引文件中不存在該key值,則插入新的葉子節(jié)點,將<key,value>元組存儲到新的葉子節(jié)點中。優(yōu)選地,所述方法還包括:步驟s14’,當(dāng)所述待創(chuàng)建索引表的索引文件的大小達(dá)到預(yù)設(shè)的索引文件大小閾值時,生成新的索引文件,并將所述新的索引文件的位置信息更新至所述待創(chuàng)建索引表對應(yīng)的元信息中。在本申請一實施例中,當(dāng)哈希類全局索引表和范圍類全局索引表的索引文件各自達(dá)到一個索引文件的大小的最大范圍時,再生成新的索引文件,并將索引文件的位置信息更新到全局索引表對應(yīng)的元信息中。在本申請一優(yōu)選實施例中,比如分布式系統(tǒng)中有1臺master,3臺slave,將數(shù)據(jù)文件的最大范圍設(shè)定為25行,當(dāng)輸入的數(shù)據(jù)行數(shù)等于最大范圍25時,分布式列式存儲平臺將當(dāng)前的數(shù)據(jù)行作為一個數(shù)據(jù)文件,master根據(jù)負(fù)載均衡原則將其輸出到集群中某一機器的ssd中對應(yīng)的數(shù)據(jù)文件(filesegment),并更新數(shù)據(jù)表對應(yīng)的元信息。針對哈希類全局索引表,key為id的值,value為id對應(yīng)的數(shù)據(jù)文件的信息和id對應(yīng)記錄在數(shù)據(jù)文件中的偏移量信息。通過key值取哈希,將哈希結(jié)果為0、1、2的<key,value>元組分別分配到集群中的第1、2、3臺機器的哈希類索引表的索引文件(hashindexfilesegment)中,如圖6所示,當(dāng)id=1時,哈希結(jié)果為1,則將其<key,value>存儲到集群中的第2臺slave中,當(dāng)id=2時,哈希結(jié)果為2,則將其<key,value>存儲到集群中的第3臺slave中;當(dāng)id=3時,哈希結(jié)果為0,則將其<key,value>存儲到集群中的第1臺slave中,其中,{key|key%3=哈希值}是指key與slave的個數(shù)(這里個數(shù)為3)之間進(jìn)行取余,得到哈希值,這里key為id的值。當(dāng)創(chuàng)建范圍類全局索引表時,對數(shù)據(jù)源的key值采樣后的范圍劃分結(jié)果如圖6所示,范圍劃分原則應(yīng)盡量使得各個范圍區(qū)間內(nèi)的記錄數(shù)接近,范圍分區(qū)的結(jié)果包含[1,333]、[334,666]和[667,999]三個區(qū)間,并在master中存儲三臺slave各自對應(yīng)的范圍區(qū)域,當(dāng)數(shù)據(jù)塊中的索引列的值滿足某個范圍區(qū)間時,將其索引信息存儲到該范圍區(qū)間對應(yīng)的slave機器的范圍類索引表的數(shù)據(jù)文件(rangeindexfilesegment)中,以bplustree葉子節(jié)點的形式存在,如id=5,key值落在第一個范圍區(qū)間,則將其對應(yīng)的<key,value>信息存儲到第一臺機器的索引文件中。需要說明的是,無論是哈希類索引表還是范圍類索引表,在將<key,value>分配至對應(yīng)的slave的索引文件中時,需要判斷索引文件的結(jié)構(gòu)bplustree中是否已存在對應(yīng)的索引列的id,若bplustree中已經(jīng)存在某個id,則直接將該id列對應(yīng)的數(shù)據(jù)塊(block)信息和該列在block中的行號與原來的value進(jìn)行融合。若該索引文件中不存在該key值,則插入新的葉子節(jié)點,將<key,value>存儲到新的葉子節(jié)點中。當(dāng)以上兩類索引的索引文件各自達(dá)到一個索引文件的大小的最大范圍時,再生成新的索引文件,并將索引文件的位置信息更新到全局索引表對應(yīng)的元信息中;通過本申請所述的創(chuàng)建索引表的方法,得到數(shù)據(jù)源對應(yīng)的索引文件,圖7示出本申請一實施例中的數(shù)據(jù)源創(chuàng)建的一個哈希類索引表的索引文件,由于所有key值取哈希結(jié)果均為0,所以該索引文件(hashindexfilesegment)位于集群的slave1中,存儲結(jié)構(gòu)為bplustree,葉子節(jié)點存儲著<key,value>,如key=3的對應(yīng)value為fs1:4,表示id=3的記錄位于filesegment1中,且偏移量為4;圖8示出本申請一實施例中的數(shù)據(jù)源創(chuàng)建的一個范圍類索引表的索引文件,所有key值均小于333,該索引文件(rangeindexfilesegment)位于集群的slave1中,存儲結(jié)構(gòu)為bplustree,葉子節(jié)點存儲著<key,value>,如key=1的對應(yīng)value為fs1:1:2,表示id=1的記錄位于filesegment1中,且偏移量為1和2。綜上所述,通過本申請所述創(chuàng)建的索引表,優(yōu)化了底層存儲結(jié)構(gòu),可以應(yīng)用于分布式系統(tǒng)中數(shù)據(jù)的查詢,通過哈希類索引表和范圍類索引表查詢滿足用戶需求的部分列的數(shù)據(jù),避免讀取所有的數(shù)據(jù)文件,大大減少訪問的數(shù)據(jù)量,提高聯(lián)機分析處理任務(wù)的處理速度。當(dāng)然,本申請所述創(chuàng)建的索引表,還可以應(yīng)用于利用索引表分配系統(tǒng)資源等場景,并不局限于應(yīng)用于數(shù)據(jù)的查詢。圖9示出根據(jù)本申請的另一個方面,提供的一種創(chuàng)建索引表的設(shè)備結(jié)構(gòu)示意圖,所述設(shè)備包括:第一創(chuàng)建裝置11、第二創(chuàng)建裝置12、數(shù)據(jù)文件分配裝置13和分配裝置14,應(yīng)用于分布式系統(tǒng)中,第一創(chuàng)建裝置11,用于創(chuàng)建獲取到的數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息的結(jié)構(gòu),其中,所述數(shù)據(jù)表的元信息包括所述數(shù)據(jù)表中所有數(shù)據(jù)文件的位置信息,所述數(shù)據(jù)文件以列的形式存儲;在本申請一實施例中,創(chuàng)建分布式全局索引表,則首先需要創(chuàng)建數(shù)據(jù)源對應(yīng)數(shù)據(jù)表的元信息,元信息包括數(shù)據(jù)表所包含的所有數(shù)據(jù)文件在集群中各個機器硬盤上的位置信息。需要說明的是,創(chuàng)建數(shù)據(jù)表對應(yīng)的元信息之前需要創(chuàng)建數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的結(jié)構(gòu)包括數(shù)據(jù)文件的結(jié)構(gòu),數(shù)據(jù)表中包括數(shù)據(jù)源的數(shù)據(jù),將數(shù)據(jù)源中的數(shù)據(jù)存儲為數(shù)據(jù)表,而數(shù)據(jù)表的存儲形式為數(shù)據(jù)文件。本申請一實施例中的分布式系統(tǒng)框架圖如圖2所示,包括客戶端(client)、主節(jié)點(master)、一個或若干從節(jié)點(slave)以及zookeeper,可將每個數(shù)據(jù)表中數(shù)據(jù)文件存儲于固態(tài)硬盤(ssd)中,在本申請實施例中,數(shù)據(jù)表的元信息存儲在zookeeper中,其中,所述zookeeper為性能分布式應(yīng)用的協(xié)調(diào)系統(tǒng)。第二創(chuàng)建裝置12,用于創(chuàng)建待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu),根據(jù)用戶的請求確定所述數(shù)據(jù)表中所述待創(chuàng)建索引表的索引列,所述索引列為所述數(shù)據(jù)表中的部分列,并根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),其中,所述待創(chuàng)建索引表對應(yīng)的元信息包括所述待創(chuàng)建索引表中索引文件的位置信息;接上述實施例,根據(jù)實際需求,確定需要創(chuàng)建全局索引的列,即從數(shù)據(jù)表中選取部分列作為索引列,進(jìn)而利用所選取的索引列創(chuàng)建分布式全局索引表對應(yīng)的元信息,其中,該元信息包括全局索引表所包含的所有索引文件在集群中各個機器硬盤上的位置信息。所述待創(chuàng)建的索引表被創(chuàng)建成功后可以用于分布式系統(tǒng)中數(shù)據(jù)的查詢,能夠滿足用戶只需要查詢少數(shù)的幾個數(shù)據(jù)列的需求的同時避免讀取所有的數(shù)據(jù)文件,大大減少訪問的數(shù)據(jù)量。需要說明的是,在本申請一實施例中,根據(jù)所述索引列創(chuàng)建所述待創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu)時,可以是根據(jù)每一個索引列建立對應(yīng)的一個索引表,然后創(chuàng)建索引表對應(yīng)的元信息的結(jié)構(gòu),當(dāng)然,創(chuàng)建索引表時也可以是根據(jù)用戶需求對應(yīng)的索引列中的若干索引列共同建立一個索引表。其中,創(chuàng)建全局索引表的數(shù)據(jù)結(jié)構(gòu),全局索引表的結(jié)構(gòu)包括索引文件的結(jié)構(gòu)。優(yōu)選地,所述待創(chuàng)建索引表的數(shù)據(jù)結(jié)構(gòu)中索引文件的結(jié)構(gòu)包括bplustree結(jié)構(gòu),其中,所述bplustree結(jié)構(gòu)的葉子節(jié)點包括鍵值和位置信息值。在此,全局索引表的索引文件可采用bplustree結(jié)構(gòu)進(jìn)行組織存儲,bplustree結(jié)構(gòu)的葉子節(jié)點包含元組<鍵值,位置信息值>(<key,value>),bplustree結(jié)構(gòu)能夠有效地對輸入的索引列數(shù)據(jù)進(jìn)行排序,從而可以快速查詢索引列對應(yīng)的記錄的位置,快速響應(yīng)數(shù)據(jù)的查詢?nèi)蝿?wù)。在本申請一具體實施例中,如圖3所示的實例的數(shù)據(jù)源,該數(shù)據(jù)源共1000條記錄,包括地址標(biāo)識(id)、姓名(name)、年齡(age)、性別(sex)四列數(shù)據(jù)。圖4所示的用戶針對該數(shù)據(jù)源的查詢sql語句,用戶需要對id列的數(shù)據(jù)進(jìn)行過濾篩選,因而需要對id列創(chuàng)建全局索引表,其中,tablea表示為圖3所示的數(shù)據(jù)源對應(yīng)的數(shù)據(jù)表,sql1:“select*fromtableawhereid=1”表示查詢sql1語句執(zhí)行的是查詢數(shù)據(jù)表a中id為1的數(shù)據(jù)列對應(yīng)的數(shù)據(jù),其他sql語句表示含義與其類似。數(shù)據(jù)文件分配裝置13,用于將所述數(shù)據(jù)源中當(dāng)前數(shù)據(jù)行生成的數(shù)據(jù)文件分配至從節(jié)點,并根據(jù)所述數(shù)據(jù)表的元信息的結(jié)構(gòu)及所述數(shù)據(jù)文件的已分配的位置信息,更新所述數(shù)據(jù)文件對應(yīng)數(shù)據(jù)表的元信息;在此,如圖2所示的分布式列式存儲平臺,分布式列式存儲平臺存儲數(shù)據(jù)源數(shù)據(jù)時,master根據(jù)負(fù)載平衡原則將數(shù)據(jù)文件均勻分布在集群中的各個機器,每臺機器含有該數(shù)據(jù)表的若干個數(shù)據(jù)文件(filesegment),filesegment的結(jié)構(gòu)如圖5所示,數(shù)據(jù)文件以列式存儲的方式進(jìn)行了存儲,當(dāng)olap用戶只需要查詢少數(shù)的幾個數(shù)據(jù)列時,列式存儲能夠為用戶只提供需要讀取的相應(yīng)的數(shù)據(jù)列,進(jìn)而大大提高olpa的查詢效率。優(yōu)選地,所述設(shè)備還包括:生成數(shù)據(jù)文件裝置13’,用于當(dāng)所述數(shù)據(jù)源的行數(shù)達(dá)到預(yù)設(shè)的數(shù)據(jù)文件的大小閾值時,則將當(dāng)前數(shù)據(jù)行新生成為一個數(shù)據(jù)文件,將新生成的數(shù)據(jù)文分配至所述數(shù)據(jù)表對應(yīng)的從節(jié)點,并更新所述數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)表的元信息。在本申請一實施例中,每當(dāng)內(nèi)存中數(shù)據(jù)源的數(shù)據(jù)的行數(shù)等于一個數(shù)據(jù)文件的大小范圍時,即把當(dāng)前的數(shù)據(jù)行生成為一個數(shù)據(jù)文件,同時集群中的主節(jié)點(master)根據(jù)負(fù)載均衡原則將其分配至集群中某一機器的硬盤中存儲,并更新數(shù)據(jù)表文件對應(yīng)的元信息,此時,針對該數(shù)據(jù)文件的全局索引表也開始創(chuàng)建。分配裝置14,用于將所述待創(chuàng)建索引表的索引文件的信息分配至對應(yīng)的從節(jié)點的索引文件中,并更新所述待創(chuàng)建索引表對應(yīng)的元信息。在此,將生成的數(shù)據(jù)文件分配存儲后,需要將其對應(yīng)的索引文件的信息進(jìn)行分配至對應(yīng)slave的索引文件中,并更新全局索引表對應(yīng)的元信息中。其中,索引文件的信息可以包括創(chuàng)建完成的索引表中的索引列的值、所述索引列所屬數(shù)據(jù)文件的文件名、所述索引列所在的行在所述數(shù)據(jù)文件中的偏移量等等。在本申請一實施例中,所述待創(chuàng)建索引表包括哈希類全局索引表或范圍類全局索引表。在此,哈希類與范圍類全局索引表的索引文件在集群中的分配策略略有不同。哈希類全局索引表是根據(jù)索引列的哈希值決定索引文件在分布式集群中所分布的機器,而范圍類全局索引表則是根據(jù)索引列值的范圍將索引文件分配到對應(yīng)的機器。優(yōu)選地,第二創(chuàng)建裝置12,用于根據(jù)所述待創(chuàng)建索引表的索引列的值確定所述葉子節(jié)點的鍵值;根據(jù)所述數(shù)據(jù)表的元信息中數(shù)據(jù)文件的位置信息、所述待創(chuàng)建索引表的元信息中索引文件的位置信息及所述索引列在索引文件中的偏移量確定所述葉子節(jié)點的位置信息值。在本申請一實施例中,哈希類全局索引表和哈希類全局索引表的索引文件均采用bplustree結(jié)構(gòu)進(jìn)行組織存儲。bplustree的葉子節(jié)點包含元組<key,value>,其中,key值為索引列的值,來源于數(shù)據(jù)文件,value為該索引列所在的數(shù)據(jù)文件信息和滿足條件的記錄在該索引文件中的偏移量。master根據(jù)負(fù)載均衡原則將數(shù)據(jù)文件均勻地分布在集群中的各個機器。每臺機器含有該數(shù)據(jù)表的若干個數(shù)據(jù)文件(filesegment),filesegment的結(jié)構(gòu)如圖5所示;分布式列式存儲平臺創(chuàng)建數(shù)據(jù)源對應(yīng)的全局索引表時,哈希類全局索引表對應(yīng)的索引文件為hashindexfilesegment,而范圍類全局索引表對應(yīng)的索引文件為rangeindexfilesegment。優(yōu)選地,當(dāng)所述待創(chuàng)建索引表為哈希類全局索引表時,分配裝置14用于根據(jù)所述哈希類全局索引表的索引列的值確定的哈希值,將所述哈希類全局索引表的索引文件對應(yīng)的鍵值和位置信息值分配至所述哈希類全局索引表對應(yīng)的從節(jié)點的索引文件中。具體地,分配裝置14,用于根據(jù)所述哈希類全局索引表的索引列的值及所述從節(jié)點的個數(shù)確定所述索引列的哈希值,將所述索引列的哈希值為i對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至第i+1個從節(jié)點的索引文件中,其中,i為自然數(shù),從而合理地將索引文件的信息分配至每個slave中,達(dá)到均勻分布的目的。需要說明的是,通過確定哈希值,從而確定了索引文件的信息被分配至的機器的信息(如被分配至機器1上),即確定了將哈希值對應(yīng)的<key,value>分配至的機器的信息,只有當(dāng)<key,value>被分配至對應(yīng)的機器的索引文件中時,其對應(yīng)的bplustree結(jié)構(gòu)中葉子點才真正的被創(chuàng)建完成。在本申請一實施例中,假設(shè)分布式集群中有1臺master,n臺slave。哈希類全局索引表通過對索引列求哈希值,而索引列的值為bplustree結(jié)構(gòu)中葉子節(jié)點的key值,索引列對應(yīng)的數(shù)據(jù)文件的信息和索引列對應(yīng)記錄在數(shù)據(jù)文件中的偏移量為value。將key以及key的哈希值為i的記錄的位置信息value分配到第i+1臺slave的索引文件中,其中,哈希值可以根據(jù)索引列的值及分布式集群中的slave個數(shù)確定。優(yōu)選地,當(dāng)所述待創(chuàng)建索引表為范圍類全局索引表時,分配裝置14,用于根據(jù)對所述索引列的值進(jìn)行采樣的采樣結(jié)果確定分配范圍區(qū)間,并記錄每個從節(jié)點以及其對應(yīng)的索引列的分配范圍區(qū)間;根據(jù)所述分配范圍區(qū)間將所述范圍類全局索引表的索引文件的信息分配至所述范圍類全局索引表對應(yīng)的從節(jié)點的索引文件中。具體地,分配裝置14,用于將所述范圍類全局索引表的索引列的值與所述記錄的分配范圍區(qū)間進(jìn)行比較,確定所述索引列的值所在的分配范圍區(qū)間;根據(jù)所述索引列的值所在的分配范圍區(qū)間,將所述索引列的值對應(yīng)的bplustree結(jié)構(gòu)中葉子節(jié)點的鍵值及位置信息值分配至所述分配范圍區(qū)間對應(yīng)的從節(jié)點的索引文件。在本申請一實施例中,假設(shè)分布式集群中有1臺master,n臺slave。范圍類全局索引表通過對數(shù)據(jù)表文件的索引列的值進(jìn)行采樣,根據(jù)采樣結(jié)果設(shè)定n個范圍,使得每個范圍內(nèi)的數(shù)據(jù)量盡量均勻分布,并在master中記錄每臺機器以及其對應(yīng)的索引列的范圍區(qū)間。當(dāng)生成一個索引文件時,會將索引文件的索引列的值與master中的n個范圍進(jìn)行比較,根據(jù)所屬范圍區(qū)域?qū)⒃摿袑?yīng)的數(shù)據(jù)文件信息和在數(shù)據(jù)文件中的偏移量,即<key,value>更新到范圍區(qū)域相應(yīng)的slave的索引文件中。在本申請一實施例中,分配裝置14,用于若所述索引文件中已存在所述鍵值;則將新的位置信息值與舊的位置信息值融合至所述鍵值對應(yīng)的葉子節(jié)點。若所述索引文件中不存在所述鍵值,則在所述bplustree結(jié)構(gòu)中插入新的葉子節(jié)點,將所述鍵值及位置信息值存儲至所述新的葉子節(jié)點。在此,當(dāng)將<key,value>分配到相應(yīng)的slave的索引文件時,若該索引文件中已經(jīng)存在該key值對應(yīng)的葉子節(jié)點,則將新value與舊value進(jìn)行融合;若該索引文件中不存在該key值,則插入新的葉子節(jié)點,將<key,value>元組存儲到新的葉子節(jié)點中。優(yōu)選地,所述設(shè)備還包括:生成索引文件裝置14’,用于當(dāng)所述待創(chuàng)建索引表的索引文件的大小達(dá)到預(yù)設(shè)的索引文件大小閾值時,生成新的索引文件,并將所述新的索引文件的位置信息更新至所述待創(chuàng)建索引表對應(yīng)的元信息中。在本申請一實施例中,當(dāng)哈希類全局索引表和范圍類全局索引表的索引文件各自達(dá)到一個索引文件的大小的最大范圍時,再生成新的索引文件,并將索引文件的位置信息更新到全局索引表對應(yīng)的元信息中。在本申請一優(yōu)選實施例中,比如分布式系統(tǒng)中有1臺master,3臺slave,將數(shù)據(jù)文件的最大范圍設(shè)定為25行,當(dāng)輸入的數(shù)據(jù)行數(shù)等于最大范圍25時,分布式列式存儲平臺將當(dāng)前的數(shù)據(jù)行作為一個數(shù)據(jù)文件,master根據(jù)負(fù)載均衡原則將其輸出到集群中某一機器的ssd中對應(yīng)的數(shù)據(jù)文件(filesegment),并更新數(shù)據(jù)表對應(yīng)的元信息。針對哈希類全局索引表,key為id的值,value為id對應(yīng)的數(shù)據(jù)文件的信息和id對應(yīng)記錄在數(shù)據(jù)文件中的偏移量信息。通過key值取哈希,將哈希結(jié)果為0、1、2的<key,value>元組分別分配到集群中的第1、2、3臺機器的哈希類索引表的索引文件(hashindexfilesegment)中,如圖6所示,當(dāng)id=1時,哈希結(jié)果為1,則將其<key,value>存儲到集群中的第2臺slave中,當(dāng)id=2時,哈希結(jié)果為2,則將其<key,value>存儲到集群中的第3臺slave中;當(dāng)id=3時,哈希結(jié)果為0,則將其<key,value>存儲到集群中的第1臺slave中,其中,{key|key%3=哈希值}是指key與slave的個數(shù)(這里個數(shù)為3)之間進(jìn)行取余,得到哈希值,這里key為id的值。當(dāng)創(chuàng)建范圍類全局索引表時,對數(shù)據(jù)源的key值采樣后的范圍劃分結(jié)果如圖6所示,范圍劃分原則應(yīng)盡量使得各個范圍區(qū)間內(nèi)的記錄數(shù)接近,范圍分區(qū)的結(jié)果包含[1,333]、[334,666]和[667,999]三個區(qū)間,并在master中存儲三臺slave各自對應(yīng)的范圍區(qū)域,當(dāng)數(shù)據(jù)塊中的索引列的值滿足某個范圍區(qū)間時,將其索引信息存儲到該范圍區(qū)間對應(yīng)的slave機器的范圍類索引表的數(shù)據(jù)文件(rangeindexfilesegment)中,以bplustree葉子節(jié)點的形式存在,如id=5,key值落在第一個范圍區(qū)間,則將其對應(yīng)的<key,value>信息存儲到第一臺機器的索引文件中。需要說明的是,無論是哈希類索引表還是范圍類索引表,在將<key,value>分配至對應(yīng)的slave的索引文件中時,需要判斷索引文件的結(jié)構(gòu)bplustree中是否已存在對應(yīng)的索引列的id,若bplustree中已經(jīng)存在某個id,則直接將該id列對應(yīng)的數(shù)據(jù)塊(block)信息和該列在block中的行號與原來的value進(jìn)行融合。若該索引文件中不存在該key值,則插入新的葉子節(jié)點,將<key,value>存儲到新的葉子節(jié)點中。當(dāng)以上兩類索引的索引文件各自達(dá)到一個索引文件的大小的最大范圍時,再生成新的索引文件,并將索引文件的位置信息更新到全局索引表對應(yīng)的元信息中;通過本申請所述的創(chuàng)建索引表的方法,得到數(shù)據(jù)源對應(yīng)的索引文件,圖7示出本申請一實施例中的數(shù)據(jù)源創(chuàng)建的一個哈希類索引表的索引文件,由于所有key值取哈希結(jié)果均為0,所以該索引文件(hashindexfilesegment)位于集群的slave1中,存儲結(jié)構(gòu)為bplustree,葉子節(jié)點存儲著<key,value>,如key=3的對應(yīng)value為fs1:4,表示id=3的記錄位于filesegment1中,且偏移量為4;圖8示出本申請一實施例中的數(shù)據(jù)源創(chuàng)建的一個范圍類索引表的索引文件,所有key值均小于333,該索引文件(rangeindexfilesegment)位于集群的slave1中,存儲結(jié)構(gòu)為bplustree,葉子節(jié)點存儲著<key,value>,如key=1的對應(yīng)value為fs1:1:2,表示id=1的記錄位于filesegment1中,且偏移量為1和2。綜上所述,通過本申請所述創(chuàng)建的索引表,優(yōu)化了底層存儲結(jié)構(gòu),可以應(yīng)用于分布式系統(tǒng)中數(shù)據(jù)的查詢,通過哈希類索引表和范圍類索引表查詢滿足用戶需求的部分列的數(shù)據(jù),避免讀取所有的數(shù)據(jù)文件,大大減少訪問的數(shù)據(jù)量,提高聯(lián)機分析處理任務(wù)的處理速度。當(dāng)然,本申請所述創(chuàng)建的索引表,還可以應(yīng)用于利用索引表分配系統(tǒng)資源等場景,并不局限于應(yīng)用于數(shù)據(jù)的查詢。顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(asic)、通用目的計算機或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,ram存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。另外,本申請的一部分可被應(yīng)用為計算機程序產(chǎn)品,例如計算機程序指令,當(dāng)其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細(xì)節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當(dāng)前第1頁12當(dāng)前第1頁12