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