本發明涉及(ji)(ji)分布(bu)式(shi)數據計算技術,尤(you)其涉及(ji)(ji)一種基于流水線的(de)分布(bu)式(shi)多表連接方(fang)法及(ji)(ji)系(xi)統。
背景技術:
大數(shu)(shu)(shu)據時代的(de)(de)到來,帶(dai)動了數(shu)(shu)(shu)據量的(de)(de)迅猛增長,急需一(yi)種技術(shu)來存(cun)儲(chu)和(he)(he)處理如此(ci)龐大的(de)(de)數(shu)(shu)(shu)據量,由此(ci),谷歌的(de)(de)dfs(分(fen)布式文件系統)和(he)(he)分(fen)布式計算(suan)模(mo)型mapreduce(映射和(he)(he)規約)應運(yun)而生,如今(jin)分(fen)布式計算(suan)技術(shu)已成為海(hai)(hai)量數(shu)(shu)(shu)據存(cun)儲(chu)分(fen)析(xi)的(de)(de)主(zhu)流(liu)技術(shu)。對于(yu)海(hai)(hai)量數(shu)(shu)(shu)據分(fen)析(xi),連(lian)接查詢是一(yi)種重(zhong)要(yao)的(de)(de)操(cao)作(zuo),并(bing)且(qie)在實(shi)際應用時,所需的(de)(de)數(shu)(shu)(shu)據可能(neng)不僅僅局限(xian)于(yu)某一(yi)個表,而是涉及到多個表,這給(gei)連(lian)接操(cao)作(zuo)帶(dai)來了一(yi)定的(de)(de)難(nan)度。
在執行連(lian)(lian)(lian)接(jie)(jie)查(cha)詢(xun)之前,首先要對(dui)(dui)相應(ying)(ying)數(shu)(shu)據(ju)(ju)進(jin)(jin)行分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge),通常的(de)(de)(de)(de)(de)做(zuo)法(fa)是(shi)對(dui)(dui)數(shu)(shu)據(ju)(ju)進(jin)(jin)行哈(ha)希分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)或范圍分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)。現(xian)有技術中提出了(le)一種(zhong)自適(shi)(shi)應(ying)(ying)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)方法(fa)。此方法(fa)使(shi)用(yong)了(le)一種(zhong)雙(shuang)(shuang)階段(duan)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)算(suan)法(fa)對(dui)(dui)數(shu)(shu)據(ju)(ju)進(jin)(jin)行了(le)基(ji)于屬性(xing)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge):第一階段(duan),依(yi)(yi)據(ju)(ju)連(lian)(lian)(lian)接(jie)(jie)屬性(xing)對(dui)(dui)最頂(ding)層數(shu)(shu)據(ju)(ju)進(jin)(jin)行分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge);第二階段(duan),依(yi)(yi)據(ju)(ju)數(shu)(shu)據(ju)(ju)規模(mo)和規約器(reduce)個數(shu)(shu)對(dui)(dui)底層數(shu)(shu)據(ju)(ju)進(jin)(jin)行進(jin)(jin)一步的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)。這樣(yang)(yang)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)算(suan)法(fa)保(bao)證了(le)每一個分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu)都包(bao)(bao)含(han)單一的(de)(de)(de)(de)(de)連(lian)(lian)(lian)接(jie)(jie)屬性(xing)。當(dang)這種(zhong)自適(shi)(shi)應(ying)(ying)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)算(suan)法(fa)檢測(ce)到一個包(bao)(bao)含(han)著新的(de)(de)(de)(de)(de)連(lian)(lian)(lian)接(jie)(jie)屬性(xing)的(de)(de)(de)(de)(de)輸入查(cha)詢(xun)時(shi),它將以同樣(yang)(yang)的(de)(de)(de)(de)(de)雙(shuang)(shuang)階段(duan)方法(fa)生(sheng)成一個新的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu),該分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu)以新的(de)(de)(de)(de)(de)查(cha)詢(xun)操(cao)作(zuo)包(bao)(bao)含(han)的(de)(de)(de)(de)(de)連(lian)(lian)(lian)接(jie)(jie)屬性(xing)為劃分(fen)(fen)(fen)(fen)依(yi)(yi)據(ju)(ju),并(bing)且(qie)初始(shi)狀態為空。隨著查(cha)詢(xun)操(cao)作(zuo)的(de)(de)(de)(de)(de)進(jin)(jin)行,這種(zhong)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)算(suan)法(fa)將隨機地(di)從舊的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu)中選取適(shi)(shi)當(dang)規模(mo)的(de)(de)(de)(de)(de)數(shu)(shu)據(ju)(ju)進(jin)(jin)行重分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge),并(bing)逐漸(jian)地(di)將數(shu)(shu)據(ju)(ju)移動到新的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu)中,直至新的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)樹(shu)中包(bao)(bao)含(han)的(de)(de)(de)(de)(de)數(shu)(shu)據(ju)(ju)滿足新的(de)(de)(de)(de)(de)查(cha)詢(xun)操(cao)作(zuo)。這種(zhong)基(ji)于雙(shuang)(shuang)階段(duan)的(de)(de)(de)(de)(de)自適(shi)(shi)應(ying)(ying)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge)算(suan)法(fa)可(ke)以有效(xiao)地(di)對(dui)(dui)數(shu)(shu)據(ju)(ju)進(jin)(jin)行基(ji)于連(lian)(lian)(lian)接(jie)(jie)屬性(xing)的(de)(de)(de)(de)(de)分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge),并(bing)且(qie)避免了(le)出現(xian)包(bao)(bao)含(han)新的(de)(de)(de)(de)(de)連(lian)(lian)(lian)接(jie)(jie)屬性(xing)的(de)(de)(de)(de)(de)查(cha)詢(xun)操(cao)作(zuo)時(shi),全部數(shu)(shu)據(ju)(ju)的(de)(de)(de)(de)(de)重新分(fen)(fen)(fen)(fen)割(ge)(ge)(ge)(ge)(ge)(ge)(ge),實現(xian)了(le)自適(shi)(shi)應(ying)(ying)。
然而,這種自適(shi)應分割(ge)算法主要(yao)針對兩表(biao)(biao)(biao)(biao)連接的(de)情況,如將其應用于多(duo)表(biao)(biao)(biao)(biao)連接上,則需要(yao)首先執行前兩個(ge)表(biao)(biao)(biao)(biao)的(de)連接操作(zuo),再(zai)把連接的(de)結果看(kan)作(zuo)一個(ge)新(xin)的(de)表(biao)(biao)(biao)(biao),和下一個(ge)表(biao)(biao)(biao)(biao)進行連接,以此類推,直(zhi)到完成(cheng)所有表(biao)(biao)(biao)(biao)的(de)連接。顯然這會產生大量的(de)中間(jian)結果,造成(cheng)很大的(de)i/o開銷,是(shi)一種效率極低的(de)方(fang)法,而在實際應用中,多(duo)表(biao)(biao)(biao)(biao)連接又(you)是(shi)非常(chang)常(chang)見的(de)操作(zuo)。
技術實現要素:
本發明要解決的(de)技術問題是,針(zhen)對(dui)現有的(de)數據分割方法(fa)(fa)在應用于對(dui)多(duo)表進行連(lian)接時效率低的(de)缺陷,提供一種基于流水(shui)線的(de)分布(bu)式(shi)多(duo)表連(lian)接方法(fa)(fa)及系統。
為(wei)了解決上述技術問題,本發明提供(gong)了一種基于流水線的(de)分布(bu)式多表連(lian)接方(fang)法,該方(fang)法包括并行執行的(de)以下(xia)步驟:
a、映射處(chu)理單(dan)元(yuan)(yuan)從分布(bu)式文(wen)件系統讀取待(dai)連(lian)接表,將所述待(dai)連(lian)接表進行映射處(chu)理后(hou)得到對應的(de)數(shu)據(ju)塊,并以每(mei)兩個待(dai)連(lian)接表為一組(zu),將第一組(zu)表的(de)數(shu)據(ju)塊輸(shu)出至第一規(gui)(gui)約(yue)(yue)處(chu)理單(dan)元(yuan)(yuan),將第二組(zu)至末尾組(zu)表的(de)數(shu)據(ju)塊按序(xu)輸(shu)出至第二規(gui)(gui)約(yue)(yue)處(chu)理單(dan)元(yuan)(yuan);
b、第二(er)規約(yue)處(chu)理(li)單元按序讀取第二(er)組(zu)至末尾(wei)組(zu)表的數據(ju)(ju)塊(kuai),并對每組(zu)表的兩(liang)個數據(ju)(ju)塊(kuai)進(jin)行哈希連接(jie)得到每組(zu)表的兩(liang)表連接(jie)結果(guo);
c、第(di)一(yi)規(gui)約(yue)(yue)處(chu)理(li)(li)單元讀取第(di)一(yi)組(zu)表(biao)(biao)的(de)兩個數據塊進行(xing)哈(ha)希(xi)連(lian)(lian)接后(hou)作為初始(shi)的(de)多(duo)(duo)表(biao)(biao)連(lian)(lian)接結(jie)(jie)(jie)果(guo)(guo)(guo),并在等待第(di)二規(gui)約(yue)(yue)處(chu)理(li)(li)單元完成(cheng)一(yi)組(zu)表(biao)(biao)的(de)哈(ha)希(xi)連(lian)(lian)接后(hou),將(jiang)當前的(de)多(duo)(duo)表(biao)(biao)連(lian)(lian)接結(jie)(jie)(jie)果(guo)(guo)(guo)與(yu)該組(zu)表(biao)(biao)的(de)兩表(biao)(biao)連(lian)(lian)接結(jie)(jie)(jie)果(guo)(guo)(guo)進行(xing)順(shun)序連(lian)(lian)接以更新多(duo)(duo)表(biao)(biao)連(lian)(lian)接結(jie)(jie)(jie)果(guo)(guo)(guo),直至(zhi)所有組(zu)表(biao)(biao)完成(cheng)連(lian)(lian)接后(hou)輸出多(duo)(duo)表(biao)(biao)連(lian)(lian)接結(jie)(jie)(jie)果(guo)(guo)(guo)。
在根據本發(fa)明所(suo)述的基于流水線的分(fen)布式多表連接方法(fa)中,所(suo)述步驟(zou)a包(bao)括以下步驟(zou):
在t1時刻(ke),映射處(chu)(chu)理單(dan)(dan)(dan)元讀取待連接(jie)表t1至(zhi)t4,對(dui)所(suo)述(shu)待連接(jie)表t1至(zhi)t4進行映射處(chu)(chu)理后得到對(dui)應的數(shu)據塊(kuai)b1至(zhi)b4,并將第一組表的數(shu)據塊(kuai)b1和(he)b2輸出至(zhi)所(suo)述(shu)第一規約處(chu)(chu)理單(dan)(dan)(dan)元,將第二(er)組表的數(shu)據塊(kuai)b3和(he)b4輸出至(zhi)所(suo)述(shu)第二(er)規約處(chu)(chu)理單(dan)(dan)(dan)元;
在(zai)ti時刻,其(qi)中i=2,3,…,j-1,j為待連(lian)接(jie)表的組數;映(ying)射(she)(she)處理(li)單元讀(du)取待連(lian)接(jie)表t2i+1和t2i+2,對(dui)所述待連(lian)接(jie)表t2i+1和t2i+2進行映(ying)射(she)(she)處理(li)后得到第(di)i+1組表的數據塊b2i+1至(zhi)b2i+2,并輸出至(zhi)第(di)二規約處理(li)單元。
在根據本(ben)發明所(suo)(suo)述的基于流水線的分布式(shi)多表(biao)連接(jie)方法中,所(suo)(suo)述步驟(zou)b包括以下步驟(zou):在ti時刻,其中i=2,3,…,j;第二(er)規約(yue)處理單元(yuan)讀取第i組(zu)表(biao)的數據塊b2i-1至(zhi)b2i進(jin)行哈希連接(jie)后得(de)到第i組(zu)表(biao)的兩(liang)表(biao)連接(jie)結果hi。
在根據本發明所述的基于流水線的分(fen)布式多表連接方法中,所述步驟c包括以(yi)下步驟:
在(zai)t2時刻,第(di)(di)一規約(yue)處(chu)理單(dan)元(yuan)讀取第(di)(di)一組(zu)表(biao)的(de)數據塊(kuai)b1至(zhi)b2進(jin)行哈希(xi)連(lian)接(jie)后作(zuo)為初始的(de)多表(biao)連(lian)接(jie)結果s1;
在ti時(shi)刻,其(qi)中i=3,4,…,j+1;第(di)(di)一規約處(chu)理單(dan)元(yuan)在等待第(di)(di)二規約處(chu)理單(dan)元(yuan)完成第(di)(di)i-1組(zu)表(biao)(biao)的(de)哈(ha)希連接(jie)(jie)后,將當前的(de)多表(biao)(biao)連接(jie)(jie)結果si-2與第(di)(di)i-1組(zu)表(biao)(biao)的(de)兩表(biao)(biao)連接(jie)(jie)結果hi-1進(jin)行順序連接(jie)(jie)得到更(geng)新的(de)多表(biao)(biao)連接(jie)(jie)結果si-1。
在根據本發明所述的基于流水線的分布式多表連接方法中,所述步驟a中還包括:在判斷待連接表的總數n為奇數時,在待連接表中增加一個空表,且待連接表的組數
在根據本發明(ming)所述的(de)基(ji)于流水線的(de)分布式多表連接方法中,所述步(bu)驟a的(de)映射(she)處理為自適應的(de)雙階(jie)段分割(ge)。
在根據本發(fa)明所述的(de)基于流水(shui)線(xian)的(de)分(fen)(fen)布式(shi)多表連(lian)(lian)接方法中,所述自適應的(de)雙階段分(fen)(fen)割(ge)包括:在第一階段依據連(lian)(lian)接屬性對頂(ding)層數據進行(xing)分(fen)(fen)割(ge);在第二階段依據數據規模和規約器的(de)個(ge)數對底層數據進行(xing)分(fen)(fen)割(ge)。
本發(fa)明還提供(gong)了一(yi)種基于流水線的分(fen)布式多表連接系統,包括:
映射處理單(dan)元,用于(yu)從分布式(shi)文(wen)件系統(tong)讀取待(dai)連接(jie)表,將(jiang)(jiang)所述待(dai)連接(jie)表進行(xing)映射處理后得到對應的(de)數據(ju)塊,并以每兩個待(dai)連接(jie)表為一(yi)組(zu),將(jiang)(jiang)第(di)一(yi)組(zu)表的(de)數據(ju)塊輸出至(zhi)第(di)一(yi)規約處理單(dan)元,將(jiang)(jiang)第(di)二組(zu)至(zhi)末尾組(zu)表的(de)數據(ju)塊按序輸出至(zhi)第(di)二規約處理單(dan)元;
第二(er)規約(yue)處理(li)單元,用于按(an)序讀取所述第二(er)組(zu)至(zhi)末尾組(zu)表(biao)(biao)的數據塊,并對(dui)每(mei)組(zu)表(biao)(biao)的兩個(ge)數據塊進行哈希(xi)連(lian)接得到每(mei)組(zu)表(biao)(biao)的兩表(biao)(biao)連(lian)接結果;
第一規約(yue)處理(li)單元,用于讀取第一組(zu)表(biao)的兩個數據塊進(jin)行哈(ha)希連(lian)(lian)接(jie)(jie)后(hou)作為(wei)初始的多表(biao)連(lian)(lian)接(jie)(jie)結果(guo),并(bing)在等待(dai)第二(er)規約(yue)處理(li)單元完成(cheng)一組(zu)表(biao)的哈(ha)希連(lian)(lian)接(jie)(jie)后(hou),將當前的多表(biao)連(lian)(lian)接(jie)(jie)結果(guo)與(yu)該(gai)組(zu)表(biao)的兩表(biao)連(lian)(lian)接(jie)(jie)結果(guo)進(jin)行順序連(lian)(lian)接(jie)(jie)以(yi)更(geng)新多表(biao)連(lian)(lian)接(jie)(jie)結果(guo),直至所有組(zu)表(biao)完成(cheng)連(lian)(lian)接(jie)(jie)后(hou)輸(shu)出(chu)多表(biao)連(lian)(lian)接(jie)(jie)結果(guo)。
在根據本發明所述的基于流水線的分布式多表連接系統中,所述映射處理單元還在判斷待連接表的總數n為奇數時,在待連接表中增加一個空表,則待連接表的組數
在根據本(ben)發明(ming)所(suo)述(shu)的基(ji)于(yu)流水線的分(fen)(fen)布(bu)式多表連接系統(tong)中,所(suo)述(shu)映(ying)射(she)處理單元(yuan)執行的映(ying)射(she)處理為自適應(ying)的雙階段分(fen)(fen)割。
實(shi)施本發明的(de)(de)基(ji)于流(liu)水(shui)線的(de)(de)分布式多表(biao)連接(jie)方法及系統,具有以下有益效(xiao)(xiao)果:本發明通過并行(xing)執行(xing)的(de)(de)流(liu)水(shui)線實(shi)現(xian)多表(biao)連接(jie),采(cai)用調度器對流(liu)水(shui)線中的(de)(de)多個任務(wu)進(jin)行(xing)有序、高(gao)效(xiao)(xiao)的(de)(de)調度,避免了兩(liang)兩(liang)連接(jie)中產(chan)生過多中間結果、i/o開銷過大的(de)(de)情(qing)況,可(ke)以快速(su)高(gao)效(xiao)(xiao)地(di)實(shi)現(xian)多個表(biao)的(de)(de)連接(jie)。
附圖說明
圖(tu)1為根(gen)據(ju)本(ben)發明的(de)基于(yu)流水線(xian)的(de)分布式多(duo)表(biao)連接(jie)系統的(de)結(jie)構圖(tu);
圖(tu)2為根(gen)據本發明的基于流水線的分(fen)布(bu)式多表連接方法(fa)的任(ren)務流水線圖(tu)。
具體實施方式
為使本(ben)發(fa)明(ming)實(shi)(shi)施(shi)(shi)例(li)的(de)(de)目(mu)的(de)(de)、技術(shu)方案和優(you)點更加清(qing)(qing)楚,下面將結合(he)本(ben)發(fa)明(ming)實(shi)(shi)施(shi)(shi)例(li)中的(de)(de)附(fu)圖,對本(ben)發(fa)明(ming)實(shi)(shi)施(shi)(shi)例(li)中的(de)(de)技術(shu)方案進行清(qing)(qing)楚、完整地描述,顯然(ran),所描述的(de)(de)實(shi)(shi)施(shi)(shi)例(li)是本(ben)發(fa)明(ming)的(de)(de)一部分實(shi)(shi)施(shi)(shi)例(li),而不是全部的(de)(de)實(shi)(shi)施(shi)(shi)例(li)。基(ji)于(yu)本(ben)發(fa)明(ming)中的(de)(de)實(shi)(shi)施(shi)(shi)例(li),本(ben)領域(yu)普通技術(shu)人員在沒(mei)有做出創造性勞動的(de)(de)前(qian)提下所獲(huo)得(de)的(de)(de)所有其(qi)他實(shi)(shi)施(shi)(shi)例(li),都(dou)屬(shu)于(yu)本(ben)發(fa)明(ming)保護的(de)(de)范圍(wei)。
本發(fa)明提供(gong)了一種基于流(liu)水線的分布式多表連(lian)接方(fang)法,通(tong)過(guo)并(bing)行執行兩條流(liu)水線,既實現(xian)了查(cha)詢(xun)操作時的自(zi)適應(ying)分割,又能快(kuai)速高效(xiao)的完成。
請參閱圖(tu)(tu)1,為根(gen)據(ju)本發明的(de)(de)(de)(de)基于流水線(xian)的(de)(de)(de)(de)分(fen)布(bu)式(shi)多表連接系(xi)統(tong)的(de)(de)(de)(de)結構圖(tu)(tu)。mapreduce(映(ying)射規(gui)(gui)約(yue)(yue))是現有應(ying)(ying)用于大規(gui)(gui)模(mo)數(shu)(shu)據(ju)處(chu)(chu)理(li)(li)(li)(li)的(de)(de)(de)(de)一(yi)種系(xi)統(tong)架構,至少(shao)包括映(ying)射處(chu)(chu)理(li)(li)(li)(li)(map)和(he)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)(reduce)。該基于流水線(xian)的(de)(de)(de)(de)分(fen)布(bu)式(shi)多表連接系(xi)統(tong)至少(shao)包括:映(ying)射處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)map、第一(yi)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r1和(he)第二(er)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r2。其中映(ying)射處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)map用于從分(fen)布(bu)式(shi)文件系(xi)統(tong)hdfs讀(du)取初始數(shu)(shu)據(ju),并(bing)(bing)進(jin)行(xing)映(ying)射處(chu)(chu)理(li)(li)(li)(li)后(hou),產生中間(jian)數(shu)(shu)據(ju)存入(ru)隨機(ji)存儲器(qi)(ram),隨后(hou)通過合(he)并(bing)(bing)(combine)和(he)分(fen)區(qu)(partitioner),輸(shu)出中間(jian)結果(guo)至對(dui)應(ying)(ying)規(gui)(gui)約(yue)(yue)分(fen)區(qu)的(de)(de)(de)(de)對(dui)應(ying)(ying)緩沖區(qu),如圖(tu)(tu)1中的(de)(de)(de)(de)d1和(he)d2。第一(yi)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r1和(he)第二(er)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r2分(fen)別從各自對(dui)應(ying)(ying)的(de)(de)(de)(de)分(fen)區(qu)讀(du)取數(shu)(shu)據(ju)并(bing)(bing)完成規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)。本發明中的(de)(de)(de)(de)映(ying)射處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)map、第一(yi)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r1和(he)第二(er)規(gui)(gui)約(yue)(yue)處(chu)(chu)理(li)(li)(li)(li)單(dan)(dan)(dan)元(yuan)r2均可以由各自的(de)(de)(de)(de)機(ji)器(qi)集群實現,分(fen)別稱為映(ying)射機(ji)器(qi)群、第一(yi)規(gui)(gui)約(yue)(yue)機(ji)器(qi)群和(he)第二(er)規(gui)(gui)約(yue)(yue)機(ji)器(qi)群。
本發明第一(yi)(yi)方面,提供了一(yi)(yi)種(zhong)基于(yu)流(liu)水線的分布(bu)式多表連(lian)接方法。主(zhu)要包括并行(xing)執行(xing)的以(yi)下步(bu)驟:
a、映射處(chu)(chu)理(li)單元(yuan)map從分(fen)(fen)布(bu)式文(wen)件系統讀取(qu)待(dai)連(lian)接表(biao)(biao)(biao),將(jiang)待(dai)連(lian)接表(biao)(biao)(biao)進(jin)行映射處(chu)(chu)理(li)后(hou)得到(dao)對(dui)(dui)應(ying)的(de)(de)數(shu)(shu)(shu)據(ju)(ju)塊,并以每兩個(ge)待(dai)連(lian)接表(biao)(biao)(biao)為一(yi)(yi)組(zu),將(jiang)第(di)一(yi)(yi)組(zu)表(biao)(biao)(biao)的(de)(de)數(shu)(shu)(shu)據(ju)(ju)塊輸(shu)出(chu)至(zhi)第(di)一(yi)(yi)規約(yue)處(chu)(chu)理(li)單元(yuan)r1,將(jiang)第(di)二組(zu)至(zhi)末尾組(zu)表(biao)(biao)(biao)的(de)(de)數(shu)(shu)(shu)據(ju)(ju)塊按(an)序輸(shu)出(chu)至(zhi)第(di)二規約(yue)處(chu)(chu)理(li)單元(yuan)r2。該(gai)(gai)步驟中映射處(chu)(chu)理(li)為,所述步驟a的(de)(de)映射處(chu)(chu)理(li)為自適(shi)應(ying)的(de)(de)雙階(jie)(jie)段(duan)(duan)分(fen)(fen)割(ge)。該(gai)(gai)自適(shi)應(ying)的(de)(de)雙階(jie)(jie)段(duan)(duan)分(fen)(fen)割(ge)包括:首(shou)先,在第(di)一(yi)(yi)階(jie)(jie)段(duan)(duan)依據(ju)(ju)連(lian)接屬性對(dui)(dui)頂層數(shu)(shu)(shu)據(ju)(ju)進(jin)行分(fen)(fen)割(ge);其次,在第(di)二階(jie)(jie)段(duan)(duan)依據(ju)(ju)數(shu)(shu)(shu)據(ju)(ju)規模和規約(yue)(reduce)器的(de)(de)個(ge)數(shu)(shu)(shu)對(dui)(dui)底層數(shu)(shu)(shu)據(ju)(ju)進(jin)行進(jin)一(yi)(yi)步的(de)(de)分(fen)(fen)割(ge)。這樣的(de)(de)分(fen)(fen)割(ge)算法(fa)保證了每一(yi)(yi)個(ge)分(fen)(fen)割(ge)樹都包含單一(yi)(yi)的(de)(de)連(lian)接屬性。當查(cha)詢操(cao)(cao)作中出(chu)現新(xin)(xin)的(de)(de)連(lian)接屬性時,以同樣的(de)(de)雙階(jie)(jie)段(duan)(duan)方法(fa)生成(cheng)一(yi)(yi)個(ge)包含新(xin)(xin)連(lian)接屬性的(de)(de)分(fen)(fen)割(ge)樹,隨著查(cha)詢操(cao)(cao)作的(de)(de)進(jin)行隨機(ji)地從舊的(de)(de)分(fen)(fen)割(ge)樹中選取(qu)適(shi)當規模的(de)(de)數(shu)(shu)(shu)據(ju)(ju)進(jin)行重分(fen)(fen)割(ge),并逐(zhu)漸(jian)地將(jiang)數(shu)(shu)(shu)據(ju)(ju)移動到(dao)新(xin)(xin)的(de)(de)分(fen)(fen)割(ge)樹中,直至(zhi)新(xin)(xin)的(de)(de)分(fen)(fen)割(ge)樹中包含的(de)(de)數(shu)(shu)(shu)據(ju)(ju)滿足新(xin)(xin)的(de)(de)查(cha)詢操(cao)(cao)作。
假設讀取的待連接表為t1、t2、t3、t4……tn,n為待連接表的總數,將待連接表以兩個為一組劃分為j組表。在本發明的一種優選實施方式中,在向分布式文件系統輸入待連接表t1至tn時,便檢測如n是否為奇數,如果是則增加一個空表。在本發明的另一種優選實施方式中,步驟a在分組時還包括以下步驟:在判斷待連接表的總數n為奇數時,在待連接表中增加一個空表,則待連接表的組數
在t1時刻,映射處(chu)(chu)理(li)單元(yuan)map讀取(qu)待連(lian)接表(biao)t1至(zhi)t4,對(dui)待連(lian)接表(biao)t1至(zhi)t4進行自適應的雙階段分割后得(de)到對(dui)應的數(shu)據(ju)塊b1至(zhi)b4,并將(jiang)第一組表(biao)的數(shu)據(ju)塊b1和(he)b2輸出(chu)至(zhi)第一規(gui)約處(chu)(chu)理(li)單元(yuan)r1,將(jiang)第二(er)(er)組表(biao)的數(shu)據(ju)塊b3和(he)b4輸出(chu)至(zhi)所(suo)述第二(er)(er)規(gui)約處(chu)(chu)理(li)單元(yuan)r2。
在ti時刻,其中i=2,3,…,j-1,j為待連(lian)接(jie)表(biao)的組(zu)數;映射處(chu)理單元(yuan)map讀取待連(lian)接(jie)表(biao)t2i+1和t2i+2,對所述待連(lian)接(jie)表(biao)t2i+1和t2i+2進(jin)行映射處(chu)理后得到第i+1組(zu)表(biao)的數據塊b2i+1至(zhi)b2i+2,并輸(shu)出至(zhi)第二規約處(chu)理單元(yuan)r2。
b、第二規約處理單元r2按序讀取第二組(zu)至(zhi)末(mo)尾組(zu)表的(de)(de)數據(ju)(ju)塊,并對每(mei)組(zu)表的(de)(de)兩個數據(ju)(ju)塊進(jin)行哈希連(lian)接得到每(mei)組(zu)表的(de)(de)兩表連(lian)接結果。
該步(bu)驟b包括分時執行的以(yi)下步(bu)驟:
在ti時刻,其(qi)中i=2,3,…,j;第(di)二規約(yue)處理單元r2讀取第(di)i組(zu)表的(de)數據塊b2i-1至b2i進行哈希連接(jie)后(hou)得到第(di)i組(zu)表的(de)兩表連接(jie)結果(guo)hi。
c、第一(yi)規約處(chu)理(li)(li)單元(yuan)r1讀取第一(yi)組(zu)(zu)表的兩個數據塊進(jin)行哈(ha)希連(lian)(lian)(lian)(lian)接(jie)后(hou)作為初始的多(duo)(duo)表連(lian)(lian)(lian)(lian)接(jie)結果(guo)(guo)(guo),并(bing)在等待第二(er)規約處(chu)理(li)(li)單元(yuan)r2完成一(yi)組(zu)(zu)表的哈(ha)希連(lian)(lian)(lian)(lian)接(jie)后(hou),將當前(qian)的多(duo)(duo)表連(lian)(lian)(lian)(lian)接(jie)結果(guo)(guo)(guo)與該(gai)組(zu)(zu)表的兩表連(lian)(lian)(lian)(lian)接(jie)結果(guo)(guo)(guo)進(jin)行順序連(lian)(lian)(lian)(lian)接(jie)以更(geng)新多(duo)(duo)表連(lian)(lian)(lian)(lian)接(jie)結果(guo)(guo)(guo),直至所有(you)組(zu)(zu)表完成連(lian)(lian)(lian)(lian)接(jie)后(hou)輸(shu)出多(duo)(duo)表連(lian)(lian)(lian)(lian)接(jie)結果(guo)(guo)(guo)。
該步驟c包括(kuo)分時執(zhi)行的以下步驟:
在(zai)t2時(shi)刻,第一(yi)規約處理單元r1讀取(qu)第一(yi)組表(biao)的數據塊(kuai)b1至(zhi)b2進行哈希連接(jie)后作為初始的多(duo)表(biao)連接(jie)結果s1。
在ti時刻,其中i=3,4,…,j+1;第一規(gui)約(yue)處(chu)理單(dan)元(yuan)r1在等待第二(er)規(gui)約(yue)處(chu)理單(dan)元(yuan)r2完成第i-1組表(biao)的哈(ha)希連(lian)(lian)(lian)接(jie)(jie)后,將當前的多(duo)(duo)表(biao)連(lian)(lian)(lian)接(jie)(jie)結(jie)果(guo)si-2與第i-1組表(biao)的兩表(biao)連(lian)(lian)(lian)接(jie)(jie)結(jie)果(guo)hi-1進行順序(xu)連(lian)(lian)(lian)接(jie)(jie)得到更新(xin)的多(duo)(duo)表(biao)連(lian)(lian)(lian)接(jie)(jie)結(jie)果(guo)si-1。該順序(xu)連(lian)(lian)(lian)接(jie)(jie)是指先讀取待連(lian)(lian)(lian)接(jie)(jie)表(biao)中的所有key值,再(zai)選擇key值相同的進行連(lian)(lian)(lian)接(jie)(jie)操作。
因此,本(ben)發(fa)(fa)明通過雙階(jie)段的方法對(dui)數據(ju)進(jin)行(xing)(xing)(xing)動態的劃分,并(bing)且(qie)并(bing)行(xing)(xing)(xing)執行(xing)(xing)(xing)兩條mapreduce任(ren)(ren)務流水(shui)(shui)線,采用調(diao)度器對(dui)流水(shui)(shui)線中的多個mapreduce任(ren)(ren)務進(jin)行(xing)(xing)(xing)有序、高(gao)效(xiao)的調(diao)度,最終實現自適(shi)應的多表連接。本(ben)發(fa)(fa)明的任(ren)(ren)務流水(shui)(shui)線圖如圖2所示,包括以下步驟:
步驟一:在t1時刻,映射處理單(dan)元map從hdfs上讀取待連接表t1、t2、t3、t4,在t1時間段內(nei)完成(cheng)對這四個表的自適應的雙階段分割,得(de)到對應的數(shu)據塊(kuai)b1、b2、b3、b4,并(bing)將第(di)一組表的數(shu)據塊(kuai)b1和b2輸(shu)出至所述第(di)一規約(yue)處理單(dan)元r1,將第(di)二組表的數(shu)據塊(kuai)b3和b4輸(shu)出至所述第(di)二規約(yue)處理單(dan)元r2。
步(bu)驟二(er):在t2時刻,映射(she)處(chu)理單(dan)元(yuan)map完(wan)成(cheng)對待連(lian)(lian)接(jie)表t5、t6的(de)雙階(jie)段(duan)分割(ge)得(de)到(dao)(dao)數(shu)據(ju)塊b5、b6,同時第(di)(di)一規約處(chu)理單(dan)元(yuan)r1完(wan)成(cheng)對數(shu)據(ju)塊b1、b2的(de)哈希連(lian)(lian)接(jie),得(de)到(dao)(dao)第(di)(di)1組表的(de)兩表連(lian)(lian)接(jie)結果(guo)作為初級的(de)多表連(lian)(lian)接(jie)結果(guo)s1;第(di)(di)二(er)規約處(chu)理單(dan)元(yuan)r2完(wan)成(cheng)對數(shu)據(ju)塊b3、b4的(de)哈希連(lian)(lian)接(jie)操作,得(de)到(dao)(dao)第(di)(di)2組表的(de)兩表連(lian)(lian)接(jie)結果(guo)h2。
步驟四:在t3時刻,映(ying)射處理(li)單元map完成(cheng)對(dui)待連(lian)(lian)接表(biao)(biao)(biao)t7、t8的雙階段分割得(de)到數據塊b7、b8;同(tong)時第一(yi)規(gui)約(yue)處理(li)單元r1將(jiang)初級的多表(biao)(biao)(biao)連(lian)(lian)接結(jie)(jie)果s1和兩表(biao)(biao)(biao)連(lian)(lian)接結(jie)(jie)果h2進行順序連(lian)(lian)接后(hou)得(de)到多表(biao)(biao)(biao)連(lian)(lian)接結(jie)(jie)果s2;同(tong)時在第二(er)規(gui)約(yue)處理(li)單元r2上完成(cheng)對(dui)b5、b6的哈(ha)希連(lian)(lian)接,得(de)到第3組表(biao)(biao)(biao)的兩表(biao)(biao)(biao)連(lian)(lian)接結(jie)(jie)果h3。
步驟(zou)五:在t4時刻,映射處理(li)單(dan)元map完(wan)成對待連(lian)接(jie)(jie)表(biao)t9、t10的(de)雙階段分割得(de)到數據(ju)塊(kuai)b9、b10;同(tong)時第(di)一規約處理(li)單(dan)元r1完(wan)成s2和(he)h3的(de)順序連(lian)接(jie)(jie)得(de)到多(duo)表(biao)連(lian)接(jie)(jie)結果s3;同(tong)時第(di)二(er)規約處理(li)單(dan)元r2上完(wan)成對b7、b8的(de)哈希(xi)連(lian)接(jie)(jie),得(de)到第(di)4組表(biao)的(de)兩(liang)表(biao)連(lian)接(jie)(jie)結果h4。
步驟六:以此類推(tui),流水線一直運(yun)行下去,直到(dao)完成所有(you)表的連接。
也就是說,為了控(kong)制(zhi)(zhi)集群中機器的(de)(de)(de)(de)(de)任務(wu)分配,本發明引入(ru)一個調(diao)(diao)度(du)(du)(du)(du)器來(lai)控(kong)制(zhi)(zhi)流水線上各個操作執(zhi)(zhi)(zhi)行的(de)(de)(de)(de)(de)時間點(dian),該調(diao)(diao)度(du)(du)(du)(du)器維護著(zhu)一個記(ji)(ji)錄(lu)集群中所有(you)機器信息的(de)(de)(de)(de)(de)調(diao)(diao)度(du)(du)(du)(du)表,該調(diao)(diao)度(du)(du)(du)(du)表記(ji)(ji)錄(lu)著(zhu)機器執(zhi)(zhi)(zhi)行何種任務(wu)以及機器是否忙碌(liu)等信息。映射處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)執(zhi)(zhi)(zhi)行的(de)(de)(de)(de)(de)是所有(you)表的(de)(de)(de)(de)(de)雙(shuang)階段分割操作,當(dang)映射處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)執(zhi)(zhi)(zhi)行完(wan)(wan)一組(zu)表的(de)(de)(de)(de)(de)分割操作后,調(diao)(diao)度(du)(du)(du)(du)器按順(shun)(shun)序(xu)(xu)把(ba)下一組(zu)表發送給它(ta)繼續(xu)(xu)執(zhi)(zhi)(zhi)行。第(di)一規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r1執(zhi)(zhi)(zhi)行的(de)(de)(de)(de)(de)是b1、b2數據(ju)塊的(de)(de)(de)(de)(de)哈(ha)希(xi)連(lian)(lian)接(jie)和所有(you)表的(de)(de)(de)(de)(de)順(shun)(shun)序(xu)(xu)連(lian)(lian)接(jie)操作。當(dang)第(di)一規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r1完(wan)(wan)成(cheng)b1、b2的(de)(de)(de)(de)(de)哈(ha)希(xi)連(lian)(lian)接(jie)后,它(ta)向調(diao)(diao)度(du)(du)(du)(du)器詢問第(di)二規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r2上b3、b4的(de)(de)(de)(de)(de)哈(ha)希(xi)連(lian)(lian)接(jie)是否也已完(wan)(wan)成(cheng)連(lian)(lian)接(jie),若完(wan)(wan)成(cheng)則第(di)一規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r2接(jie)著(zhu)執(zhi)(zhi)(zhi)行s1和h2的(de)(de)(de)(de)(de)順(shun)(shun)序(xu)(xu)連(lian)(lian)接(jie),否則進入(ru)等待狀態,并持(chi)續(xu)(xu)向調(diao)(diao)度(du)(du)(du)(du)器發起詢問,直(zhi)到(dao)第(di)二規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r2完(wan)(wan)成(cheng)連(lian)(lian)接(jie)。第(di)二規(gui)約(yue)處(chu)理(li)(li)(li)單(dan)元(yuan)(yuan)r2執(zhi)(zhi)(zhi)行的(de)(de)(de)(de)(de)是除b1、b2外其他所有(you)表的(de)(de)(de)(de)(de)哈(ha)希(xi)連(lian)(lian)接(jie)。
本發明還(huan)相應提(ti)供了上述基(ji)于流水線的分布式多(duo)表連接(jie)系(xi)統。
其(qi)中映(ying)射處理(li)單(dan)元map從分布式(shi)文件系統讀取待連接(jie)表(biao)(biao)(biao),將待連接(jie)表(biao)(biao)(biao)進(jin)行映(ying)射處理(li)后得(de)到對應的(de)數(shu)(shu)據塊,并以每(mei)兩(liang)個(ge)待連接(jie)表(biao)(biao)(biao)為(wei)一(yi)組(zu)(zu),將第(di)一(yi)組(zu)(zu)表(biao)(biao)(biao)的(de)數(shu)(shu)據塊輸(shu)出至第(di)一(yi)規約處理(li)單(dan)元r1,將第(di)二組(zu)(zu)至末尾組(zu)(zu)表(biao)(biao)(biao)的(de)數(shu)(shu)據塊按序輸(shu)出至第(di)二規約處理(li)單(dan)元r2。該映(ying)射處理(li)單(dan)元map的(de)實現原理(li)及過程與前述方法中步驟a一(yi)致(zhi)。
第(di)二規約處理(li)單元(yuan)r2與(yu)映(ying)射處理(li)單元(yuan)map連(lian)接(jie)(jie),用于按(an)序讀取第(di)二組(zu)至末尾(wei)組(zu)表的(de)數據(ju)塊,并對每(mei)組(zu)表的(de)兩個數據(ju)塊進行哈希連(lian)接(jie)(jie)得到每(mei)組(zu)表的(de)兩表連(lian)接(jie)(jie)結果。該第(di)二規約處理(li)單元(yuan)r2的(de)實現原理(li)及過(guo)程與(yu)前述方法中步驟b一致。
第(di)一(yi)規約(yue)處(chu)理單元(yuan)(yuan)r1與(yu)映射處(chu)理單元(yuan)(yuan)map連(lian)(lian)接(jie),用于讀取第(di)一(yi)組(zu)(zu)表的(de)兩個數據塊進(jin)行哈希(xi)連(lian)(lian)接(jie)后作為(wei)初始的(de)多(duo)表連(lian)(lian)接(jie)結(jie)(jie)果(guo),并在等待第(di)二規約(yue)處(chu)理單元(yuan)(yuan)r2完成一(yi)組(zu)(zu)表的(de)哈希(xi)連(lian)(lian)接(jie)后,將當前的(de)多(duo)表連(lian)(lian)接(jie)結(jie)(jie)果(guo)與(yu)該組(zu)(zu)表的(de)兩表連(lian)(lian)接(jie)結(jie)(jie)果(guo)進(jin)行順序連(lian)(lian)接(jie)以(yi)更新(xin)多(duo)表連(lian)(lian)接(jie)結(jie)(jie)果(guo),直至所有組(zu)(zu)表完成連(lian)(lian)接(jie)后輸出多(duo)表連(lian)(lian)接(jie)結(jie)(jie)果(guo)。該第(di)一(yi)規約(yue)處(chu)理單元(yuan)(yuan)r1的(de)實現原理及過(guo)程與(yu)前述方法中(zhong)步驟(zou)c一(yi)致。
在(zai)本發明優選地(di)實(shi)(shi)施方式中,該系(xi)統中還可以包括作(zuo)業(ye)調(diao)度(du)(du)(du)單元(yuan),用(yong)于(yu)存儲調(diao)度(du)(du)(du)表(biao),并(bing)根據該調(diao)度(du)(du)(du)表(biao)發送指令控制系(xi)統中其(qi)它單元(yuan)的(de)(de)(de)任務調(diao)度(du)(du)(du),實(shi)(shi)現調(diao)度(du)(du)(du)器的(de)(de)(de)功能。相應地(di),第二(er)規(gui)約處理(li)單元(yuan)r2在(zai)對每組表(biao)的(de)(de)(de)兩個(ge)(ge)數據塊進行哈希(xi)連(lian)(lian)接(jie)(jie)(jie)(jie)得到每組表(biao)的(de)(de)(de)兩表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo)后(hou)返回完成信息給作(zuo)業(ye)調(diao)度(du)(du)(du)單元(yuan)。第一(yi)規(gui)約處理(li)單元(yuan)r1在(zai)讀取第一(yi)組表(biao)的(de)(de)(de)兩個(ge)(ge)數據塊進行哈希(xi)連(lian)(lian)接(jie)(jie)(jie)(jie)后(hou)作(zuo)為(wei)初(chu)始的(de)(de)(de)多(duo)(duo)表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo)后(hou),向作(zuo)業(ye)調(diao)度(du)(du)(du)單元(yuan)詢問第二(er)規(gui)約處理(li)單元(yuan)r2是否完成一(yi)組表(biao)的(de)(de)(de)哈希(xi)連(lian)(lian)接(jie)(jie)(jie)(jie),否則繼(ji)續等待,是則將當(dang)前的(de)(de)(de)多(duo)(duo)表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo)與該組表(biao)的(de)(de)(de)兩表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo)順(shun)序連(lian)(lian)接(jie)(jie)(jie)(jie)以更新多(duo)(duo)表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo),直至所有組表(biao)完成連(lian)(lian)接(jie)(jie)(jie)(jie)后(hou)輸(shu)出多(duo)(duo)表(biao)連(lian)(lian)接(jie)(jie)(jie)(jie)結(jie)果(guo)。
綜上所述,本(ben)發明在規約機(ji)器群中(zhong)進行(xing)(xing)的(de)(de)(de)哈希連(lian)接不同于傳統的(de)(de)(de)依據(ju)key值進行(xing)(xing)的(de)(de)(de)順序連(lian)接,而是(shi)將待連(lian)接的(de)(de)(de)數(shu)據(ju)庫bi、bi+1中(zhong)的(de)(de)(de)bi構建哈希表(biao),再將哈希表(biao)與bi+1進行(xing)(xing)連(lian)接,這將大大減少讀取磁盤(pan)的(de)(de)(de)次(ci)數(shu)。因此本(ben)發明采(cai)(cai)用流水(shui)線(xian)模型將自適(shi)應的(de)(de)(de)雙階段(duan)分割(ge)方法(fa)應用于多(duo)表(biao)連(lian)接上,通過并(bing)行(xing)(xing)執行(xing)(xing)兩(liang)條任務(wu)流水(shui)線(xian),采(cai)(cai)用調(diao)度器對(dui)流水(shui)線(xian)中(zhong)的(de)(de)(de)多(duo)個(ge)(ge)mapreduce任務(wu)進行(xing)(xing)有序、高(gao)效(xiao)的(de)(de)(de)調(diao)度,避免(mian)了兩(liang)兩(liang)連(lian)接中(zhong)產生過多(duo)中(zhong)間結果,i/o開銷(xiao)過大的(de)(de)(de)情況,可以快(kuai)速高(gao)效(xiao)地實(shi)現多(duo)個(ge)(ge)表(biao)的(de)(de)(de)連(lian)接。并(bing)且(qie)與傳統的(de)(de)(de)依據(ju)key值或(huo)依據(ju)范(fan)圍(wei)的(de)(de)(de)分割(ge)算法(fa)相比,這種(zhong)方法(fa)既保證了每一個(ge)(ge)數(shu)據(ju)樹都有唯(wei)一的(de)(de)(de)連(lian)接屬性(xing),又具有自適(shi)應的(de)(de)(de)特(te)點。
最(zui)后應說(shuo)明的(de)(de)是:以上實(shi)(shi)施例僅用以說(shuo)明本(ben)發明的(de)(de)技(ji)(ji)(ji)術方(fang)案(an),而(er)非對(dui)其限制;盡管(guan)參照前(qian)述實(shi)(shi)施例對(dui)本(ben)發明進行了詳(xiang)細的(de)(de)說(shuo)明,本(ben)領域(yu)的(de)(de)普通技(ji)(ji)(ji)術人員應當理解:其依然可(ke)以對(dui)前(qian)述各實(shi)(shi)施例所記載的(de)(de)技(ji)(ji)(ji)術方(fang)案(an)進行修(xiu)改,或者(zhe)對(dui)其中部分技(ji)(ji)(ji)術特征進行等(deng)同(tong)替(ti)換;而(er)這(zhe)些修(xiu)改或者(zhe)替(ti)換,并不(bu)使(shi)相應技(ji)(ji)(ji)術方(fang)案(an)的(de)(de)本(ben)質脫(tuo)離(li)本(ben)發明各實(shi)(shi)施例技(ji)(ji)(ji)術方(fang)案(an)的(de)(de)精神和范圍。