專利名稱:一種云環(huán)境中基于分片位圖索引的查詢方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息技術(shù)領(lǐng)域,涉及一種云環(huán)境中的分布式位圖索引方法以及利用該方法對(duì)數(shù)據(jù)進(jìn)行查詢。
背景技術(shù):
云計(jì)算環(huán)境以及數(shù)據(jù)管理云計(jì)算技術(shù)的快速發(fā)展為海量數(shù)據(jù)的存儲(chǔ)和管理提供了可能。相比傳統(tǒng)的單機(jī)計(jì)算環(huán)境,云環(huán)境可以有效地利用分布式集群的龐大計(jì)算資源來(lái)滿足海量數(shù)據(jù)管理對(duì)計(jì)算資 源和存儲(chǔ)資源的需求,并且擁有易于維護(hù)、易于擴(kuò)展和易于管理等優(yōu)良特性。面對(duì)數(shù)據(jù)量的快速增長(zhǎng),云計(jì)算技術(shù)能夠快速調(diào)整并分配所需資源以適應(yīng)數(shù)據(jù)的瘋狂膨脹;同時(shí)能夠?yàn)榉菣C(jī)構(gòu)化數(shù)據(jù)提供具有彈性的、松散組織的存儲(chǔ)模式以及建立在這種存儲(chǔ)模式之上的分布式并行計(jì)算資源。隨著網(wǎng)絡(luò)時(shí)代數(shù)據(jù)的迅速膨脹,管理大規(guī)模數(shù)據(jù)成為了一個(gè)非常迫切的需求。云環(huán)境在計(jì)算資源與存儲(chǔ)資源方面的優(yōu)勢(shì)使其具備了存儲(chǔ)和管理大規(guī)模數(shù)據(jù)的能力。位圖索引位圖索引是一種使用位圖的特殊的數(shù)據(jù)庫(kù)索引技術(shù)。在位圖索引中,位圖中每個(gè)位的取值為0或1,表示對(duì)應(yīng)的元組在是否在被索引屬性上取得某項(xiàng)給定的取值。因此位圖的長(zhǎng)度等于元組總數(shù)。屬性A上的位圖索引將為該屬性上所有可能的取值建立一個(gè)位圖,用以指示各元組在該屬性上的取值情況。如果屬性A上可能的取值較多,將產(chǎn)生較多個(gè)位圖。在這種情況下,可以使用B+樹(shù)來(lái)組織這些位圖。B+樹(shù)可以保證快速定位所欲查找的位圖。位圖索引的優(yōu)勢(shì)在于,可以利用傳統(tǒng)計(jì)算機(jī)高效的按位邏輯操作來(lái)快速處理復(fù)合的查詢條件。例如,將在屬性A1上檢索得到的位圖和在屬性A2上檢索得到的位圖執(zhí)行邏輯按位與即可得到同時(shí)滿足這兩個(gè)屬性上的查詢條件的結(jié)果。云環(huán)境中索引的集中式管理方案在集中式方案中,被索引字段上的所有值被全局排序并集中管理。具體而言,每條記錄對(duì)應(yīng)的索引項(xiàng)將包含被索引的字段的值以及該記錄對(duì)應(yīng)的主鍵值。在索引結(jié)構(gòu)中,這些索引項(xiàng)按照被索引字段的值全局排序。系統(tǒng)處理被索引字段上的查詢請(qǐng)求的過(guò)程分為兩個(gè)步驟。首先在全局排序的索引結(jié)構(gòu)中找到符合條件的索引項(xiàng),從而得知相應(yīng)記錄的主鍵值。然后,依據(jù)主鍵值訪問(wèn)聚集索引從而定位完整的記錄。集中式方案的最大挑戰(zhàn)莫過(guò)于全局排序了的索引項(xiàng)的管理。一個(gè)最直接的方法是將這些索引項(xiàng)如同其他一般數(shù)據(jù)一樣分布式的存儲(chǔ)在數(shù)據(jù)管理系統(tǒng)中。以開(kāi)源項(xiàng)目HBase中的主鍵檢索機(jī)制為例,圖I展示了集中式方案中索引結(jié)構(gòu)的構(gòu)成與訪問(wèn)方式,其中根表記錄了目標(biāo)元組應(yīng)當(dāng)對(duì)應(yīng)于哪一個(gè)元數(shù)據(jù)表,而元數(shù)據(jù)表則記錄了目標(biāo)元組在數(shù)據(jù)表中真實(shí)的位置。檢索過(guò)程中,首先通過(guò)第1,2,3步獲得目標(biāo)元組所對(duì)應(yīng)的主鍵值,然后經(jīng)過(guò)第5,6,7步根據(jù)主鍵值找到目標(biāo)元組。通過(guò)這種方式,龐大的索引結(jié)構(gòu)也可以享受到海量數(shù)據(jù)管理系統(tǒng)提供的可靠性、可擴(kuò)展性和易管理性。但是,整個(gè)訪問(wèn)過(guò)程中的每一個(gè)步驟僅有一個(gè)單獨(dú)的數(shù)據(jù)節(jié)點(diǎn)參與完成,這并沒(méi)有有效利用分布式計(jì)算資源帶來(lái)的優(yōu)勢(shì)。從而,查詢的響應(yīng)時(shí)間將會(huì)非常長(zhǎng)。云環(huán)境中索引的分布式管理方案在分布式方案中,各數(shù)據(jù)節(jié)點(diǎn)上獨(dú)立建立各自管理的局部數(shù)據(jù)上的索引。分布式方案沒(méi)有維護(hù)索引值的全局排序,而是將其局部化到每個(gè)單獨(dú)的數(shù)據(jù)節(jié)點(diǎn)上。從而,數(shù)據(jù)節(jié)點(diǎn)相互之間不存在依賴關(guān)系,這為查詢請(qǐng)求的并發(fā)執(zhí)行帶來(lái)了便利。當(dāng)被索引鍵值上的查詢請(qǐng)求到達(dá)時(shí),檢索任務(wù)將被分發(fā)到所有的 數(shù)據(jù)節(jié)點(diǎn)上并以并發(fā)方式執(zhí)行,最終的查詢結(jié)果是所有數(shù)據(jù)節(jié)點(diǎn)上返回結(jié)果的并集。每個(gè)數(shù)據(jù)節(jié)點(diǎn)上數(shù)據(jù)的索引將被獨(dú)立維護(hù),因此其局部的索引結(jié)構(gòu)具有很強(qiáng)的靈活性各節(jié)點(diǎn)使用的索引技術(shù)可以是同構(gòu)的,例如均使用B+樹(shù)索引;也可以使異構(gòu)的,例如有的節(jié)點(diǎn)上使用B+樹(shù)索引,而其他的節(jié)點(diǎn)上則使用位圖索引等等。異構(gòu)的局部索引允許各數(shù)據(jù)節(jié)點(diǎn)依據(jù)自身的計(jì)算資源來(lái)選擇所使用的索引技術(shù),例如,主存資源不充足的節(jié)點(diǎn)可以使用B+樹(shù)索引并僅在主存中維護(hù)B+樹(shù)靠近根部?jī)蓪拥墓?jié)點(diǎn)。而CPU計(jì)算能力較差的節(jié)點(diǎn)則可以使用位圖索引,從而利用位圖上的邏輯操作來(lái)降低計(jì)算量。圖2展示了分布式方案中索引結(jié)構(gòu)的構(gòu)成與訪問(wèn)方式。通過(guò)這種方式,索引結(jié)構(gòu)依附于數(shù)據(jù)本身而被分散到各個(gè)節(jié)點(diǎn)中。節(jié)點(diǎn)之間具有獨(dú)立性。檢索任務(wù)也分配到各節(jié)點(diǎn)中獨(dú)立執(zhí)行,從而,并行計(jì)算資源得到很好地利用。但是,特別以最常用到的等值條件為代表,由于絕大多數(shù)檢索任務(wù)的目標(biāo)記錄數(shù)量很少,在分布式集群中并行地執(zhí)行該任務(wù)往往造成很多未存儲(chǔ)任何目標(biāo)記錄的數(shù)據(jù)節(jié)點(diǎn)也觸發(fā)了檢索過(guò)程,而最終將返回空集。在檢索任務(wù)頻繁的情況下,這一并行執(zhí)行過(guò)程將會(huì)耗費(fèi)大量的不必要的計(jì)算資源,最終將會(huì)降低系統(tǒng)的吞吐量。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種云環(huán)境中的分布式位圖索引方法——分片位圖索引(Regional Bitmap Index,RBI)以及利用該方法對(duì)大規(guī)模數(shù)據(jù)進(jìn)行高效查詢。本發(fā)明吸取了集中式索引方案和分布式索引方案中各自的優(yōu)點(diǎn),提出分片位圖索引結(jié)構(gòu)通過(guò)屬性值的全局排序機(jī)制而建立指示位圖使得各數(shù)據(jù)節(jié)點(diǎn)可以了解局部數(shù)據(jù)在全局?jǐn)?shù)據(jù)中的分布情況;通過(guò)將索引結(jié)構(gòu)局部化,使得數(shù)據(jù)節(jié)點(diǎn)之間盡可能相互獨(dú)立從而便于并行檢索的實(shí)施。本發(fā)明中的方法充分利用了云環(huán)境中的并行計(jì)算資源顯著提高的查詢的響應(yīng)時(shí)間,同時(shí)各數(shù)據(jù)節(jié)點(diǎn)利用值域上的數(shù)值分布信息避免了在大量無(wú)命中的數(shù)據(jù)節(jié)點(diǎn)中進(jìn)行檢索而引起的不必要的計(jì)算代價(jià)和開(kāi)銷,從而查詢吞吐量也獲得了提高。本發(fā)明提出一種云環(huán)境中基于分片位圖索引的查詢方法,其步驟包括I)建立分片位圖索引,I. I)對(duì)云環(huán)境中每個(gè)元組的屬性值進(jìn)行值域劃分,生成屬性值的全局排序表,所述全局排序表對(duì)元組用設(shè)定的規(guī)則排序;I. 2)根據(jù)值域劃分結(jié)果,在每個(gè)分布式數(shù)據(jù)節(jié)點(diǎn)上建立指示位圖,所述指示位圖記錄局部屬性值存儲(chǔ)情況;I. 3)根據(jù)云環(huán)境構(gòu)架在各分布式數(shù)據(jù)節(jié)點(diǎn)上建立局部位圖索引,完成分片位圖索弓I的創(chuàng)建;2)輸入查詢條件,主節(jié)點(diǎn)根據(jù)查詢條件建立條件位圖,并分發(fā)至各個(gè)數(shù)據(jù)節(jié)點(diǎn),所述條件位圖覆蓋查詢條件所包含所有可能;各數(shù)據(jù)節(jié)點(diǎn)并發(fā)執(zhí)行檢索任務(wù),主節(jié)點(diǎn)收集各個(gè)數(shù)據(jù)節(jié)點(diǎn)的查詢結(jié)果,并向用戶返回各數(shù)據(jù)節(jié)點(diǎn)上查詢結(jié)果的并集。用長(zhǎng)為Zi1C,的位串表示每個(gè)元組,其中,元組的屬性i的值域被切割為Ci個(gè)子域,f是參與切割的屬性的個(gè)數(shù),I彡i彡f。所述Ci個(gè)子域構(gòu)成集合Ci,并用笛卡爾積Des1^f=C1XC2XC3X…Cf表示,所述笛卡爾積的大小為=n: I Ci O所述位串進(jìn)行全局排序,得到的排序值與任意元組在被查詢字段上的取值唯一對(duì)應(yīng),所述元組對(duì)應(yīng)位串的所有可能取值按照從小到大的順序排序。所述指示位圖的長(zhǎng)度等于該元組屬性值域被劃分子域的個(gè)數(shù),與笛卡爾積的大小·B相同。步驟3)中建立位圖索引的方法是對(duì)該節(jié)點(diǎn)上存在的元組所對(duì)應(yīng)的位串的全局排序值建立B+樹(shù),樹(shù)的葉節(jié)點(diǎn)中的每一個(gè)鍵對(duì)應(yīng)于一個(gè)排序值;為B+樹(shù)的葉子節(jié)點(diǎn)上的各個(gè)鍵附加一個(gè)長(zhǎng)度為本數(shù)據(jù)節(jié)點(diǎn)所管理的元組總數(shù)的位圖作為相應(yīng)排序值所對(duì)應(yīng)的元組位圖。當(dāng)查詢條件為單個(gè)查詢條件時(shí),a)各計(jì)算節(jié)點(diǎn)分別將條件位圖拆分為屬性笛卡爾積內(nèi)的元素所對(duì)應(yīng)的位串,并將拆分得到的位串轉(zhuǎn)換為相應(yīng)的排序值建立一目標(biāo)排序值集合;b)生成長(zhǎng)度等于B的全0位串cb,并將屬于目標(biāo)排序值集合內(nèi)的位置為I ;c)檢查邏輯按位與eb&cb的計(jì)算結(jié)果是否為0,其中eb表示該計(jì)算節(jié)點(diǎn)上的指示位圖,cb是元組位串;d)如果為0則在該計(jì)算節(jié)點(diǎn)上直接返回空集作為計(jì)算結(jié)果;e)否則,搜索該計(jì)算節(jié)點(diǎn)的局部B+樹(shù)并找到對(duì)應(yīng)的葉子節(jié)點(diǎn)及其上附著的元組位圖,一一檢查元組位圖中被置為I的位所對(duì)應(yīng)的元組是否滿足條件。當(dāng)查詢條件為多個(gè)查詢條件時(shí),i )依照單個(gè)查詢條件情況執(zhí)行查詢;ii )將步驟i )中各查詢條件的查詢結(jié)果按照原查詢中條件的復(fù)合方式執(zhí)行相應(yīng)的按位邏輯操作,一一檢查計(jì)算結(jié)果中被置為I的位所對(duì)應(yīng)的元組是否滿足條件;iii )最后向主節(jié)點(diǎn)返回所有滿足條件的結(jié)果作為查詢結(jié)果。條件位圖是元組屬性位串笛卡爾積內(nèi)符合條件的元素所對(duì)應(yīng)的位串的邏輯按位與。查詢請(qǐng)求到達(dá)分布式數(shù)據(jù)節(jié)點(diǎn)時(shí),通過(guò)比對(duì)指示位圖來(lái)確定本數(shù)據(jù)節(jié)點(diǎn)是否包含目標(biāo)元組,如果不存在,則直接返回空值作為該數(shù)據(jù)節(jié)點(diǎn)的查詢結(jié)果,而無(wú)需執(zhí)行檢索任務(wù)。本發(fā)明的有益效果在于本發(fā)明在分析對(duì)比集中式方案與分布式方案的差異基礎(chǔ)上設(shè)計(jì)出了結(jié)合二者優(yōu)勢(shì)的索引機(jī)制。該方法可以充分利用了云環(huán)境中的可配置的并行計(jì)算資源,能夠?yàn)橐员容^大小為條件的數(shù)據(jù)查詢請(qǐng)求提供快速相應(yīng)。得益于指示位圖的使用,本發(fā)明有效地避免了不必要的計(jì)算資源開(kāi)銷。本發(fā)明被部署于云環(huán)境中,面對(duì)大規(guī)模數(shù)據(jù),本發(fā)明提供的檢索方法具有良好的可擴(kuò)展性。
圖I是現(xiàn)有技術(shù)中的集中式方案示意圖;圖2是現(xiàn)有技術(shù)中的分布式方案示意圖;
圖3是本發(fā)明云環(huán)境中基于分片位圖索引的查詢方法在響應(yīng)時(shí)間方面與現(xiàn)有技術(shù)檢索方法的比較示意圖;圖4是本發(fā)明云環(huán)境中基于分片位圖索引的查詢方法在查詢吞吐量方面與現(xiàn)有技術(shù)檢索方法的比較示意圖;圖5是本發(fā)明云環(huán)境中基于分片位圖索引的查詢方法一實(shí)施例中在某數(shù)據(jù)節(jié)點(diǎn)上的元組及其位串值與排序值;圖6是本發(fā)明云環(huán)境中基于分片位圖索引的查詢方法一實(shí)施例中的局部B+樹(shù)結(jié)構(gòu)以及元組位圖的示意圖;圖7是本發(fā)明云環(huán)境中基于分片位圖索引的查詢方法查詢步驟流程圖。
具體實(shí)施例方式在一個(gè)具有4. 5億條元組,大小為52GB的記錄Twitter微博轉(zhuǎn)發(fā)關(guān)系的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn)的結(jié)果表明,本發(fā)明中提出的索引方法在響應(yīng)時(shí)間和查詢吞吐量上均具有良好的表現(xiàn)。圖3和圖4列出了集中式方案索引的基本實(shí)現(xiàn)(Global Approach, GA),分布式方案索引的基本實(shí)現(xiàn)(DistributedApproach, DA)與本方法提出的分片位圖索引(RegionalBitmap Index,RBI)的對(duì)比實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)使用了由4臺(tái)機(jī)器構(gòu)成的一個(gè)分布式集群作為實(shí)驗(yàn)環(huán)境。以下結(jié)合附圖7詳細(xì)介紹本發(fā)明提出的分片位圖索引的構(gòu)建過(guò)程中的各個(gè)步驟首先,生成數(shù)據(jù)在被索引屬性上的值進(jìn)行全局排序表。全局排序表的生成方法如下I.在數(shù)值屬性為A1, A2, A3, . . .,Af共f個(gè)數(shù)據(jù)列上建立位圖索引;首先將各屬性A1的值域切割為Ci個(gè)子域(如果屬性取值為離散值,則可將每一個(gè)取值單獨(dú)劃分為一個(gè)子域),設(shè)這些子域構(gòu)成的集合為Ci,那么子域的笛卡爾積Des1...^C1 XC2XC3X的大小為B = n;, c.2.使用一個(gè)長(zhǎng)為,的位串來(lái)表示每個(gè)元組,其中Ci是值域集合的大小。設(shè)元組t的屬性Ai的第j個(gè)子域?qū)?yīng)的位為,那么規(guī)定該元組所對(duì)應(yīng)的位串可為
' ' ^!,C1 ^2,1^2.2^2,3 . . ^2-C, Pf f f ,3 .. ■ ,Cf。3.給定任意元組t所對(duì)應(yīng)的位串,Vi G [1,/]有且僅有唯一的一個(gè)i G [1,Ci]使得bq= I。因此該位串的所有可能取值可一一對(duì)應(yīng)于上述子域笛卡爾積Des1...f中的元素。從而,任意元組所對(duì)應(yīng)的位串將擁有A = ,個(gè)可能的取值。同一張數(shù)據(jù)表中的不同的元組擁有相同的表模式,表模式?jīng)Q定了表所擁有的屬性,在給定屬性列及其上的子域劃分的情況下,將元組對(duì)應(yīng)的位串的所有可能取值按照從小到大的順序排序。位串的所有可能的取值均一一對(duì)應(yīng)到一個(gè)排序值re [1,B]上。這樣,任意元組在被檢測(cè)的數(shù)據(jù)字段上的取值均對(duì)應(yīng)于一個(gè)唯一的排序值r。至此,完成了對(duì)所有元組上的索引值的全局排序。下面以為某公司員工信息表中的兩個(gè)屬性建立組合索引為例,介紹從元組生成對(duì)應(yīng)的位串,進(jìn)而計(jì)算對(duì)應(yīng)的排序值的過(guò)程。例I :給定某公司的員工信息表,設(shè)該表屬性A1指示員工性別,包含男male和女female兩個(gè)取值;屬性A2記錄員工薪水,取值為
范圍內(nèi)的整數(shù)。首先,屬性AjA值域被分割為兩個(gè)子域,分別僅包括取值男male和女female ;屬性A2的值域被分割為三個(gè)子域
,(1000,2000]和(2000, 3000] o考慮員工1,設(shè)其性別為男性,薪水為1300,那么該員工I對(duì)應(yīng)的位串為‘10010’。其中前兩位‘10’表示屬性A1上取值為male,后三位‘010’表示其薪水在范圍(1000,2000]內(nèi)。再考慮員工2,設(shè)其性別為女性,薪水為2600,那么該員工對(duì)應(yīng)的位串為‘01001’。其中前兩位‘01’表示屬性A1上取值為male,后三位‘001’表示其薪水在范圍(2000,3000]內(nèi)。根據(jù)以上對(duì)屬性值域的劃分,可知屬性子域的笛卡爾積的大小為B=2X3=6。任意元組所對(duì)應(yīng)的位串可能的取值有6個(gè),將其按照從小到大的順序排列可得‘01001,,‘01010,,‘01100,,‘10001,,‘10010,以及 ‘10100,。對(duì)比可知,員工I對(duì)應(yīng)的位串排在第5位,而員工2對(duì)應(yīng)的位串排在第I位。因此,員工I和員工2對(duì)應(yīng)的位串的排序值分別為5和I。接下來(lái),在各數(shù)據(jù)節(jié)點(diǎn)分別生成指示位圖。指示位圖是一個(gè)長(zhǎng)度為子域笛卡爾積的大小B的位串。如果該數(shù)據(jù)節(jié)點(diǎn)上存在排序值為r的元組,則該數(shù)據(jù)節(jié)點(diǎn)上指示位圖的第r位為1,如果該數(shù)據(jù)節(jié)點(diǎn)上不存在排序值為r的元組(大于或小于I■元組),則該數(shù)據(jù)節(jié)點(diǎn)上指示位圖的第I■位為O。指示位圖反映了局部數(shù)據(jù)在屬性的整體值域中的分布情況。它將被存儲(chǔ)于數(shù)據(jù)節(jié)點(diǎn)的內(nèi)存中。例2 :關(guān)于員工信息表的假設(shè)同例I。如圖5所示,設(shè)該表在某個(gè)數(shù)據(jù)節(jié)點(diǎn)上共有7條記錄。由于B=6,因此該數(shù)據(jù)節(jié)點(diǎn)上的指示位圖長(zhǎng)度為6。又由于該數(shù)據(jù)節(jié)點(diǎn)僅包含排序值為1、3、4和5的元組,因此其指示位圖應(yīng)為101110。指示位圖記錄了局部屬性值的存在情況。查詢請(qǐng)求到達(dá)分布式數(shù)據(jù)節(jié)點(diǎn)時(shí),首先通過(guò)比對(duì)指示位圖來(lái)確定本數(shù)據(jù)節(jié)點(diǎn)是否包含目標(biāo)元組,如果不存在,則直接返回空值,而不執(zhí)行檢索任務(wù)。對(duì)指示位圖的比對(duì)通過(guò)位串的按位邏輯與操作來(lái)完成。
例3 :關(guān)于員工信息表的假設(shè)同例I。如圖5所示,設(shè)該表在某個(gè)數(shù)據(jù)節(jié)點(diǎn)上共有7條記錄。由例3可知其指示位圖為101110。假設(shè)用戶發(fā)出了查詢性別為女性且薪水范圍在(1000,2000]內(nèi)的員工,據(jù)此可生成目標(biāo)記錄的對(duì)應(yīng)的位串為01010,其排序值為2。從而,構(gòu)造位串01000與存在101110進(jìn)行邏輯按位與01000&101110=0,結(jié)果為全零,因此該節(jié)點(diǎn)上不存在目標(biāo)元組,可直接返回空集作為本節(jié)點(diǎn)的查詢結(jié)果。最后,在各數(shù)據(jù)節(jié)點(diǎn)為局部管理的數(shù)據(jù)建立位圖索引。類似于前文所述分布式方案,本方法同樣采用數(shù)據(jù)節(jié)點(diǎn)獨(dú)立管理局部數(shù)據(jù)上的索引的方式,以便提高執(zhí)行檢索時(shí)的并行度。在每個(gè)數(shù)據(jù)節(jié)點(diǎn)上,并行執(zhí)行以下步驟I.對(duì)該節(jié)點(diǎn)上存在的元組所對(duì)應(yīng)的位串的全局排序值建立B+樹(shù),樹(shù)的每個(gè)葉節(jié)點(diǎn)對(duì)應(yīng)于一個(gè)排序值。B+樹(shù)的構(gòu)建過(guò)程如 Goetz Graefe and Harumi A. Kuno. Modern B-Treetechniques. (In ICDE, pages 1370-1373, 2011.)中所述。2.為B+樹(shù)的各個(gè)葉子節(jié)點(diǎn)附加一個(gè)長(zhǎng)度為本數(shù)據(jù)節(jié)點(diǎn)所管理的元組總數(shù)的位圖作為該葉子節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)。位圖中擁有該排序值的元組所對(duì)應(yīng)的位被置為I其他位被置為O。該位圖被稱為元組位圖。易見(jiàn),單個(gè)數(shù)據(jù)節(jié)點(diǎn)上的B+樹(shù)最多擁有B個(gè)葉子節(jié)點(diǎn),因此最多存在B個(gè)元組位圖。
繼續(xù)例I中的假設(shè),下面的例子介紹了某個(gè)數(shù)據(jù)節(jié)點(diǎn)上的局部位圖索引的生成過(guò)程。例4 :關(guān)于員工信息表的假設(shè)同例I。如圖5所示,設(shè)該表在某個(gè)數(shù)據(jù)節(jié)點(diǎn)上共有7條記錄。其中位串Bit String和排序值Rank不是原表中的屬性,而是由性別和薪水兩個(gè)屬性上的值生成的位串及其對(duì)應(yīng)的排序值。依據(jù)各記錄的排序值建立的B+樹(shù)結(jié)構(gòu)如圖6所示(該B+樹(shù)中的每個(gè)節(jié)點(diǎn)至多含有3個(gè)孩子節(jié)點(diǎn))。以下結(jié)合附圖7詳細(xì)介紹給定查詢條件,以分布式方式執(zhí)行檢索任務(wù)的步驟首先,主節(jié)點(diǎn)根據(jù)查詢條件生成條件位圖,并將其分發(fā)至各個(gè)數(shù)據(jù)節(jié)點(diǎn)。條件位圖是屬性笛卡爾積內(nèi)符合條件的元素所對(duì)應(yīng)的位串的邏輯按位與。例如,查詢女性薪水為1500到1800之間的員工將得到條件位圖01010 ;又如,查詢條件薪水低于1300的男性員工 將被轉(zhuǎn)換為條件位圖10110。注意,生成的條件位串應(yīng)當(dāng)覆蓋查詢條件所包含的所有可能性。另外,如果查詢條件是涉及與多個(gè)索引結(jié)構(gòu)相關(guān)的屬性上的多個(gè)查詢條件的復(fù)合條件,那么應(yīng)當(dāng)為各個(gè)條件生成獨(dú)立的條件位圖。然后,各數(shù)據(jù)節(jié)點(diǎn)并行執(zhí)行檢索任務(wù)。對(duì)于單個(gè)查詢條件和多個(gè)查詢條件組成的復(fù)合查詢條件,以下分情況介紹I.單個(gè)查詢條件的情況a)將條件位圖拆分為屬性笛卡爾積內(nèi)的元素所對(duì)應(yīng)的位串,并將拆分得到的位串轉(zhuǎn)換為相應(yīng)的排序值。這些排序值組成了的一個(gè)目標(biāo)排序值的集合。b)接著生成長(zhǎng)度等于B的全0位串cb,并將屬于目標(biāo)排序值集合內(nèi)的位置為I。c)檢查邏輯按位與eb&cb的計(jì)算結(jié)果是否為O。其中eb表示該數(shù)據(jù)節(jié)點(diǎn)上的指示位圖。d)如果為0則在該數(shù)據(jù)節(jié)點(diǎn)上直接返回空集作為計(jì)算結(jié)果。e)否則,搜索該數(shù)據(jù)節(jié)點(diǎn)的局部B+樹(shù)并找到對(duì)應(yīng)的葉子節(jié)點(diǎn)及其上附著的元組位圖,一一檢查元組位圖中被置為I的位所對(duì)應(yīng)的元組是否滿足條件。最后向主節(jié)點(diǎn)返回所有滿足條件的結(jié)果作為查詢結(jié)果。2.多個(gè)查詢條件組成的復(fù)合查詢條件的情況a)對(duì)于各個(gè)單獨(dú)的查詢條件,依次執(zhí)行以下步驟i各數(shù)據(jù)節(jié)點(diǎn)分別將條件位串轉(zhuǎn)換為對(duì)應(yīng)的排序值的范圍。ii接著生成長(zhǎng)度等于B的全0位串cb,并將屬于排序值范圍內(nèi)的位置為I。iii檢查按位邏輯與eb&cb的計(jì)算結(jié)果是否為O。iv如果為0則在該數(shù)據(jù)節(jié)點(diǎn)上直接生成長(zhǎng)度等于該數(shù)據(jù)節(jié)點(diǎn)管理的局部元組數(shù)量的全0位圖作為該查詢條件的查詢結(jié)果。V否則,搜索該數(shù)據(jù)節(jié)點(diǎn)的局部B+樹(shù)并找到對(duì)應(yīng)的葉子節(jié)點(diǎn)及其上附著的元組位圖作為該查詢條件的查詢結(jié)果。b)將步驟a)中各查詢條件的查詢結(jié)果按照原查詢中條件的復(fù)合方式執(zhí)行相應(yīng)的按位邏輯操作,一一檢查計(jì)算結(jié)果中被置為I的位所對(duì)應(yīng)的元組是否滿足條件。c)最后向主節(jié)點(diǎn)返回所有滿足條件的結(jié)果作為本數(shù)據(jù)節(jié)點(diǎn)上的查詢結(jié)果。最后,主節(jié)點(diǎn)收集各數(shù)據(jù)節(jié)點(diǎn)返回的查詢結(jié)果,并取并集作為最終結(jié)果。
權(quán)利要求
1. 一種云環(huán)境中基于分片位圖索引的查詢方法,其步驟包括 1)建立分片位圖索引, 1.1)對(duì)云環(huán)境中每個(gè)元組的屬性值進(jìn)行值域劃分,生成屬性值的全局排序表,所述全局排序表對(duì)元組用設(shè)定的規(guī)則排序; I. 2)根據(jù)值域劃分結(jié)果,在每個(gè)分布式數(shù)據(jù)節(jié)點(diǎn)上建立指示位圖,所述指示位圖記錄局部屬性值存儲(chǔ)情況; 1.3)根據(jù)云環(huán)境構(gòu)架在各分布式數(shù)據(jù)節(jié)點(diǎn)上建立局部位圖索引,完成分片位圖索引的創(chuàng)建; 2)輸入查詢條件,主節(jié)點(diǎn)根據(jù)查詢條件建立條件位圖,并分發(fā)至各個(gè)數(shù)據(jù)節(jié)點(diǎn),所述條件位圖覆蓋查詢條件所包含所有可能;各數(shù)據(jù)節(jié)點(diǎn)并發(fā)執(zhí)行檢索任務(wù),主節(jié)點(diǎn)收集各個(gè)數(shù)據(jù)節(jié)點(diǎn)的查詢結(jié)果,并向用戶返回各數(shù)據(jù)節(jié)點(diǎn)上查詢結(jié)果的并集。
2.如權(quán)利要求I所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,用長(zhǎng)為
3.如權(quán)利要求2所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,所述Ci個(gè)子域構(gòu)成集合Ci,并用笛卡爾積Des1... ^C1 X C2 X C3 X…Cf表示,所述笛卡爾積的大小為
4.如權(quán)利要求2所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,對(duì)所述位串進(jìn)行全局排序,得到的排序值與任意元組在被查詢字段上的取值唯一對(duì)應(yīng),所述元組對(duì)應(yīng)位串的所有可能取值按照從小到大的順序排序。
5.如權(quán)利要求I或3所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,所述指示位圖的長(zhǎng)度等于該元組屬性值域被劃分子域的個(gè)數(shù),與笛卡爾積的大小B相同。
6.如權(quán)利要求I所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,步驟3)中建立位圖索引的方法是對(duì)該節(jié)點(diǎn)上存在的元組所對(duì)應(yīng)的位串的全局排序值建立B+樹(shù),樹(shù)的葉節(jié)點(diǎn)中的每一個(gè)鍵對(duì)應(yīng)于一個(gè)排序值 ’為B+樹(shù)的葉子節(jié)點(diǎn)上的各個(gè)鍵附加一個(gè)長(zhǎng)度為本數(shù)據(jù)節(jié)點(diǎn)所管理的元組總數(shù)的位圖作為相應(yīng)排序值所對(duì)應(yīng)的元組位圖。
7.如權(quán)利要求I所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,當(dāng)查詢條件為單個(gè)查詢條件時(shí), a)各計(jì)算節(jié)點(diǎn)分別將條件位圖拆分為屬性笛卡爾積內(nèi)的元素所對(duì)應(yīng)的位串,并將拆分得到的位串轉(zhuǎn)換為相應(yīng)的排序值建立一目標(biāo)排序值集合; b)生成長(zhǎng)度等于B的全O位串cb,并將屬于目標(biāo)排序值集合內(nèi)的位置為I; c)檢查邏輯按位與eb&cb的計(jì)算結(jié)果是否為0,其中eb表示該計(jì)算節(jié)點(diǎn)上的指示位圖; d)如果為0則在該計(jì)算節(jié)點(diǎn)上直接返回空集作為計(jì)算結(jié)果; e)否則,搜索該計(jì)算節(jié)點(diǎn)的局部B+樹(shù)并找到對(duì)應(yīng)的葉子節(jié)點(diǎn)及其上附著的元組位圖,一一檢查元組位圖中被置為I的位所對(duì)應(yīng)的元組是否滿足條件。
8.如權(quán)利要求I或7所述的云環(huán)境中基于分布式位圖索引的查詢方法,其特征在于,當(dāng)查詢條件為多個(gè)查詢條件時(shí),i)依照單個(gè)查詢條件情況執(zhí)行查詢; ii )將步驟i )中根據(jù)各查詢條件檢索得到的元組位圖按照原查詢中條件的復(fù)合方式執(zhí)行相應(yīng)的按位邏輯操作,一一檢查計(jì)算結(jié)果中被置為I的位所對(duì)應(yīng)的元組是否滿足條件; iii)最后向主節(jié)點(diǎn)返回所有滿足條件的結(jié)果作為查詢結(jié)果。
9.如權(quán)利要求I所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,條件位圖是元組屬性位串笛卡爾積內(nèi)符合條件的元素所對(duì)應(yīng)的位串的邏輯按位與。
10.如權(quán)利要求I所述的云環(huán)境中基于分片位圖索引的查詢方法,其特征在于,查詢請(qǐng)求到達(dá)分布式數(shù)據(jù)節(jié)點(diǎn)時(shí),通過(guò)比對(duì)指示位圖來(lái)確定本數(shù)據(jù)節(jié)點(diǎn)是否包含目標(biāo)元組,如果不存在,則直接返回空值作為該數(shù)據(jù)節(jié)點(diǎn)的查詢結(jié)果,而無(wú)需執(zhí)行檢索任務(wù)。
全文摘要
本發(fā)明提出一種云環(huán)境中基于分片位圖索引的查詢方法,1)建立分片位圖索引,1.1)對(duì)云環(huán)境中數(shù)據(jù)表上的索引屬性進(jìn)行值域劃分,生成屬性值的全局排序表,全局排序表對(duì)元組用設(shè)定的規(guī)則排序;1.2)根據(jù)值域劃分結(jié)果建立每個(gè)數(shù)據(jù)節(jié)點(diǎn)上的指示位圖,指示位圖記錄局部屬性值存儲(chǔ)情況;1.3)根據(jù)云環(huán)境構(gòu)架在各數(shù)據(jù)節(jié)點(diǎn)上建立局部位圖索引,完成分片位圖索引的創(chuàng)建;2)輸入查詢條件,主節(jié)點(diǎn)根據(jù)查詢條件建立條件位圖,并分發(fā)至各個(gè)數(shù)據(jù)節(jié)點(diǎn),條件位圖覆蓋查詢條件所包含所有可能;各數(shù)據(jù)節(jié)點(diǎn)并發(fā)執(zhí)行檢索任務(wù),主節(jié)點(diǎn)收集各個(gè)數(shù)據(jù)節(jié)點(diǎn)的查詢結(jié)果,并向用戶返回各數(shù)據(jù)節(jié)點(diǎn)上查詢結(jié)果的并集。通過(guò)建立分片位圖索引可以充分利用了云環(huán)境中的可配置的并行計(jì)算資源,能夠?yàn)橐员容^大小為條件的數(shù)據(jù)查詢請(qǐng)求提供快速響應(yīng)。
文檔編號(hào)G06F17/30GK102722531SQ20121015525
公開(kāi)日2012年10月10日 申請(qǐng)日期2012年5月17日 優(yōu)先權(quán)日2012年5月17日
發(fā)明者唐世渭, 孟必平, 李紅燕, 楊冬青, 王騰蛟, 高軍 申請(qǐng)人:北京大學(xué)