国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)查詢方法及裝置制造方法

      文檔序號(hào):6514255閱讀:135來源:國知局
      一種數(shù)據(jù)查詢方法及裝置制造方法
      【專利摘要】本發(fā)明實(shí)施例公開了一種數(shù)據(jù)查詢方法及裝置,包括:接收數(shù)據(jù)查詢請(qǐng)求;確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;將數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);接收從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系;對(duì)散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移;接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。本發(fā)明能夠在MPP分布式數(shù)據(jù)庫系統(tǒng)使用左外連接或右外連接實(shí)現(xiàn)數(shù)據(jù)查詢處理時(shí),得到正確的左外連接或右外連接結(jié)果,進(jìn)而得到正確的數(shù)據(jù)查詢結(jié)果。
      【專利說明】一種數(shù)據(jù)查詢方法及裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及存儲(chǔ)技術(shù),尤其涉及一種數(shù)據(jù)查詢方法及裝置。
      【背景技術(shù)】
      [0002]目前,一般使用數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的存儲(chǔ)。當(dāng)用戶通過客戶端進(jìn)行數(shù)據(jù)查詢時(shí),客戶端將用戶輸入的查詢關(guān)鍵字發(fā)送至數(shù)據(jù)庫,數(shù)據(jù)庫根據(jù)所述查詢關(guān)鍵字進(jìn)行數(shù)據(jù)查詢,將查詢結(jié)果反饋給客戶端,再由客戶端將查詢結(jié)果顯示給用戶。
      [0003]在目前通常使用的單機(jī)版數(shù)據(jù)庫中,數(shù)據(jù)查詢時(shí)經(jīng)常使用左外連接、右外連接等處理方法,進(jìn)而以所述左外連接、右外連接等的處理結(jié)果為基礎(chǔ),確定數(shù)據(jù)查詢的結(jié)果。其中,左外連接和右外連接的處理對(duì)象是兩個(gè)表,分別稱為左表和右表,通過左外連接或右外連接可以確定兩個(gè)表之間的連接關(guān)系。其中,左外連接的結(jié)果集包含:與右表某一行滿足連接條件的左表中的所有行,與右表任意一行都不滿足連接條件的左表中的所有行。對(duì)于左表中不滿足連接條件的所有行,用空值填充來自右表的屬性。而右外連接的概念與左外連接相對(duì)稱,右外連接的結(jié)果集包含:與左表某一行滿足連接條件的右表中的所有行,與左表任意一行都不滿足連接條件的右表中的所有行。對(duì)于右表中不滿足連接條件的行,用空值填充來自左表的屬性。
      [0004]單機(jī)版數(shù)據(jù)庫中對(duì)左表和右表進(jìn)行左外連接的傳統(tǒng)方法是:根據(jù)連接屬性對(duì)左表和右表的所有數(shù)據(jù)進(jìn)行散列拆分,然后,每個(gè)散列值對(duì)應(yīng)的左表數(shù)據(jù)與右表數(shù)據(jù)分別進(jìn)行左外連接,最后把各個(gè)散列值的左外連接的結(jié)果合并到一起。
      [0005]所謂散列(Hash)是指,把任意范圍的輸入通過某個(gè)函數(shù)變換成固定范圍的輸出,或者,把任意長度的輸入通過某個(gè)函數(shù)變換成固定長度的輸出。所述輸出就是散列值,所述函數(shù)就是散列函數(shù)。散列是一種壓縮映射,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入經(jīng)過散列可能得到相同的輸出。換句話說,散列值相同是輸入相同的必要非充分條件。散列拆分是指把散列值不同的輸入分開,把散列值相同的輸入?yún)R總到一起。
      [0006]但是,隨著數(shù)據(jù)庫技術(shù)的不斷發(fā)展,基于大規(guī)模并行處理(MPP, Massive parallelprocessing)和無共享(shared-nothing)架構(gòu)的MPP分布式數(shù)據(jù)庫越來越廣泛地應(yīng)用于海量數(shù)據(jù)的存儲(chǔ)和查詢。MPP分布式數(shù)據(jù)庫相比于單機(jī)版數(shù)據(jù)庫,通過在多個(gè)節(jié)點(diǎn)上并行執(zhí)行數(shù)據(jù)導(dǎo)入、數(shù)據(jù)查詢等數(shù)據(jù)庫任務(wù),提高了數(shù)據(jù)庫的性能和可用性。
      [0007]在使用上述MPP分布式數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢時(shí),一般由主節(jié)點(diǎn)把單個(gè)數(shù)據(jù)查詢?nèi)蝿?wù)拆分成可以在多個(gè)從節(jié)點(diǎn)上并發(fā)執(zhí)行的多個(gè)小數(shù)據(jù)查詢?nèi)蝿?wù),然后把所有小數(shù)據(jù)查詢?nèi)蝿?wù)的查詢結(jié)果匯總得到最終的查詢結(jié)果。
      [0008]然而,如果MPP分布式數(shù)據(jù)庫的數(shù)據(jù)查詢中需要使用上述左外連接或右外連接,例如需要使用左外連接,那么,在數(shù)據(jù)庫接收到用戶的數(shù)據(jù)查詢請(qǐng)求時(shí),主節(jié)點(diǎn)將所述數(shù)據(jù)查詢請(qǐng)求拆分成多個(gè)包括左外連接的小數(shù)據(jù)查詢?nèi)蝿?wù),各個(gè)從節(jié)點(diǎn)分別根據(jù)所述小數(shù)據(jù)查詢?nèi)蝿?wù)進(jìn)行左外連接,然后主節(jié)點(diǎn)將各個(gè)從節(jié)點(diǎn)的左外連接結(jié)果合并將無法得到正確的左外連接結(jié)果,進(jìn)而也無法得到正確的數(shù)據(jù)查詢結(jié)果。
      【發(fā)明內(nèi)容】

      [0009]本發(fā)明實(shí)施例中提供了一種數(shù)據(jù)查詢方法及裝置,能夠在MPP分布式數(shù)據(jù)庫系統(tǒng)使用左外連接或右外連接實(shí)現(xiàn)數(shù)據(jù)查詢處理時(shí),得到正確的左外連接或右外連接結(jié)果,進(jìn)而得到正確的數(shù)據(jù)查詢結(jié)果。
      [0010]第一方面,提供一種數(shù)據(jù)查詢方法,包括:
      [0011]接收數(shù)據(jù)查詢請(qǐng)求;
      [0012]根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;
      [0013]將所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);
      [0014]接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;
      [0015]對(duì)所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);
      [0016]根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0017]接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0018]結(jié)合第一方面,在第一方面第一種可能的實(shí)現(xiàn)方式中,還包括:
      [0019]根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段;
      [0020]將所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      [0021]結(jié)合第一方面,和/或第一方面第一種可能的實(shí)現(xiàn)方式,在第一方面第二種可能的實(shí)現(xiàn)方式中,根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果包括:
      [0022]將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果;
      [0023]根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0024]結(jié)合第一方面,和/或第一方面第一種可能的實(shí)現(xiàn)方式,和/或第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第三種可能的實(shí)現(xiàn)方式中,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移包括:
      [0025]向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0026]結(jié)合第一方面,和/或第一方面第一種可能的實(shí)現(xiàn)方式,和/或第一方面第二種可能的實(shí)現(xiàn)方式,在第一方面第四種可能的實(shí)現(xiàn)方式中,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移包括:
      [0027]向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0028]第二方面,提供一種數(shù)據(jù)查詢方法,包括:
      [0029]接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息;
      [0030]對(duì)所述從節(jié)點(diǎn)本地的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件;
      [0031]將散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn);
      [0032]在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;
      [0033]將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;
      [0034]按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0035]將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0036]結(jié)合第二方面,在第二方面第一種可能的實(shí)現(xiàn)方式中,還包括:
      [0037]接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      [0038]結(jié)合第二方面,和/或第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第二種可能的實(shí)現(xiàn)方式中,在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移包括:
      [0039]接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;
      [0040]從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0041]結(jié)合第二方面,和/或第二方面第一種可能的實(shí)現(xiàn)方式,在第二方面第三種可能的實(shí)現(xiàn)方式中,在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移包括:
      [0042]接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;
      [0043]根據(jù)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0044]第三方面,提供一種數(shù)據(jù)查詢裝置,包括:
      [0045]第一接收單元,用于接收數(shù)據(jù)查詢請(qǐng)求;
      [0046]第一確定單元,用于根據(jù)所述第一接收單元接收的所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;
      [0047]第一發(fā)送單元,用于將第一確定單元確定的所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)占.
      [0048]所述第一接收單元還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;[0049]分段單元,用于對(duì)所述第一接收單元接收到的所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);
      [0050]控制單元,用于根據(jù)第一接收單元接收到的所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0051]所述第一接收單元還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0052]查詢單元,用于根據(jù)所述第一接收單元接收到的所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0053]結(jié)合第三方面,在第三方面第一種可能的實(shí)現(xiàn)方式中,所述第一確定單元還用于:根據(jù)所述第一接收單元接收的所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段;
      [0054]所述第一發(fā)送單元還用于:將所述第一確定單元確定的所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      [0055]結(jié)合第三方面,和/或第三方面第一種可能的實(shí)現(xiàn)方式,在第三方面第二種可能的實(shí)現(xiàn)方式中,查詢單元具體用于:將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果;根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0056]結(jié)合第三方面,和/或第三方面第一種可能的實(shí)現(xiàn)方式,和/或第三方面第二種可能的實(shí)現(xiàn)方式,在第三方面第三種可能的實(shí)現(xiàn)方式中,所述控制單元具體用于:
      [0057]向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0058]結(jié)合第三方面,和/或第三方面第一種可能的實(shí)現(xiàn)方式,和/或第三方面第二種可能的實(shí)現(xiàn)方式,在第三方面第四種可能的實(shí)現(xiàn)方式中,所述控制單元具體用于:
      [0059]向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0060]第四方面,提供一種數(shù)據(jù)查詢裝置,包括:
      [0061]第二接收單元,用于接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息;
      [0062]拆分單元,用于對(duì)從節(jié)點(diǎn)本地的所述第二接收單元接收到的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件;
      [0063]第二發(fā)送單元,用于將拆分單元得到的散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn);
      [0064]被控單元,用于在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;[0065]第二合并單元,用于將所述被控單元遷移后的所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;
      [0066]連接單元,用于按照散列值對(duì)第二合并單元得到的所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0067]所述第二發(fā)送單元還用于:將所述連接單元得到的散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0068]結(jié)合第四方面,在第四方面第一種可能的實(shí)現(xiàn)方式中,所述第二接收單元還用于:接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      [0069]結(jié)合第四方面,和/或第四方面第一種可能的實(shí)現(xiàn)方式,在第四方面第二種可能的實(shí)現(xiàn)方式中,所述被控單元具體用于:
      [0070]接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;
      [0071]從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0072]結(jié)合第四方面,和/或第四方面第一種可能的實(shí)現(xiàn)方式,在第四方面第三種可能的實(shí)現(xiàn)方式中,所述被控單元具體用于:
      [0073]接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;
      [0074]根據(jù)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0075]本實(shí)施例中,接收數(shù)據(jù)查詢請(qǐng)求;根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;將所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;對(duì)所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫下使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而可以根據(jù)所述左外連接或右外連接結(jié)果得到正確的數(shù)據(jù)查詢結(jié)果。
      【專利附圖】

      【附圖說明】
      [0076]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。[0077]圖I為MPP分布式數(shù)據(jù)庫的組網(wǎng)結(jié)構(gòu)實(shí)例;
      [0078]圖2為本發(fā)明數(shù)據(jù)查詢方法第一實(shí)施例示意圖;
      [0079]圖3為本發(fā)明數(shù)據(jù)查詢方法第二實(shí)施例示意圖;
      [0080]圖4為本發(fā)明數(shù)據(jù)查詢方法第三實(shí)施例示意圖;
      [0081]圖5為本發(fā)明數(shù)據(jù)查詢裝置第一實(shí)施例示意圖;
      [0082]圖6為本發(fā)明數(shù)據(jù)查詢裝置第二實(shí)施例示意圖;
      [0083]圖7為本發(fā)明主節(jié)點(diǎn)結(jié)構(gòu)示意圖;
      [0084]圖8為本發(fā)明從節(jié)點(diǎn)結(jié)構(gòu)示意圖。
      【具體實(shí)施方式】
      [0085]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0086]參見圖1,為MPP分布式數(shù)據(jù)庫的組網(wǎng)結(jié)構(gòu)實(shí)例,其中,客戶端所在的客戶端110與主節(jié)點(diǎn)120連接,主節(jié)點(diǎn)120通過以太網(wǎng)與至少I個(gè)從節(jié)點(diǎn)130連接,且從節(jié)點(diǎn)130之間也通過以太網(wǎng)連接。其中,MPP分布式數(shù)據(jù)庫中的節(jié)點(diǎn),例如主節(jié)點(diǎn)、從節(jié)點(diǎn)等,可以是一個(gè)物理設(shè)備例如個(gè)人計(jì)算機(jī)(PC)等,也可以是多個(gè)物理設(shè)備例如PC組成的局域網(wǎng)等。
      [0087]參見圖2,為本發(fā)明數(shù)據(jù)查詢方法第一實(shí)施例示意圖,該方法包括:
      [0088]步驟201 :主節(jié)點(diǎn)接收數(shù)據(jù)查詢請(qǐng)求;
      [0089]步驟202 :主節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;
      [0090]步驟203 :主節(jié)點(diǎn)將所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);
      [0091]步驟204 :主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;
      [0092]步驟205 :主節(jié)點(diǎn)對(duì)所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);
      [0093]步驟206 :主節(jié)點(diǎn)根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0094]步驟207 :主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0095]本實(shí)施例中,主節(jié)點(diǎn)根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,之后,由從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫下使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而可以根據(jù)所述左外連接或右外連接結(jié)果得到正確的數(shù)據(jù)查詢結(jié)果。
      [0096]參見圖3,為本發(fā)明數(shù)據(jù)查詢方法第二實(shí)施例示意圖,該方法包括:
      [0097]步驟301 :從節(jié)點(diǎn)接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息;
      [0098]步驟302 :從節(jié)點(diǎn)對(duì)所述從節(jié)點(diǎn)本地的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件;
      [0099]步驟303 :從節(jié)點(diǎn)將散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn);
      [0100]步驟304 :從節(jié)點(diǎn)在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;
      [0101]步驟305 :從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;
      [0102]步驟306 :從節(jié)點(diǎn)按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0103]步驟307 :從節(jié)點(diǎn)將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0104]本實(shí)施例中,從節(jié)點(diǎn)在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而從節(jié)點(diǎn)與主節(jié)點(diǎn)配合實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫中使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而能夠得到正確的數(shù)據(jù)查詢結(jié)果。
      [0105]參見圖4,為本發(fā)明數(shù)據(jù)查詢方法第三實(shí)施例示意圖,該方法包括:
      [0106]步驟401 :客戶端接收用戶輸入的查詢關(guān)鍵字,生成查詢請(qǐng)求發(fā)送至主節(jié)點(diǎn)。
      [0107]在實(shí)際應(yīng)用中,客戶端可以為用戶提供輸入查詢關(guān)鍵字的界面,在界面中為列出各種表字段名稱,每個(gè)表字段名稱后設(shè)置輸入框,由用戶在輸入框中輸入具體的字段內(nèi)容,客戶端將用戶輸入字段內(nèi)容的表字段名稱以及用戶輸入的字段內(nèi)容作為所述查詢關(guān)鍵字。
      [0108]步驟402 :主節(jié)點(diǎn)根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定進(jìn)行第一外連接,并且,需要進(jìn)行散列拆分的第一數(shù)據(jù)表和第二數(shù)據(jù)表、作為拆分依據(jù)的表字段。
      [0109]主節(jié)點(diǎn)對(duì)客戶端發(fā)送過來的數(shù)據(jù)查詢請(qǐng)求進(jìn)行解析,根據(jù)解析的結(jié)果可以確定在查詢中是使用左外連接還是右外連接;并且,根據(jù)解析的結(jié)果可以確定進(jìn)行左外連接或右外連接的數(shù)據(jù)表,也即所述第一數(shù)據(jù)表和第二數(shù)據(jù)表;并且,根據(jù)解析的結(jié)果還可以確定作為拆分依據(jù)和第一外連接依據(jù)的表字段等信息。[0110]其中,如何對(duì)數(shù)據(jù)查詢請(qǐng)求進(jìn)行解析在數(shù)據(jù)庫管理系統(tǒng)中普遍存在,這里不贅述。
      [0111]步驟403 :主節(jié)點(diǎn)將所述第一數(shù)據(jù)表、第二數(shù)據(jù)表和表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      [0112]其中,第一數(shù)據(jù)表和第二數(shù)據(jù)表的數(shù)據(jù)一般都存儲(chǔ)于各個(gè)從節(jié)點(diǎn)中,因此,所述信息中可以包括:第一數(shù)據(jù)表的標(biāo)識(shí),例如第一數(shù)據(jù)表的表名;第二數(shù)據(jù)表的標(biāo)識(shí),例如第二數(shù)據(jù)表的表名;表字段標(biāo)識(shí),例如表字段名稱;字段內(nèi)容。
      [0113]步驟404:對(duì)于每一個(gè)從節(jié)點(diǎn),從節(jié)點(diǎn)根據(jù)所述表字段對(duì)從節(jié)點(diǎn)本地的第一數(shù)據(jù)表進(jìn)行散列拆分,得到第一對(duì)應(yīng)關(guān)系,所述第一對(duì)應(yīng)關(guān)系是散列值與第一表分片文件之間的對(duì)應(yīng)關(guān)系;并且,從節(jié)點(diǎn)根據(jù)所述表字段對(duì)從節(jié)點(diǎn)本地的第二數(shù)據(jù)表進(jìn)行散列拆分,得到第二對(duì)應(yīng)關(guān)系,所述第二對(duì)應(yīng)關(guān)系是散列值與第二表分片文件之間的對(duì)應(yīng)關(guān)系。
      [0114]其中,所述第一表分片文件為第一數(shù)據(jù)表進(jìn)行散列拆分得到的表分片文件;第二表分片文件為第二數(shù)據(jù)表進(jìn)行散列拆分得到的表分片文件。其中,表分片文件一般只包含數(shù)據(jù)表的一部分?jǐn)?shù)據(jù)。
      [0115]步驟405 :對(duì)于每一個(gè)從節(jié)點(diǎn),從節(jié)點(diǎn)將所述第一對(duì)應(yīng)關(guān)系、所述第二對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn)。
      [0116]步驟406 :主節(jié)點(diǎn)對(duì)所述散列值進(jìn)行分段得到散列值段,確定每個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0117]其中,主節(jié)點(diǎn)具體如何對(duì)散列值進(jìn)行分段,這里并不限定。不同散列值段的長度可以相同或不同。
      [0118]在第一種可能的實(shí) 現(xiàn)方式中,在確定每個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)時(shí),可以按照某種預(yù)設(shè)規(guī)則為每個(gè)散列值段指定對(duì)應(yīng)的從節(jié)點(diǎn);所述預(yù)設(shè)規(guī)則可以為隨機(jī)指定、按照某種從節(jié)點(diǎn)的預(yù)設(shè)順序依次為每個(gè)散列值段指定等;例如,
      [0119]散列值劃分為散列值段I、散列值段2、散列值段3···,則可以隨機(jī)為散列值段I指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)3,為散列值段2指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)4,為散列值段3指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)7等;或者,預(yù)設(shè)從節(jié)點(diǎn)的順序?yàn)閺墓?jié)點(diǎn)I、從節(jié)點(diǎn)2、…、從節(jié)點(diǎn)η,η為自然數(shù),則可以按照該順序?yàn)樯⒘兄刀蜪指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)1,為散列值段2指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)2,為散列值段3指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)3等。
      [0120]在第二種可能的實(shí)現(xiàn)方式中,在確定每個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)時(shí),可以根據(jù)各個(gè)從節(jié)點(diǎn)發(fā)送的所述第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,盡量將包含散列值段中散列值最多的從節(jié)點(diǎn)作為散列值段對(duì)應(yīng)的從節(jié)點(diǎn),具體的實(shí)現(xiàn)方法這里不限制。例如,假設(shè)散列值劃分為散列值段I、散列值段2、散列值段3…,從節(jié)點(diǎn)I~從節(jié)點(diǎn)η中,從節(jié)點(diǎn)m (I <m<n )中包含的散列值段I中的散列值最多,則可以為散列值段I指定對(duì)應(yīng)的從節(jié)點(diǎn)為從節(jié)點(diǎn)m。
      [0121]以上確定每個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的方法僅為示例,在實(shí)際應(yīng)用中可以使用其他方法確定每個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn),本發(fā)明并不限定。
      [0122]步驟407 :主節(jié)點(diǎn)根據(jù)各個(gè)從節(jié)點(diǎn)發(fā)來的所述第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移;所述表分片文件遷移包括:將散列值段中的散列值所對(duì)應(yīng)的第一表分片文件和第二表分片文件遷移至散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中。
      [0123]在第一種可能的實(shí)現(xiàn)方式中,主節(jié)點(diǎn)控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移可以包括:[0124]主節(jié)點(diǎn)向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的第一表分片文件以及文件所在從節(jié)點(diǎn)的信息,從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的第二表分片文件以及文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述文件所在從節(jié)點(diǎn)獲取所述第一表分片文件和第二表分片文件。
      [0125]在第二種可能的實(shí)現(xiàn)方式中,主節(jié)點(diǎn)控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移可以包括:
      [0126]主節(jié)點(diǎn)向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地第一表分片文件發(fā)送至第一表分片文件對(duì)應(yīng)的從節(jié)點(diǎn),將從節(jié)點(diǎn)本地第二表分片文件發(fā)送至第二表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述第一表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是第一表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn);所述第二表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是第二表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0127]步驟408 :對(duì)于每一從節(jié)點(diǎn),從節(jié)點(diǎn)將本地同一散列值對(duì)應(yīng)的第一表分片文件合并,得到各個(gè)散列值對(duì)應(yīng)的第一表分片合并文件。
      [0128]這里的合并是表分片文件中的數(shù)據(jù)的合并。一般的,表分片文件中的數(shù)據(jù)由許多行記錄(也叫元組)構(gòu)成。比如,第一表分片文件A中含有兩條記錄,分別是Wu和Wang ;第一表分片文件B中含有I條記錄,為Zhang,那么,合并后的第一表分片合并文件中含有3條記錄,分別為Wu、Wang和Zhang。合并的方法通常是將一個(gè)表分片文件的數(shù)據(jù)追加到另一個(gè)表分片文件中,比如第一表分片文件B中所有記錄都添加到第一表分片文件A中,當(dāng)然也可以反過來將第一表分片文件A中所有記錄添加到第一表分片文件B中。通常,可以將記錄數(shù)較少的第一表分片文件中的數(shù)據(jù)添加到記錄數(shù)較多的第一表分片文件中,這樣合并處理的性能較高。合并后的第一表分片合并文件中的各條記錄的先后順序?qū)τ诒景l(fā)明實(shí)施例的左外連接或右外連接沒有影響。
      [0129]步驟409 :主節(jié)點(diǎn)指示各個(gè)從節(jié)點(diǎn)進(jìn)行第一外連接;從節(jié)點(diǎn)根據(jù)所述表字段,對(duì)各個(gè)散列值對(duì)應(yīng)的第一表分片合并文件以及第二表分片文件進(jìn)行所述第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果。
      [0130]其中,主節(jié)點(diǎn)指示各個(gè)從節(jié)點(diǎn)進(jìn)行第一外連接這一過程可以在步驟402?步驟409之間執(zhí)行,與步驟403?步驟408之間的執(zhí)行順序不限制。
      [0131]其中,第一數(shù)據(jù)表可以作為左表,第二數(shù)據(jù)表可以作為右表,此時(shí)所述第一外連接可以為右外連接;或者,第一數(shù)據(jù)表可以作為右表,第二數(shù)據(jù)表可以作為左表,此時(shí)所述第一外連接可以為左外連接。
      [0132]其中,同一從節(jié)點(diǎn)上每個(gè)散列值對(duì)應(yīng)的第一表分片合并文件與該散列值對(duì)應(yīng)的各個(gè)第二表分片文件進(jìn)行第一外連接可以并發(fā)進(jìn)行;例如,從節(jié)點(diǎn)I上的散列值A(chǔ)對(duì)應(yīng)第一表分片合并文件Xl,對(duì)應(yīng)第二表分片文件Yl、Y2、Y3,那么,第一表分片合并文件Xl與第二表分片文件Yl進(jìn)行第一外連接、第一表分片合并文件Xl與第二表分片文件Y2進(jìn)行第一外連接、第一表分片合并文件Xl與第二表分片文件Y3進(jìn)行第一外連接這三個(gè)第一外連接處理可以并發(fā)進(jìn)行;
      [0133]并且,同一節(jié)點(diǎn)上不同散列值對(duì)應(yīng)的第一表分片合并文件與該散列值對(duì)應(yīng)的各個(gè)第二表分片文件進(jìn)行第一外連接可以并發(fā)進(jìn)行;例如,從節(jié)點(diǎn)I上有散列值A(chǔ)、B、C,則散列值A(chǔ)對(duì)應(yīng)的第一表分片合并文件與該散列值對(duì)應(yīng)的各個(gè)第二表分片文件進(jìn)行第一外連接、散列值B對(duì)應(yīng)的第一表分片合并文件與該散列值對(duì)應(yīng)的各個(gè)第二表分片文件進(jìn)行第一外連接、散列值C對(duì)應(yīng)的第一表分片合并文件與該散列值對(duì)應(yīng)的各個(gè)第二表分片文件進(jìn)行第一外連接這三個(gè)第一外連接處理可以并發(fā)進(jìn)行;
      [0134]并且,各個(gè)節(jié)點(diǎn)上分別進(jìn)行的第一外連接也可以并發(fā)進(jìn)行;例如,從節(jié)點(diǎn)1、2、3均需要分別進(jìn)行第一外連接處理,則這三個(gè)從節(jié)點(diǎn)上進(jìn)行的第一外連接處理可以并發(fā)進(jìn)行。
      [0135]步驟410 :對(duì)于每一從節(jié)點(diǎn),從節(jié)點(diǎn)將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn)。
      [0136]步驟411 :主節(jié)點(diǎn)將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并得到第一外連接結(jié)果,根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢結(jié)果。
      [0137]其中,主節(jié)點(diǎn)如何以第一外連接結(jié)果為依據(jù)確定數(shù)據(jù)查詢結(jié)果這里不贅述,例如可以根據(jù)用戶輸入的所述查詢關(guān)鍵字對(duì)所述第一外連接結(jié)果進(jìn)行搜索,將包括所述查詢關(guān)鍵字的記錄作為查詢結(jié)果等。
      [0138]步驟412 :主節(jié)點(diǎn)將所述數(shù)據(jù)查詢結(jié)果發(fā)送給客戶端。
      [0139]步驟413 :客戶端將所述數(shù)據(jù)查詢結(jié)果顯示給用戶。
      [0140]其中,客戶端具體如何向用戶顯示所述數(shù)據(jù)查詢結(jié)果,本發(fā)明實(shí)施例并不限定。
      [0141]本實(shí)施例中,主節(jié)點(diǎn)根據(jù)所述第一對(duì)應(yīng)關(guān)系和第二對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,之后,由從節(jié)點(diǎn)將所述從節(jié)點(diǎn)本地的同一散列值的第一表分片文件合并得到散列值對(duì)應(yīng)的第一表分片合并文件、根據(jù)所述表字段對(duì)各個(gè)散列值對(duì)應(yīng)的第一表分片合并文件以及第二表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到數(shù)據(jù)查詢結(jié)果。從而實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫下使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而能夠得到正確的數(shù)據(jù)查詢結(jié)果。
      [0142]參見圖5,為本發(fā)明數(shù)據(jù)查詢裝置第一實(shí)施例示意圖,該裝置可以應(yīng)用于主節(jié)點(diǎn),該裝置500包括:
      [0143]第一接收單元510,用于接收數(shù)據(jù)查詢請(qǐng)求;
      [0144]第一確定單元520,用于根據(jù)所述第一接收單元510接收的所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;
      [0145]第一發(fā)送單兀530,用于將第一確定單兀520確定的所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);
      [0146]所述第一接收單元510還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;
      [0147]分段單元540,用于對(duì)所述第一接收單元510接收到的所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn);
      [0148]控制單元550,用于根據(jù)第一接收單元510接收到的所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0149]所述第一接收單元510還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0150]查詢單元560,用于根據(jù)所述第一接收單元510接收到的所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0151]其中,所述第一確定單元520還可以用于:根據(jù)所述第一接收單元510接收的所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段;
      [0152]所述第一發(fā)送單元530還可以用于:將所述第一確定單元520確定的所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      [0153]其中,查詢單元560具體可以用于:將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果;根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0154]其中,所述控制單元550具體可以用于:
      [0155]向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0156]其中,所述控制單元550具體可以用于:
      [0157]向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0158]本實(shí)施例中,根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,之后,由從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而實(shí)現(xiàn)了MPP分布式數(shù)據(jù)庫下使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而能夠得到正確的數(shù)據(jù)查詢結(jié)果。
      [0159]參見圖6,為本發(fā)明數(shù)據(jù)查詢裝置第二實(shí)施例示意圖,該裝置可以設(shè)置于從節(jié)點(diǎn),該裝置600包括:
      [0160]第二接收單元610,用于接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息;
      [0161]拆分單元620,用于對(duì)從節(jié)點(diǎn)本地的所述第二接收單元610接收到的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件;
      [0162]第二發(fā)送單元630,用于將拆分單元620得到的散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn);
      [0163]被控單元640,用于在所述主節(jié)點(diǎn)控制下對(duì)表分片文件進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;
      [0164]第二合并單元650,用于將被控單元640遷移后的所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;
      [0165]連接單元660,用于按照散列值對(duì)第二合并單元650得到的所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0166]第二發(fā)送單元630還用于:將所述連接單元660得到的散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0167]其中,所述第二接收單元610還可以用于:接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      [0168]其中,被控單元640具體用于:
      [0169]接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;
      [0170]從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0171]其中,被控單元640具體用于:
      [0172]接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;
      [0173]根據(jù)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0174]本實(shí)施例中,在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而與主節(jié)點(diǎn)配合實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫中使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而能夠得到正確的數(shù)據(jù)查詢結(jié)果。
      [0175]參見圖7,為本發(fā)明實(shí)施例主節(jié)點(diǎn)結(jié)構(gòu)圖,該主節(jié)點(diǎn)700包括:處理器710、存儲(chǔ)器720、收發(fā)器730和總線740 ;
      [0176]處理器710、存儲(chǔ)器720、收發(fā)器730通過總線740相互連接;總線740可以是ISA總線、PCI總線或EISA總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖7中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。
      [0177]存儲(chǔ)器720,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器720可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。
      [0178]收發(fā)器730用于連接其他設(shè)備,并與其他設(shè)備進(jìn)行通信。收發(fā)器730用于:接收數(shù)據(jù)查詢請(qǐng)求;將所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的;接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;
      [0179]所述處理器710執(zhí)行所述程序代碼,用于根據(jù)收發(fā)器730接收到的所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表;對(duì)收發(fā)器730接收到的所述散列值進(jìn)行分段得到散列值段,確定各個(gè)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn);根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0180]其中,所述處理器710還可以用于:根據(jù)收發(fā)器730接收到的所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段;
      [0181]所述收發(fā)器730還可以用于:將所述處理器710確定的所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      [0182]其中,所述處理器710具體可以用于:將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果;根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      [0183]其中,所述處理器710具體可以用于:控制收發(fā)器730向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件;
      [0184]所述收發(fā)器730還可以用于:向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令。
      [0185]其中,所述處理器710具體可以用于:控制收發(fā)器730向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn);
      [0186]收發(fā)器730還可以用于:向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令。
      [0187]本實(shí)施例中,主節(jié)點(diǎn)根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,之后,由從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,主節(jié)點(diǎn)接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫下使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而可以根據(jù)所述左外連接或右外連接結(jié)果得到正確的數(shù)據(jù)查詢結(jié)果。
      [0188]參見圖8,為本發(fā)明實(shí)施例主節(jié)點(diǎn)結(jié)構(gòu)圖,該主節(jié)點(diǎn)800包括:處理器810、存儲(chǔ)器820、收發(fā)器830和總線840 ;
      [0189]處理器810、存儲(chǔ)器820、收發(fā)器830通過總線840相互連接;總線840可以是ISA總線、PCI總線或EISA總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖8中僅用一條粗線表示,但并不表示僅有一根總線或一種類型的總線。[0190]存儲(chǔ)器820,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器820可能包含高速RAM存儲(chǔ)器,也可能還包括非易失性存儲(chǔ)器(non-vo latile memory ),例如至少一個(gè)磁盤存儲(chǔ)器。
      [0191]收發(fā)器830用于連接其他設(shè)備,并與其他設(shè)備進(jìn)行通信。收發(fā)器830用于:接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息;將散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn);將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果O
      [0192]所述處理器810執(zhí)行所述程序代碼,用于對(duì)所述從節(jié)點(diǎn)本地的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件;在所述主節(jié)點(diǎn)控制下通過收發(fā)器830進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果。
      [0193]其中,所述收發(fā)器830還可以用于:接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      [0194]其中,所述處理器810用于:根據(jù)收發(fā)器830接收到的所述第一遷移命令中所包括的從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息,通過收發(fā)器830從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件;
      [0195]所述收發(fā)器830具體可以用于:接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      [0196]其中,所述處理器810具體可以用于:根據(jù)收發(fā)器830接收到的所述第二遷移命令中包括的所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,通過收發(fā)器830將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);
      [0197]所述收發(fā)器830具體可以用于:接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      [0198]本實(shí)施例中,從節(jié)點(diǎn)在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行;將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件;按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。從而與主節(jié)點(diǎn)配合實(shí)現(xiàn)了 MPP分布式數(shù)據(jù)庫中使用左外連接或右外連接進(jìn)行數(shù)據(jù)查詢處理時(shí),能夠得到正確的左外連接或右外連接結(jié)果,進(jìn)而根據(jù)所述左外連接或右外連接結(jié)果得到正確的數(shù)據(jù)查詢結(jié)果。
      [0199]本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實(shí)施例中的技術(shù)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明實(shí)施例中的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
      [0200]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
      [0201]以上所述的本發(fā)明實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
      【權(quán)利要求】
      1.一種數(shù)據(jù)查詢方法,其特征在于,包括: 接收數(shù)據(jù)查詢請(qǐng)求; 根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表; 將所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn); 接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的; 對(duì)所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn); 根據(jù)所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果; 接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果,并根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 根據(jù)所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段; 將所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,根據(jù)所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果包括: 將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果; 根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移包括: 向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      5.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移包括: 向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      6.一種數(shù)據(jù)查詢方法,其特征在于,包括: 接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息; 對(duì)所述從節(jié)點(diǎn)本地的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件; 將散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)點(diǎn); 在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行; 將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件; 按照散列值對(duì)所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果; 將散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      7.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括: 接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移包括: 接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息; 從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      9.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移包括: 接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息; 根據(jù)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      10.一種數(shù)據(jù)查詢裝置,其特征在于,包括: 第一接收單元,用于接收數(shù)據(jù)查詢請(qǐng)求; 第一確定單元,用于根據(jù)所述第一接收單元接收的所述數(shù)據(jù)查詢請(qǐng)求確定需要進(jìn)行散列拆分的兩個(gè)數(shù)據(jù)表; 第一發(fā)送單元,用于將第一確定單元確定的所述數(shù)據(jù)表的信息發(fā)送給各個(gè)從節(jié)點(diǎn);所述第一接收單元還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的散列值和表分片文件的對(duì)應(yīng)關(guān)系,所述散列值和表分片文件的對(duì)應(yīng)關(guān)系是由所述從節(jié)點(diǎn)對(duì)所述數(shù)據(jù)表的信息所指示的數(shù)據(jù)表進(jìn)行散列拆分得到的; 分段單元,用于對(duì)所述第一接收單元接收到的所述散列值進(jìn)行分段得到散列值段,確定各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn); 控制單元,用于根據(jù)第一接收單元接收到的所述散列值和表分片文件的對(duì)應(yīng)關(guān)系,控制各個(gè)從節(jié)點(diǎn)進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中,以便各個(gè)從節(jié)點(diǎn)將所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并、按照散列值對(duì)合并后的表分片文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果; 所述第一接收單元還用于:接收各個(gè)從節(jié)點(diǎn)發(fā)送的各個(gè)散列值對(duì)應(yīng)的連接結(jié)果; 查詢單元,用于根據(jù)所述第一接收單元接收到的所述連接結(jié)果確定所述數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述第一確定單元還用于:根據(jù)所述第一接收單元接收的所述數(shù)據(jù)查詢請(qǐng)求確定作為散列拆分依據(jù)和第一外連接依據(jù)的表字段; 所述第一發(fā)送單元還用于:將所述第一確定單元確定的所述表字段的信息發(fā)送給各個(gè)從節(jié)點(diǎn)。
      12.根據(jù)權(quán)利要求9或10所述的裝置,其特征在于,查詢單元具體用于:將各個(gè)散列值對(duì)應(yīng)的連接結(jié)果合并,得到第一外連接結(jié)果;根據(jù)所述第一外連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      13.根據(jù)權(quán)利要求9至12任一項(xiàng)所述的裝置,其特征在于,所述控制單元具體用于: 向各個(gè)從節(jié)點(diǎn)發(fā)送第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;所述第一遷移命令用于指示從節(jié)點(diǎn)從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      14.根據(jù)權(quán)利要求9至12任一項(xiàng)所述的裝置,其特征在于,所述控制單元具體用于: 向各個(gè)從節(jié)點(diǎn)發(fā)送第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息;所述第二遷移命令用于指示從節(jié)點(diǎn)將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      15.一種數(shù)據(jù)查詢裝置,其特征在于,包括: 第二接收單元,用于接收主節(jié)點(diǎn)發(fā)送的兩個(gè)數(shù)據(jù)表的信息; 拆分單元,用于對(duì)從節(jié)點(diǎn)本地的所述第二接收單元接收到的所述信息指示的兩個(gè)數(shù)據(jù)表分別進(jìn)行散列拆分,得到散列值對(duì)應(yīng)的表分片文件; 第二發(fā)送單元,用于將拆分單元得到的散列值和表分片文件的對(duì)應(yīng)關(guān)系發(fā)送至主節(jié)占. 被控單元,用于在所述主節(jié)點(diǎn)控制下進(jìn)行表分片文件遷移,使得各個(gè)散列值段對(duì)應(yīng)的表分片文件遷移至所述各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)中;所述散列值段由主節(jié)點(diǎn)對(duì)散列值分段得到,各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)由主節(jié)點(diǎn)確定;所述控制由所述主節(jié)點(diǎn)根據(jù)散列值和表分片文件的對(duì)應(yīng)關(guān)系進(jìn)行; 第二合并單元,用于將所述被控單元遷移后的所述兩個(gè)數(shù)據(jù)表中一個(gè)數(shù)據(jù)表的表分片文件按照散列值進(jìn)行合并,得到散列值對(duì)應(yīng)的表分片合并文件; 連接單元,用于按照散列值對(duì)第二合并單元得到的所述表分片合并文件和所述兩個(gè)數(shù)據(jù)表中另一個(gè)數(shù)據(jù)表的表分片文件進(jìn)行第一外連接,得到各個(gè)散列值對(duì)應(yīng)的連接結(jié)果;所述第二發(fā)送單元還用于:將所述連接單元得到的散列值對(duì)應(yīng)的連接結(jié)果發(fā)送給主節(jié)點(diǎn),以便主節(jié)點(diǎn)根據(jù)所述連接結(jié)果確定數(shù)據(jù)查詢請(qǐng)求的結(jié)果。
      16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述第二接收單元還用于:接收主節(jié)點(diǎn)發(fā)送的作為散列拆分依據(jù)和第一外連接依據(jù)的表字段的信息。
      17.根據(jù)權(quán)利要求15或16所述的裝置,其特征在于,所述被控單元具體用于: 接收所述主節(jié)點(diǎn)發(fā)送的第一遷移命令,所述第一遷移命令中包括:從節(jié)點(diǎn)對(duì)應(yīng)的散列值段中各個(gè)散列值所對(duì)應(yīng)的表分片文件以及表分片文件所在從節(jié)點(diǎn)的信息;從所述表分片文件所在從節(jié)點(diǎn)獲取所述表分片文件。
      18.根據(jù)權(quán)利要求15或16所述的裝置,其特征在于,所述被控單元具體用于: 接收所述主節(jié)點(diǎn)發(fā)送的第二遷移命令,所述第二遷移命令中包括:各個(gè)散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息; 根據(jù)所述散列值段對(duì)應(yīng)的從節(jié)點(diǎn)的信息,將從節(jié)點(diǎn)本地表分片文件發(fā)送至表分片文件對(duì)應(yīng)的從節(jié)點(diǎn);所述表分片文件對(duì)應(yīng)的從節(jié)點(diǎn)是表分片文件對(duì)應(yīng)的散列值所在散列值段對(duì)應(yīng)的從節(jié)點(diǎn)。
      【文檔編號(hào)】G06F17/30GK103488778SQ201310459279
      【公開日】2014年1月1日 申請(qǐng)日期:2013年9月27日 優(yōu)先權(quán)日:2013年9月27日
      【發(fā)明者】李燁, 陳浩 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1