国产精品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):6516808閱讀:140來源:國知局
      一種數(shù)據(jù)加載方法及裝置制造方法
      【專利摘要】本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)加載方法及裝置,用以提高對(duì)系統(tǒng)內(nèi)各個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬的利用效率;本發(fā)明數(shù)據(jù)加載方法中,第一數(shù)據(jù)節(jié)點(diǎn)在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊,并檢測獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn),針對(duì)其中任意一條邏輯記錄,在檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。本發(fā)明將分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)重分布能力布置在數(shù)據(jù)庫系統(tǒng)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn),從而可以充分利用數(shù)據(jù)庫系統(tǒng)中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬。
      【專利說明】—種數(shù)據(jù)加載方法及裝置
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)加載方法及裝置。
      【背景技術(shù)】
      [0002]分布式數(shù)據(jù)庫系統(tǒng)是在集中式數(shù)據(jù)庫系統(tǒng)的基礎(chǔ)上發(fā)展起來的,是計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)相結(jié)合的產(chǎn)物。相比集中式數(shù)據(jù)庫系統(tǒng),分布式數(shù)據(jù)庫系統(tǒng)具有許多優(yōu)勢:首先,分布式數(shù)據(jù)庫系統(tǒng)可以允許各個(gè)分散部門將其常用的數(shù)據(jù)存儲(chǔ)在本地,從而可以降低數(shù)據(jù)傳送的成本,提高響應(yīng)速率,其次,由于分布式數(shù)據(jù)庫系統(tǒng)允許在網(wǎng)絡(luò)出現(xiàn)故障時(shí),對(duì)局部數(shù)據(jù)庫進(jìn)行操作,從而可以提高系統(tǒng)的可靠性,再次,由于在分布式數(shù)據(jù)庫系統(tǒng)中增加一個(gè)新的局部數(shù)據(jù)庫,或在某個(gè)位置擴(kuò)充一臺(tái)適當(dāng)?shù)男⌒陀?jì)算機(jī),都很容易實(shí)現(xiàn),因此,分布式數(shù)據(jù)庫系統(tǒng)的可擴(kuò)展性也比較高。分布式數(shù)據(jù)庫系統(tǒng)的低延遲、高可靠、易擴(kuò)展等優(yōu)點(diǎn)成為企業(yè)部署數(shù)據(jù)庫系統(tǒng)的首選。
      [0003]分布式數(shù)據(jù)庫系統(tǒng)主要包括一個(gè)主節(jié)點(diǎn)(master)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)(datanode),在該系統(tǒng)中,進(jìn)行數(shù)據(jù)加載的方式是采用主節(jié)點(diǎn)或系統(tǒng)外的數(shù)據(jù)導(dǎo)入組件作為數(shù)據(jù)加載的入口,由該主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件對(duì)需要入庫的數(shù)據(jù)進(jìn)行拆分解析等處理,確定不同數(shù)據(jù)所屬的數(shù)據(jù)節(jié)點(diǎn),并將處理后的數(shù)據(jù)分發(fā)給數(shù)據(jù)庫中對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn),因此,分布式數(shù)據(jù)庫系統(tǒng)的整體加載性能依賴于上述主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件的處理性能,在數(shù)據(jù)量較大、系統(tǒng)內(nèi)數(shù)據(jù)節(jié)點(diǎn)數(shù)量較多時(shí),上述主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件需要將大量的數(shù)據(jù)進(jìn)行拆分解析后,分別分發(fā)給對(duì)應(yīng)的各個(gè)數(shù)據(jù)節(jié)點(diǎn),耗時(shí)較長,這時(shí),上述主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件會(huì)成為整個(gè)數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)加載的瓶頸,在主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件將數(shù)據(jù)分發(fā)到數(shù)據(jù)節(jié)點(diǎn)之前,該數(shù)據(jù)節(jié)點(diǎn)無法對(duì)數(shù)據(jù)進(jìn)行任何處理,因此,采用這種加載方式對(duì)系統(tǒng)內(nèi)各個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬的利用效率較低。

      【發(fā)明內(nèi)容】

      [0004]本發(fā)明實(shí)施例提供一種數(shù)據(jù)加載方法及裝置,用以解決分布式數(shù)據(jù)庫系統(tǒng)中由主節(jié)點(diǎn)或數(shù)據(jù)導(dǎo)入組件作為數(shù)據(jù)加載的入口的方式對(duì)系統(tǒng)內(nèi)各個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬的利用效率較低的問題。
      [0005]第一方面,提供一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),該方法采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),包括:
      [0006]第一數(shù)據(jù)節(jié)點(diǎn)在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊;
      [0007]所述第一數(shù)據(jù)節(jié)點(diǎn)檢測獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn);
      [0008]針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,所述第一數(shù)據(jù)節(jié)點(diǎn)在檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      [0009]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,包括:
      [0010]所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊;
      [0011]若所述第一數(shù)據(jù)節(jié)點(diǎn)確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      [0012]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向所述第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,包括:
      [0013]所述第一數(shù)據(jù)節(jié)點(diǎn)確定第一次向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息;所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息;
      [0014]所述第一數(shù)據(jù)節(jié)點(diǎn)向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊;
      [0015]其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      [0016]第二方面,提供一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),該方法采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),包括:
      [0017]第一加載服務(wù)器接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù);
      [0018]所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;
      [0019]所述第一加載服務(wù)器在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0020]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述第一加載服務(wù)器劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      [0021]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件;
      [0022]所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊之前,還包括:
      [0023]針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則所述第一加載服務(wù)器根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      [0024]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,包括:
      [0025]所述第一加載服務(wù)器根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn);
      [0026]所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,包括:
      [0027]針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),所述第一加載服務(wù)器從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      [0028]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述第一加載服務(wù)器將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組之后,還包括:
      [0029]所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      [0030]第三方面,提供一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),該方法采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括:
      [0031]主節(jié)點(diǎn)接收數(shù)據(jù)加載指令;
      [0032]所述主節(jié)點(diǎn)將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0033]第四方面,提供一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),所述裝置設(shè)置于每個(gè)數(shù)據(jù)節(jié)點(diǎn)中,所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0034]獲取模塊,用于在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊傳輸至檢測模塊;
      [0035]檢測模塊,用于檢測所述獲取模塊獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)
      占.[0036]處理模塊,用于針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,在所述檢測模塊檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      [0037]結(jié)合第四方面,在第一種可能的實(shí)現(xiàn)方式中,所述獲取模塊具體用于:
      [0038]至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊;若確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      [0039]結(jié)合第四方面的第一種可能的實(shí)現(xiàn)方式,在第二種可能的實(shí)現(xiàn)方式中,所述獲取模塊具體用于:[0040]確定第一次向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息,所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息,向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊;其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      [0041]第五方面,提供一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),該裝置設(shè)置于加載服務(wù)器中,所述加載服務(wù)器用于為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0042]接收模塊,用于接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù),并將接收的數(shù)據(jù)傳輸至劃分模塊;
      [0043]劃分模塊,用于將接收模塊接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,并將劃分的數(shù)據(jù)塊傳輸至分配模塊;
      [0044]分配模塊,用于在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分模塊劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0045]結(jié)合第五方面,在第一種可能的實(shí)現(xiàn)方式中,所述接收模塊接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述劃分模塊劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      [0046]結(jié)合第五方面,在第二種可能的實(shí)現(xiàn)方式中,所述接收模塊接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件;
      [0047]所述分配模塊具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      [0048]結(jié)合第五方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述劃分模塊具體用于:根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn);
      [0049]所述分配模塊具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      [0050]結(jié)合第五方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,,所述劃分模塊還用于:
      [0051]所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      [0052]第六方面,提供一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),所述裝置設(shè)置于所述主節(jié)點(diǎn)中;所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0053]接收模塊,用于接收數(shù)據(jù)加載指令,并將接收的所述數(shù)據(jù)加載指令傳輸至發(fā)送模塊;
      [0054]發(fā)送模塊,用于將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0055]本發(fā)明第一方面提供的數(shù)據(jù)加載方法,將分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)重分布能力布置在數(shù)據(jù)庫系統(tǒng)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn),每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取到不屬于本節(jié)點(diǎn)的數(shù)據(jù)時(shí)將該數(shù)據(jù)重分布到該數(shù)據(jù)所屬的節(jié)點(diǎn),從而可以充分利用數(shù)據(jù)庫系統(tǒng)中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬,而且還能顯著提高整個(gè)數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)加載及數(shù)據(jù)處理的效率;該方法中,加載服務(wù)器可以將存儲(chǔ)的數(shù)據(jù)以數(shù)據(jù)塊的形式批量分配給不同的數(shù)據(jù)節(jié)點(diǎn),這種方式相比傳統(tǒng)的基于開放數(shù)據(jù)庫互連(Open Database Connectivity, ODBC)或數(shù)據(jù)庫連接(Java DataBase Connectivity, JDBC)等標(biāo)準(zhǔn)數(shù)據(jù)庫連接方式的數(shù)據(jù)加載,即采用主節(jié)點(diǎn)將結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)語句逐個(gè)插入數(shù)據(jù)節(jié)點(diǎn)的方式,可以極大提高數(shù)據(jù)加載的效率。
      [0056]本發(fā)明第二方面提供的數(shù)據(jù)加載方法,通過設(shè)置加載服務(wù)器來為數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)加載提供數(shù)據(jù)塊,可以將存儲(chǔ)的數(shù)據(jù)以數(shù)據(jù)塊的形式批量分配給不同的數(shù)據(jù)節(jié)點(diǎn),從而可以使各數(shù)據(jù)節(jié)點(diǎn)并行執(zhí)行數(shù)據(jù)處理的操作,不僅可以充分利用每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬,而且相比傳統(tǒng)的基于ODBC或JDBC等標(biāo)準(zhǔn)數(shù)據(jù)庫連接方式的數(shù)據(jù)加載,加載效率更高;
      [0057]本發(fā)明第三方面提供的數(shù)據(jù)加載方法,主節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,將數(shù)據(jù)加載指令下發(fā)給每個(gè)數(shù)據(jù)節(jié)點(diǎn),從而將數(shù)據(jù)重分布能力轉(zhuǎn)交給每個(gè)數(shù)據(jù)節(jié)點(diǎn),以充分利用每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬。
      【專利附圖】

      【附圖說明】
      [0058]圖1為本發(fā)明實(shí)施例一提供的數(shù)據(jù)加載方法流程圖;
      [0059]圖2為本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)示意圖;
      [0060]圖3為本發(fā)明實(shí)施例分布式數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)加載的示意圖;
      [0061]圖4為本發(fā)明實(shí)施例二提供的數(shù)據(jù)加載方法流程圖;
      [0062]圖5為方式一中加載服務(wù)器分發(fā)數(shù)據(jù)示意圖;
      [0063]圖6為方式二中分布式數(shù)據(jù)庫系統(tǒng)并行加載大小為IT的大文件fileOOl的示意圖;
      [0064]圖7為方式二中對(duì)單個(gè)大文件的數(shù)據(jù)切割示意圖;
      [0065]圖8為方式二中加載服務(wù)器分發(fā)數(shù)據(jù)示意圖;
      [0066]圖9為本發(fā)明實(shí)施例三提供的數(shù)據(jù)加載方法流程圖;
      [0067]圖10為本發(fā)明實(shí)施例四針對(duì)多個(gè)數(shù)據(jù)文件進(jìn)行數(shù)據(jù)加載的方法流程圖;
      [0068]圖11為本發(fā)明實(shí)施例五針對(duì)單個(gè)較大的數(shù)據(jù)文件進(jìn)行數(shù)據(jù)加載的方法流程圖;
      [0069]圖12為本發(fā)明實(shí)施例一提供的數(shù)據(jù)加載裝置示意圖;[0070]圖13為本發(fā)明實(shí)施例二提供的數(shù)據(jù)加載裝置示意圖;
      [0071]圖14為本發(fā)明實(shí)施例三提供的數(shù)據(jù)加載裝置示意圖。
      【具體實(shí)施方式】
      [0072]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(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ù)的范圍。
      [0073]下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
      [0074]如圖1所示,為本發(fā)明實(shí)施例一提供的數(shù)據(jù)加載方法流程圖;
      [0075]本發(fā)明實(shí)施例應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),本發(fā)明實(shí)施例中,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括以下步驟:
      [0076]SlOl:第一數(shù)據(jù)節(jié)點(diǎn)在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊;
      [0077]S102:所述第一數(shù)據(jù)節(jié)點(diǎn)檢測獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn);
      [0078]S103:針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,所述第一數(shù)據(jù)節(jié)點(diǎn)在檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      [0079]本發(fā)明實(shí)施例中的分布式數(shù)據(jù)庫系統(tǒng)主要包括一個(gè)主節(jié)點(diǎn)(master)及多個(gè)數(shù)據(jù)節(jié)點(diǎn)(datanode),還可以包括備用節(jié)點(diǎn)(standby),以供主節(jié)點(diǎn)出現(xiàn)故障的情況下使用,同時(shí),為了輔助每個(gè)數(shù)據(jù)節(jié)點(diǎn)快速進(jìn)行數(shù)據(jù)加載,本發(fā)明實(shí)施例中,預(yù)先設(shè)置了為數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)加載提供數(shù)據(jù)塊的服務(wù)器,即加載服務(wù)器;如圖2所示,為本發(fā)明實(shí)施例提供的分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)示意圖。
      [0080]本發(fā)明實(shí)施例中,將分布式數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)重分布能力布置在數(shù)據(jù)庫系統(tǒng)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn),使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取到不屬于本節(jié)點(diǎn)的數(shù)據(jù)時(shí)將該數(shù)據(jù)重分布到該數(shù)據(jù)所屬的節(jié)點(diǎn),從而可以充分利用數(shù)據(jù)庫系統(tǒng)中每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬,而且還能顯著提高整個(gè)數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)加載及數(shù)據(jù)處理的效率;具體地,每個(gè)數(shù)據(jù)節(jié)點(diǎn)確定獲取的數(shù)據(jù)所屬的數(shù)據(jù)節(jié)點(diǎn)的方式可以采用現(xiàn)有的方法,即,針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)針對(duì)下載的數(shù)據(jù)塊中的每條邏輯記錄計(jì)算分布列的哈希(hash)值,然后根據(jù)計(jì)算的哈希值確定該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0081]本發(fā)明實(shí)施例中的加載服務(wù)器可以為每個(gè)數(shù)據(jù)節(jié)點(diǎn)提供基于超文本傳輸協(xié)議(Hypertext transfer protocol, HTTP)或文件傳輸協(xié)議(File Transfer Protocol, FTP)的數(shù)據(jù)加載服務(wù),即,將存儲(chǔ)的數(shù)據(jù)以數(shù)據(jù)塊的形式批量分配給不同的數(shù)據(jù)節(jié)點(diǎn),這種方式相比傳統(tǒng)的基于開放數(shù)據(jù)庫互連(Open Database Connectivity, ODBC)或數(shù)據(jù)庫連接(Java Data Base Connectivity, JDBC)等標(biāo)準(zhǔn)數(shù)據(jù)庫連接方式的數(shù)據(jù)加載,即采用主節(jié)點(diǎn)將SQL語句逐個(gè)插入數(shù)據(jù)節(jié)點(diǎn)的方式,可以極大提高數(shù)據(jù)加載的效率。
      [0082]在具體實(shí)施中,可以為數(shù)據(jù)庫系統(tǒng)創(chuàng)建外表,在該外表中記錄加載服務(wù)器的地址,每個(gè)數(shù)據(jù)節(jié)點(diǎn)都可以對(duì)該外表進(jìn)行查詢操作。
      [0083]在具體實(shí)施過程中,可以設(shè)置一個(gè)或多個(gè)加載服務(wù)器,具體地,可以根據(jù)分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)和/或加載數(shù)據(jù)量的大小等確定加載服務(wù)器的個(gè)數(shù),比如,在加載數(shù)據(jù)量較大時(shí),可以設(shè)置多個(gè)加載服務(wù)器同時(shí)提供數(shù)據(jù)加載服務(wù),以避免加載服務(wù)器的出口帶寬成為數(shù)據(jù)加載的瓶頸,在數(shù)據(jù)節(jié)點(diǎn)個(gè)數(shù)較多時(shí),也可以設(shè)置多個(gè)加載服務(wù)器,以避免過多的數(shù)據(jù)節(jié)點(diǎn)連接一個(gè)加載服務(wù)器,導(dǎo)致各數(shù)據(jù)節(jié)點(diǎn)的并行下載速率過慢。
      [0084]如圖3所示,為本發(fā)明實(shí)施例分布式數(shù)據(jù)庫系統(tǒng)進(jìn)行數(shù)據(jù)加載的示意圖,主節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,將數(shù)據(jù)加載指令下發(fā)到各個(gè)數(shù)據(jù)節(jié)點(diǎn),各數(shù)據(jù)節(jié)點(diǎn)接收到數(shù)據(jù)加載指令后,分別連接加載服務(wù)器,從加載服務(wù)器上下載數(shù)據(jù)塊,數(shù)據(jù)節(jié)點(diǎn)對(duì)下載的數(shù)據(jù)塊中的每條邏輯記錄進(jìn)行分布計(jì)算,確定下載的數(shù)據(jù)塊中每條邏輯記錄所屬的節(jié)點(diǎn),針對(duì)其中任意一條邏輯記錄,若確定該條邏輯記錄屬于本節(jié)點(diǎn),將該條邏輯記錄寫入本地存儲(chǔ)隊(duì)列中,若確定該條邏輯記錄屬于其它數(shù)據(jù)節(jié)點(diǎn),則對(duì)該條邏輯記錄進(jìn)行重分布,即將該條邏輯記錄轉(zhuǎn)發(fā)給其它數(shù)據(jù)節(jié)點(diǎn),當(dāng)各數(shù)據(jù)節(jié)點(diǎn)在加載服務(wù)器上取不到數(shù)據(jù)時(shí),完成數(shù)據(jù)加載,各數(shù)據(jù)節(jié)點(diǎn)將加載完成的信息反饋給主節(jié)點(diǎn),主節(jié)點(diǎn)將加載完成的信息反饋給用戶。
      [0085]可選地,步驟SlOl中,所述第一數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,包括:
      [0086]所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊;
      [0087]若所述第一數(shù)據(jù)節(jié)點(diǎn)確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      [0088]在具體實(shí)施過程中,每個(gè)數(shù)據(jù)節(jié)點(diǎn)只需選擇設(shè)置的多個(gè)加載服務(wù)器中的一個(gè)加載服務(wù)器,向選擇的該加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,在接收到該加載服務(wù)器發(fā)送的數(shù)據(jù)塊后,可以將該數(shù)據(jù)塊先緩存在本地,并處理緩存的數(shù)據(jù)塊,處理過程包括:判斷該數(shù)據(jù)塊包含的每條邏輯記錄所屬的節(jié)點(diǎn),若確定該條邏輯記錄屬于本節(jié)點(diǎn),則將該條邏輯記錄寫入本地存儲(chǔ)隊(duì)列中,若確定該條邏輯記錄屬于其它數(shù)據(jù)節(jié)點(diǎn),則將該條邏輯記錄轉(zhuǎn)發(fā)給所屬的其它數(shù)據(jù)節(jié)點(diǎn);當(dāng)將緩存的數(shù)據(jù)塊中的每條邏輯記錄都處理完畢后再向加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,下載另一個(gè)數(shù)據(jù)塊,如此,可以減少網(wǎng)絡(luò)交互,節(jié)省網(wǎng)絡(luò)帶寬。
      [0089]在具體實(shí)施中,可以預(yù)先設(shè)置好每個(gè)數(shù)據(jù)節(jié)點(diǎn)首次連接的加載服務(wù)器,也可以由主節(jié)點(diǎn)在下發(fā)數(shù)據(jù)加載指令時(shí),統(tǒng)一配置每個(gè)數(shù)據(jù)節(jié)點(diǎn)首次連接的加載服務(wù)器,以實(shí)現(xiàn)加載服務(wù)器之間的負(fù)載均衡,避免加載開始時(shí),過多的數(shù)據(jù)節(jié)點(diǎn)從一個(gè)加載服務(wù)器上請求數(shù)據(jù),導(dǎo)致加載速率過慢。這種預(yù)先為每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配加載服務(wù)器的方式,雖然可以在一開始進(jìn)行數(shù)據(jù)加載時(shí)實(shí)現(xiàn)加載服務(wù)器的負(fù)載均衡,但是,由于不同加載服務(wù)器的數(shù)據(jù)提供性能可能不同,在設(shè)定時(shí)間內(nèi),有的加載服務(wù)器可能只可以為一個(gè)數(shù)據(jù)節(jié)點(diǎn)提供一個(gè)數(shù)據(jù)塊,有的加載服務(wù)器卻可能可以為多個(gè)數(shù)據(jù)節(jié)點(diǎn)分別提供多個(gè)數(shù)據(jù)塊,為了在數(shù)據(jù)加載過程中進(jìn)一步提高下載效率,本發(fā)明實(shí)施例提出了調(diào)整策略:上述第一數(shù)據(jù)節(jié)點(diǎn)在發(fā)現(xiàn)當(dāng)前為其提供數(shù)據(jù)的加載服務(wù)器的數(shù)據(jù)提供性能較低,也即分配數(shù)據(jù)的速率較低時(shí),為了提高數(shù)據(jù)加載效率,可以在處理完最近一次接收的數(shù)據(jù)塊后,重新連接其它的加載服務(wù)器下載數(shù)據(jù),除此,第一數(shù)據(jù)節(jié)點(diǎn)也可以在發(fā)現(xiàn)第一加載服務(wù)器不再發(fā)送數(shù)據(jù)時(shí),重新連接其它的加載服務(wù)器下載數(shù)據(jù),第一數(shù)據(jù)節(jié)點(diǎn)重復(fù)上述請求、接收數(shù)據(jù)的步驟,直到從所有的加載服務(wù)器都獲取不到數(shù)據(jù),則表示完成了數(shù)據(jù)加載。
      [0090]可選地,所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向所述第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,包括:
      [0091]所述第一數(shù)據(jù)節(jié)點(diǎn)確定第一次向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息;所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息;
      [0092]所述第一數(shù)據(jù)節(jié)點(diǎn)向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊;
      [0093]其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      [0094]在具體實(shí)施過程中,各加載服務(wù)器需要存儲(chǔ)的數(shù)據(jù)可能屬于多個(gè)數(shù)據(jù)文件,為了避免重復(fù)下載,可以使不同加載服務(wù)器分別存儲(chǔ)不同的數(shù)據(jù)文件,這時(shí),當(dāng)上述第一數(shù)據(jù)節(jié)點(diǎn)從第一加載服務(wù)器轉(zhuǎn)移到第二加載服務(wù)器下載數(shù)據(jù)時(shí),不必?cái)y帶已下載數(shù)據(jù)對(duì)應(yīng)的文件偏移量信息;當(dāng)系統(tǒng)外的節(jié)點(diǎn)發(fā)送給各加載服務(wù)器的數(shù)據(jù)屬于同一個(gè)較大的數(shù)據(jù)文件時(shí),為了避免進(jìn)行文件切割導(dǎo)致數(shù)據(jù)完整性受到破壞及增加額外的切割計(jì)算的流程,可以將該數(shù)據(jù)文件分別存儲(chǔ)到每個(gè)加載服務(wù)器中,并預(yù)先為每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配好屬于該數(shù)據(jù)節(jié)點(diǎn)處理的部分?jǐn)?shù)據(jù),在數(shù)據(jù)節(jié)點(diǎn)請求數(shù)據(jù)時(shí),為該數(shù)據(jù)節(jié)點(diǎn)分配屬于該數(shù)據(jù)節(jié)點(diǎn)的那部分?jǐn)?shù)據(jù),在該數(shù)據(jù)節(jié)點(diǎn)從第一加載服務(wù)器轉(zhuǎn)移到第二加載服務(wù)器上獲取數(shù)據(jù)時(shí),第二加載服務(wù)器根據(jù)該數(shù)據(jù)節(jié)點(diǎn)攜帶的已處理數(shù)據(jù)對(duì)應(yīng)的文件偏移量信息,繼續(xù)為該數(shù)據(jù)節(jié)點(diǎn)提供屬于該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)。這里的文件偏移量信息可以用于使第二加載服務(wù)器確定該數(shù)據(jù)節(jié)點(diǎn)已下載的數(shù)據(jù)對(duì)應(yīng)的文件位置,以確定繼續(xù)為該數(shù)據(jù)節(jié)點(diǎn)提供的數(shù)據(jù),保證該數(shù)據(jù)節(jié)點(diǎn)下載數(shù)據(jù)的完整性和不重復(fù)性。
      [0095]上述步驟中,當(dāng)所有的加載服務(wù)器中的數(shù)據(jù)分發(fā)完畢后,完成數(shù)據(jù)加載,這時(shí),每個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)加載完成的信息反饋到主節(jié)點(diǎn),主節(jié)點(diǎn)在接收到各數(shù)據(jù)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載完成的信息后,將數(shù)據(jù)加載完成的信息通知給用戶。
      [0096]與上述數(shù)據(jù)節(jié)點(diǎn)執(zhí)行數(shù)據(jù)加載的方法流程對(duì)應(yīng),本發(fā)明實(shí)施例還提供了以下加載服務(wù)器為各數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)的數(shù)據(jù)加載方法;
      [0097]如圖4所示,為本發(fā)明實(shí)施例二提供的數(shù)據(jù)加載方法流程圖;
      [0098]本發(fā)明實(shí)施例應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),在本發(fā)明實(shí)施例中,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括:
      [0099]S401:第一加載服務(wù)器接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù);
      [0100]S402:所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;
      [0101]S403:所述第一加載服務(wù)器在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0102]本發(fā)明實(shí)施例中,通過設(shè)置加載服務(wù)器來為數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)加載提供數(shù)據(jù)塊,從而可以使各數(shù)據(jù)節(jié)點(diǎn)并行執(zhí)行數(shù)據(jù)處理的操作,以充分利用每個(gè)數(shù)據(jù)節(jié)點(diǎn)的資源及網(wǎng)絡(luò)帶寬,同時(shí),第一加載服務(wù)器在接收到多個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)請求消息后,為不同的數(shù)據(jù)節(jié)點(diǎn)分別分配不同的數(shù)據(jù)塊,以避免各數(shù)據(jù)節(jié)點(diǎn)對(duì)相同數(shù)據(jù)的重復(fù)性處理。
      [0103]本發(fā)明實(shí)施例中的加載服務(wù)器可以為每個(gè)數(shù)據(jù)節(jié)點(diǎn)提供基于HTTP或FTP的數(shù)據(jù)加載服務(wù),即,將存儲(chǔ)的數(shù)據(jù)以數(shù)據(jù)塊的形式批量分配給不同的數(shù)據(jù)節(jié)點(diǎn),這種方式相比傳統(tǒng)的基于ODBC或JDBC等標(biāo)準(zhǔn)數(shù)據(jù)庫連接方式的數(shù)據(jù)加載,即采用主節(jié)點(diǎn)將SQL語句逐個(gè)插入數(shù)據(jù)節(jié)點(diǎn)的方式,可以極大提高數(shù)據(jù)加載的效率。
      [0104]在具體實(shí)施過程中,分布式數(shù)據(jù)庫系統(tǒng)可能需要加載多個(gè)較小的數(shù)據(jù)文件,也可能需要加載一個(gè)較大的數(shù)據(jù)文件,針對(duì)這兩種不同情況,各加載服務(wù)器可以選擇不同的數(shù)據(jù)存儲(chǔ)方式,下面分別作介紹:
      [0105]方式一,每個(gè)加載服務(wù)器接收并存儲(chǔ)不同的數(shù)據(jù);
      [0106]也即,在上述步驟S401中,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述第一加載服務(wù)器劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      [0107]這種方式一般適用于數(shù)據(jù)庫系統(tǒng)需要加載多個(gè)較小的數(shù)據(jù)文件的情況,采用這種方式,不同加載服務(wù)器分別接收并存儲(chǔ)數(shù)據(jù)庫系統(tǒng)外的節(jié)點(diǎn)發(fā)送的不同的數(shù)據(jù)文件,不僅可以避免不同加載服務(wù)器對(duì)相同數(shù)據(jù)的重復(fù)存儲(chǔ),節(jié)省加載服務(wù)器的存儲(chǔ)空間,還可以避免數(shù)據(jù)節(jié)點(diǎn)對(duì)不同加載服務(wù)器中相同數(shù)據(jù)的重復(fù)下載,同時(shí),由于每個(gè)加載服務(wù)器存儲(chǔ)的數(shù)據(jù)文件不同,而且,第一加載服務(wù)器劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的,因此,數(shù)據(jù)節(jié)點(diǎn)在從一個(gè)加載服務(wù)器轉(zhuǎn)移到另一個(gè)加載服務(wù)器下載數(shù)據(jù)時(shí),不必?cái)y帶已下載數(shù)據(jù)的文件偏移量信息;
      [0108]當(dāng)然,對(duì)于單個(gè)較大的數(shù)據(jù)文件,比如數(shù)據(jù)量為IT的數(shù)據(jù)文件,也可以采用這種方式,只不過在這種情況下,還需要該系統(tǒng)外的節(jié)點(diǎn)按照加載服務(wù)器的數(shù)量對(duì)該數(shù)據(jù)文件進(jìn)行切割,并將切割后的每部分?jǐn)?shù)據(jù)分別存儲(chǔ)到每個(gè)加載服務(wù)器中,在切割中需要保證每部分?jǐn)?shù)據(jù)的行完整性,因此,額外增加了系統(tǒng)外節(jié)點(diǎn)的工作量。
      [0109]基于上述存儲(chǔ)數(shù)據(jù)的方式,這些加載服務(wù)器在將存儲(chǔ)的數(shù)據(jù)分配給數(shù)據(jù)庫系統(tǒng)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)時(shí),可以采用以下方式:
      [0110]如圖5所示,為方式一中加載服務(wù)器分發(fā)數(shù)據(jù)示意圖;圖中虛線表示數(shù)據(jù)節(jié)點(diǎn)與加載服務(wù)器未建立連接,實(shí)線表示數(shù)據(jù)節(jié)點(diǎn)與加載服務(wù)器已建立連接;在具體實(shí)施中,每個(gè)加載服務(wù)器將存儲(chǔ)的數(shù)據(jù)劃分為多個(gè)行完整的數(shù)據(jù)塊,在接收到多個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)請求消息后,為這多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分別分配一個(gè)數(shù)據(jù)塊,如圖5中,加載服務(wù)器I在接收到數(shù)據(jù)節(jié)點(diǎn)I和數(shù)據(jù)節(jié)點(diǎn)2的數(shù)據(jù)請求消息后,分別為數(shù)據(jù)節(jié)點(diǎn)I和數(shù)據(jù)節(jié)點(diǎn)2分配一個(gè)數(shù)據(jù)塊;若有的數(shù)據(jù)節(jié)點(diǎn)的處理性能高,在該數(shù)據(jù)節(jié)點(diǎn)處理完一個(gè)數(shù)據(jù)塊后,可以繼續(xù)為該數(shù)據(jù)節(jié)點(diǎn)分配其它的數(shù)據(jù)塊,如圖5中,在相同時(shí)間內(nèi),數(shù)據(jù)節(jié)點(diǎn)I和數(shù)據(jù)節(jié)點(diǎn)3各下載了 2個(gè)數(shù)據(jù)塊,數(shù)據(jù)節(jié)點(diǎn)2只下載了一個(gè)數(shù)據(jù)塊;這種方式可以根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的處理能力分配數(shù)據(jù),相比在一開始就將數(shù)據(jù)平均分配給每個(gè)數(shù)據(jù)節(jié)點(diǎn)的方式,可以提高數(shù)據(jù)庫系統(tǒng)處理數(shù)據(jù)的整體效率;在具體實(shí)施中,當(dāng)一個(gè)數(shù)據(jù)節(jié)點(diǎn)探測到當(dāng)前連接的下載服務(wù)器的數(shù)據(jù)提供性能較低時(shí),重新連接其它的加載服務(wù)器下載數(shù)據(jù),如圖5中,數(shù)據(jù)節(jié)點(diǎn)I開始時(shí)從加載服務(wù)器I上下載數(shù)據(jù),當(dāng)該數(shù)據(jù)節(jié)點(diǎn)確定該加載服務(wù)器I的數(shù)據(jù)分配速率低于設(shè)定閾值時(shí),重新連接加載服務(wù)器2,從加載服務(wù)器2上繼續(xù)下載數(shù)據(jù)。
      [0111]方式二、每個(gè)加載服務(wù)器接收并存儲(chǔ)同一數(shù)據(jù)文件;
      [0112]也即,在上述步驟S401中,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件;
      [0113]在該方式下,所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊之前,還包括:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則所述第一加載服務(wù)器根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      [0114]該方式二適用于數(shù)據(jù)庫系統(tǒng)加載一個(gè)較大的數(shù)據(jù)文件的情況,在上述關(guān)于方式一的描述中已說明,當(dāng)數(shù)據(jù)庫系統(tǒng)加載一個(gè)較大的數(shù)據(jù)文件時(shí),也可以采用上述方式一的方式,只是方式一在處理這種情況時(shí)會(huì)額外增加系統(tǒng)外節(jié)點(diǎn)處理數(shù)據(jù)的負(fù)擔(dān),并且有可能會(huì)破壞數(shù)據(jù)的行完整性,而該方式二由于無需將數(shù)據(jù)文件進(jìn)行切割,可以保證數(shù)據(jù)的完整性及避免增加系統(tǒng)外節(jié)點(diǎn)處理數(shù)據(jù)的負(fù)擔(dān)。
      [0115]采用這種方式,需要預(yù)先確定為每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配的數(shù)據(jù)塊,針對(duì)其中一個(gè)數(shù)據(jù)節(jié)點(diǎn),在該數(shù)據(jù)節(jié)點(diǎn)向任意一個(gè)加載服務(wù)器請求數(shù)據(jù)時(shí),該加載服務(wù)器從預(yù)先確定的需要為該數(shù)據(jù)節(jié)點(diǎn)分配的數(shù)據(jù)塊中,選擇數(shù)據(jù)塊發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)。
      [0116]在具體實(shí)施過程中,所述第一加載服務(wù)器為每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)塊之前,針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則所述第一加載服務(wù)器可以根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù);該文件偏移量信息可以用于使第二加載服務(wù)器確定該數(shù)據(jù)節(jié)點(diǎn)已下載數(shù)據(jù)對(duì)應(yīng)的文件位置,以確定繼續(xù)為該數(shù)據(jù)節(jié)點(diǎn)分配的數(shù)據(jù),保證該數(shù)據(jù)節(jié)點(diǎn)下載數(shù)據(jù)的完整性和不重復(fù)性。
      [0117]如圖6所示,為上述方式二中分布式數(shù)據(jù)庫系統(tǒng)并行加載大小為IT的大文件fileOOl的示意圖;主節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,將數(shù)據(jù)加載指令下發(fā)到各個(gè)數(shù)據(jù)節(jié)點(diǎn),每個(gè)數(shù)據(jù)節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,分別連接一個(gè)加載服務(wù)器,從連接的加載服務(wù)器上下載數(shù)據(jù)塊,針對(duì)其中一個(gè)數(shù)據(jù)節(jié)點(diǎn),該數(shù)據(jù)節(jié)點(diǎn)對(duì)下載的數(shù)據(jù)塊中的每條邏輯記錄進(jìn)行分布計(jì)算,確定下載的數(shù)據(jù)塊中每條邏輯記錄所屬的節(jié)點(diǎn),針對(duì)其中一條邏輯記錄,若確定下載的該條邏輯記錄屬于本節(jié)點(diǎn),則直接將下載的該條邏輯記錄插入本地存儲(chǔ)隊(duì)列,若確定下載的該條邏輯記錄屬于其它節(jié)點(diǎn),則將該條邏輯記錄轉(zhuǎn)發(fā)給其他節(jié)點(diǎn),在該數(shù)據(jù)節(jié)點(diǎn)確定當(dāng)前連接的加載服務(wù)器分配數(shù)據(jù)的速率低于設(shè)定閾值時(shí),重新連接其它的加載服務(wù)器,并將已下載數(shù)據(jù)的文件偏移量信息發(fā)送給重新連接的加載服務(wù)器,當(dāng)各數(shù)據(jù)節(jié)點(diǎn)在所有的加載服務(wù)器上都取不到數(shù)據(jù)時(shí),完成數(shù)據(jù)加載,各數(shù)據(jù)節(jié)點(diǎn)將加載完成的結(jié)果反饋給主節(jié)點(diǎn),主節(jié)點(diǎn)將各數(shù)據(jù)節(jié)點(diǎn)加載完成的信息反饋給用戶。
      [0118]基于上述存儲(chǔ)數(shù)據(jù)的方式,這些加載服務(wù)器在將存儲(chǔ)的數(shù)據(jù)分配給數(shù)據(jù)庫系統(tǒng)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)時(shí),可以采用以下方式:
      [0119]可選地,所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,包括:
      [0120]所述第一加載服務(wù)器根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn);
      [0121]所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,包括:
      [0122]針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),所述第一加載服務(wù)器從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      [0123]可選地,所述第一加載服務(wù)器將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組之后,還包括:
      [0124]所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      [0125]如圖7所示,為上述方式二中對(duì)單個(gè)大文件的數(shù)據(jù)切割示意圖;假設(shè)數(shù)據(jù)庫系統(tǒng)共有三個(gè)數(shù)據(jù)節(jié)點(diǎn),每個(gè)加載服務(wù)器將數(shù)據(jù)文件劃分為三個(gè)數(shù)據(jù)組,分別用偏移量表示為A?B,B?C,C?D,其中,A、B、C、D分別表示相對(duì)數(shù)據(jù)文件開頭偏移的字節(jié)數(shù);每個(gè)數(shù)據(jù)組分別對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn);當(dāng)數(shù)據(jù)節(jié)點(diǎn)I處理數(shù)據(jù)的速率較慢時(shí),加載服務(wù)器可以減少數(shù)據(jù)節(jié)點(diǎn)I對(duì)應(yīng)的數(shù)據(jù)組的數(shù)據(jù)量,將其調(diào)整為A?B-N,N表示減少的字節(jié)數(shù),而將處理數(shù)據(jù)的速率較快的數(shù)據(jù)節(jié)點(diǎn)2的偏移量調(diào)整為B-N?C。
      [0126]如圖8所示,為上述方式二中加載服務(wù)器分發(fā)數(shù)據(jù)示意圖;針對(duì)數(shù)據(jù)庫系統(tǒng)中的三個(gè)數(shù)據(jù)節(jié)點(diǎn),每個(gè)加載服務(wù)器將存儲(chǔ)的同一個(gè)數(shù)據(jù)文件劃分為三個(gè)行完整的數(shù)據(jù)組,分別對(duì)應(yīng)每個(gè)數(shù)據(jù)節(jié)點(diǎn),并將每個(gè)數(shù)據(jù)組劃分為多個(gè)數(shù)據(jù)塊,針對(duì)其中任意一個(gè)加載服務(wù)器,該加載服務(wù)器在接收到某個(gè)數(shù)據(jù)節(jié)點(diǎn)發(fā)送的數(shù)據(jù)請求消息后,從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊發(fā)送給該數(shù)據(jù)節(jié)點(diǎn),在給每個(gè)數(shù)據(jù)節(jié)點(diǎn)分發(fā)數(shù)據(jù)時(shí),可以從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中按順序取出數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn),因此,每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)不需要一定是行完整的,但是,在該數(shù)據(jù)節(jié)點(diǎn)從一個(gè)加載服務(wù)器轉(zhuǎn)移到其它加載服務(wù)器下載數(shù)據(jù)時(shí),需要攜帶已下載數(shù)據(jù)的文件偏移量信息,以便于其它加載服務(wù)器根據(jù)該文件偏移量信息確定為該數(shù)據(jù)節(jié)點(diǎn)分配的數(shù)據(jù)塊,保證數(shù)據(jù)下載的完整性及不重復(fù)性。
      [0127]與上述實(shí)施例一中數(shù)據(jù)節(jié)點(diǎn)執(zhí)行數(shù)據(jù)加載和實(shí)施例二中加載服務(wù)器為各數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)的數(shù)據(jù)加載方法相對(duì)應(yīng),本發(fā)明實(shí)施例還提供了主節(jié)點(diǎn)指示各數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)加載的方法;
      [0128]如圖9所示,為本發(fā)明實(shí)施例三提供的數(shù)據(jù)加載方法流程圖;
      [0129]本發(fā)明實(shí)施例應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),在本發(fā)明實(shí)施例中,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括:
      [0130]S901:主節(jié)點(diǎn)接收數(shù)據(jù)加載指令;
      [0131]S902:所述主節(jié)點(diǎn)將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0132]為了更詳細(xì)地說明本發(fā)明實(shí)施例進(jìn)行數(shù)據(jù)加載的方法,下面通過幾個(gè)具體的實(shí)施例作進(jìn)一步說明:
      [0133]如圖10所示,為本發(fā)明實(shí)施例四針對(duì)多個(gè)數(shù)據(jù)文件進(jìn)行數(shù)據(jù)加載的方法流程圖,包括:
      [0134]SlOOl:各加載服務(wù)器接收并存儲(chǔ)數(shù)據(jù)庫系統(tǒng)外的節(jié)點(diǎn)發(fā)送的多個(gè)數(shù)據(jù)文件;其中,不同加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)文件不同;
      [0135]S1002:主節(jié)點(diǎn)接收數(shù)據(jù)加載指令,并將接收的指令下發(fā)給所屬的分布式數(shù)據(jù)庫系統(tǒng)內(nèi)的各數(shù)據(jù)節(jié)點(diǎn);
      [0136]這里,用戶可以通過編輯結(jié)構(gòu)化查詢語言(Structured Query Language, SQL)語句在主節(jié)點(diǎn)輸入數(shù)據(jù)加載指令。
      [0137]S1003:各數(shù)據(jù)節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,查詢所述數(shù)據(jù)庫系統(tǒng)的外表中記錄的加載服務(wù)器的地址,連接加載服務(wù)器,并向連接的加載服務(wù)器發(fā)送數(shù)據(jù)請求消息;
      [0138]在具體實(shí)施中,針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)確定當(dāng)前為其提供數(shù)據(jù)的加載服務(wù)器分配數(shù)據(jù)的速率低于設(shè)定閾值,可以重新連接其它的加載服務(wù)器下載數(shù)據(jù),以提高數(shù)據(jù)下載效率。
      [0139]S1004:各加載服務(wù)器在接收到數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)請求消息后,為每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配一個(gè)數(shù)據(jù)塊;其中,所述數(shù)據(jù)塊中的數(shù)據(jù)為行完整的;
      [0140]在具體實(shí)施中,各加載服務(wù)器可以在接收并存儲(chǔ)數(shù)據(jù)庫系統(tǒng)外的節(jié)點(diǎn)發(fā)送的數(shù)據(jù)后,即將該數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,也可以在接收到數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)請求消息后,再將存儲(chǔ)的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;
      [0141]在具體實(shí)施中,每個(gè)數(shù)據(jù)節(jié)點(diǎn)在下載一個(gè)數(shù)據(jù)塊后,將該數(shù)據(jù)塊緩存在本地,在將該數(shù)據(jù)塊中的數(shù)據(jù)處理完畢后,再向加載服務(wù)器請求數(shù)據(jù),如此,可以減少網(wǎng)絡(luò)交互,同時(shí),采用這種不固定分配數(shù)據(jù)的方式,在數(shù)據(jù)下載過程中,數(shù)據(jù)處理能力高的數(shù)據(jù)節(jié)點(diǎn)可以請求處理較多的數(shù)據(jù),實(shí)現(xiàn)對(duì)不同數(shù)據(jù)節(jié)點(diǎn)的按需分配,提高整個(gè)數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)處理效率;
      [0142]S1005:各數(shù)據(jù)節(jié)點(diǎn)確定接收的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn),針對(duì)其中任意一條邏輯記錄,若確定該條邏輯記錄屬于本節(jié)點(diǎn),則將該條邏輯記錄存儲(chǔ)在本地,若確定該條邏輯記錄屬于其他數(shù)據(jù)節(jié)點(diǎn),則將該條邏輯記錄轉(zhuǎn)發(fā)給其它數(shù)據(jù)節(jié)點(diǎn);
      [0143]S1006:各數(shù)據(jù)節(jié)點(diǎn)在從為數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)的所有的加載服務(wù)器中都無法取到數(shù)據(jù)時(shí),確定完成數(shù)據(jù)加載,并將數(shù)據(jù)加載完成的信息反饋給主節(jié)點(diǎn);
      [0144]S1007:主節(jié)點(diǎn)將數(shù)據(jù)加載完成的信息通知給用戶。
      [0145]如圖11所示,為本發(fā)明實(shí)施例五針對(duì)單個(gè)較大的數(shù)據(jù)文件進(jìn)行數(shù)據(jù)加載的方法流程圖,包括:
      [0146]SllOl:各加載服務(wù)器接收并存儲(chǔ)數(shù)據(jù)庫系統(tǒng)外的節(jié)點(diǎn)發(fā)送的同一個(gè)數(shù)據(jù)文件;
      [0147]S1102:主節(jié)點(diǎn)接收數(shù)據(jù)加載指令,并將接收的指令下發(fā)給所屬的分布式數(shù)據(jù)庫系統(tǒng)內(nèi)的各數(shù)據(jù)節(jié)點(diǎn);
      [0148]S1103:各數(shù)據(jù)節(jié)點(diǎn)在接收到數(shù)據(jù)加載指令后,查詢所述數(shù)據(jù)庫系統(tǒng)的外表中記錄的加載服務(wù)器的地址,連接加載服務(wù)器,并向連接的加載服務(wù)器發(fā)送數(shù)據(jù)請求消息;
      [0149]在具體實(shí)施中,針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)確定當(dāng)前為其提供數(shù)據(jù)的加載服務(wù)器分配數(shù)據(jù)的速率低于設(shè)定閾值,可以重新連接其它的加載服務(wù)器下載數(shù)據(jù),以提高數(shù)據(jù)下載效率;由于各加載服務(wù)器中存儲(chǔ)的為同一個(gè)數(shù)據(jù)文件,該數(shù)據(jù)節(jié)點(diǎn)在重新連接其它的加載服務(wù)器下載數(shù)據(jù)時(shí),需要同時(shí)向該重新連接的加載服務(wù)器發(fā)送已下載數(shù)據(jù)的文件偏移量信息,以使該重新連接的加載服務(wù)器根據(jù)該文件偏移量信息,確定分配給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)。
      [0150]S1104:各加載服務(wù)器在接收到數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)請求消息后,從預(yù)先確定的該數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)組中選取一個(gè)數(shù)據(jù)塊發(fā)送給該數(shù)據(jù)節(jié)點(diǎn);
      [0151]在具體實(shí)施中,各加載服務(wù)器需要根據(jù)數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)文件劃分為M個(gè)數(shù)據(jù)組,每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn),并將每個(gè)數(shù)據(jù)組劃分為多個(gè)數(shù)據(jù)塊,在為一個(gè)數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)時(shí),從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中按數(shù)據(jù)的邏輯順序,選擇一個(gè)數(shù)據(jù)塊發(fā)送給該數(shù)據(jù)節(jié)點(diǎn);
      [0152]在具體實(shí)施中,當(dāng)加載服務(wù)器發(fā)現(xiàn)某個(gè)數(shù)據(jù)節(jié)點(diǎn)處理數(shù)據(jù)的速率較快時(shí),可以調(diào)整已劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量,為該數(shù)據(jù)節(jié)點(diǎn)分配較多的數(shù)據(jù)。
      [0153]S1105:各數(shù)據(jù)節(jié)點(diǎn)確定接收的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn),針對(duì)其中任意一條邏輯記錄,若確定該條邏輯記錄屬于本節(jié)點(diǎn),則將該條邏輯記錄存儲(chǔ)在本地,若確定該條邏輯記錄屬于其他數(shù)據(jù)節(jié)點(diǎn),則將該條邏輯記錄轉(zhuǎn)發(fā)給其它數(shù)據(jù)節(jié)點(diǎn);
      [0154]S1106:各數(shù)據(jù)節(jié)點(diǎn)在從為數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)的所有的加載服務(wù)器中都無法取到數(shù)據(jù)時(shí),確定完成數(shù)據(jù)加載,并將數(shù)據(jù)加載完成的信息反饋給主節(jié)點(diǎn);
      [0155]SI 107:主節(jié)點(diǎn)將數(shù)據(jù)加載完成的信息通知給用戶。
      [0156]基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種與數(shù)據(jù)加載方法對(duì)應(yīng)的數(shù)據(jù)加載裝置,由于該裝置解決問題的原理與本發(fā)明實(shí)施例數(shù)據(jù)加載方法相似,因此該裝置的實(shí)施可以參見方法的實(shí)施,重復(fù)之處不再贅述。
      [0157]如圖12所示,為本發(fā)明實(shí)施例一提供的數(shù)據(jù)加載裝置示意圖,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),所述裝置設(shè)置于每個(gè)數(shù)據(jù)節(jié)點(diǎn)中,所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0158]獲取模塊121,用于在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊傳輸至檢測模塊122 ;
      [0159]檢測模塊122,用于檢測所述獲取模塊121獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn);
      [0160]處理模塊123,用于針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,在所述檢測模塊122檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      [0161]可選地,所述獲取模塊121具體用于:
      [0162]至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊;若確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      [0163]可選地,所述獲取模塊121具體用于:
      [0164]確定第一次向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息,所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息,向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊;其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      [0165]如圖13所示,為本發(fā)明實(shí)施例二提供的數(shù)據(jù)加載裝置示意圖,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),該裝置設(shè)置于加載服務(wù)器中,所述加載服務(wù)器用于為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0166]接收模塊131,用于接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù),并將接收的數(shù)據(jù)傳輸至劃分模塊132 ;
      [0167]劃分模塊132,用于將接收模塊131接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,并將劃分的數(shù)據(jù)塊傳輸至分配模塊133 ;
      [0168]分配模塊133,用于在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分模塊132劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0169]可選地,所述接收模塊131接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述劃分模塊132劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      [0170]可選地,所述接收模塊131接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件;
      [0171]所述分配模塊133具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      [0172]可選地,所述劃分模塊132具體用于:根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn);
      [0173]所述分配模塊133具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      [0174]可選地,所述劃分模塊132還用于:
      [0175]所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      [0176]如圖14所示,為本發(fā)明實(shí)施例三提供的數(shù)據(jù)加載裝置示意圖,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),所述裝置設(shè)置于所述主節(jié)點(diǎn)中;所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括:
      [0177]接收模塊141,用于接收數(shù)據(jù)加載指令,并將接收的所述數(shù)據(jù)加載指令傳輸至發(fā)送模塊142 ;[0178]發(fā)送模塊142,用于將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      [0179]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
      [0180]本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
      [0181]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
      [0182]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
      [0183]盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
      [0184]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
      【權(quán)利要求】
      1.一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括: 第一數(shù)據(jù)節(jié)點(diǎn)在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊; 所述第一數(shù)據(jù)節(jié)點(diǎn)檢測獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn); 針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,所述第一數(shù)據(jù)節(jié)點(diǎn)在檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      2.如權(quán)利要求1所述的方法,其特征在于,所述第一數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,包括: 所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊; 若所述第一數(shù)據(jù)節(jié)點(diǎn)確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      3.如權(quán)利要求2所述 的方法,其特征在于,所述第一數(shù)據(jù)節(jié)點(diǎn)至少一次向所述第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息, 包括: 所述第一數(shù)據(jù)節(jié)點(diǎn)確定第一 次 向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息;所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息; 所述第一數(shù)據(jù)節(jié)點(diǎn)向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊; 其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      4.一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括: 第一加載服務(wù)器接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù); 所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊; 所述第一加載服務(wù)器在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      5.如權(quán)利要求4所述的方法,其特征在于,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述第一加載服務(wù)器劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      6.如權(quán)利要求4所述的方法,其特征在于,所述第一加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)與其它為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件; 所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊之前,還包括: 針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則所述第一加載服務(wù)器根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      7.如權(quán)利要求6所述的方法,其特征在于,所述第一加載服務(wù)器將接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,包括: 所述第一加載服務(wù)器根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn); 所述第一加載服務(wù)器分別為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,包括: 針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),所述第一加載服務(wù)器從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      8.如權(quán)利要求7所述的方法,其特征在于,所述第一加載服務(wù)器將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組之后,還包括: 所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      9.一種數(shù)據(jù)加載方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,采用加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該方法包括: 主節(jié)點(diǎn)接收數(shù)據(jù)加載指令; 所述主節(jié)點(diǎn)將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      10.一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,所述裝置設(shè)置于每個(gè)數(shù)據(jù)節(jié)點(diǎn)中,所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括: 獲取模塊,用于在接收到所屬的數(shù)據(jù)庫系統(tǒng)的主節(jié)點(diǎn)發(fā)送的數(shù)據(jù)加載指令后,從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊傳輸至檢測模塊; 檢測模塊,用于檢測所述獲取模塊獲取的數(shù)據(jù)塊中每條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn); 處理模塊,用于針對(duì)數(shù)據(jù)塊中的任意一條邏輯記錄,在所述檢測模塊檢測到該條邏輯記錄屬于本節(jié)點(diǎn)后,將該條邏輯記錄存儲(chǔ)在本地,在檢測到該條邏輯記錄屬于所述數(shù)據(jù)庫系統(tǒng)的其它數(shù)據(jù)節(jié)點(diǎn)后,將該條邏輯記錄轉(zhuǎn)發(fā)給所述其它數(shù)據(jù)節(jié)點(diǎn)。
      11.如權(quán)利要求10所述的裝置,其特征在于,所述獲取模塊具體用于: 至少一次向多個(gè)加載服務(wù)器中的第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第一加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊;若確定所述第一加載服務(wù)器分配數(shù)據(jù)塊的速率低于設(shè)定閾值,則在將最近一次獲取的數(shù)據(jù)塊處理完畢后,至少一次向第二加載服務(wù)器發(fā)送數(shù)據(jù)請求消息,每次接收所述第二加載服務(wù)器分配的一個(gè)數(shù)據(jù)塊。
      12.如權(quán)利要求11所述的裝置,其特征在于,所述獲取模塊具體用于: 確定第一次向所述第二加載服務(wù)器發(fā)送的數(shù)據(jù)請求消息,所述確定的數(shù)據(jù)請求消息中包括已獲取的數(shù)據(jù)塊對(duì)應(yīng)的文件偏移量信息,向所述第二加載服務(wù)器發(fā)送確定的所述數(shù)據(jù)請求消息,以使所述第二加載服務(wù)器根據(jù)接收的數(shù)據(jù)請求消息中包括的所述文件偏移量信息確定需要分配給所述第一數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊;其中,所述第一加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)與所述第二加載服務(wù)器中存儲(chǔ)的數(shù)據(jù)相同,且屬于同一數(shù)據(jù)文件。
      13.一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,該裝置設(shè)置于加載服務(wù)器中,所述加載服務(wù)器用于為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括: 接收模塊,用于接收并存儲(chǔ)需要提供給數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù),并將接收的數(shù)據(jù)傳輸至劃分模塊; 劃分模塊,用于將接收模塊接收的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊,并將劃分的數(shù)據(jù)塊傳輸至分配模塊; 分配模塊,用于在接收到所述數(shù)據(jù)庫系統(tǒng)內(nèi)的多個(gè)數(shù)據(jù)節(jié)點(diǎn)根據(jù)所述主節(jié)點(diǎn)的指示發(fā)送的數(shù)據(jù)請求消息后,分別基于劃分 模塊劃分的數(shù)據(jù)塊為所述多個(gè)數(shù)據(jù)節(jié)點(diǎn)中的每個(gè)數(shù)據(jù)節(jié)點(diǎn)分配不同的數(shù)據(jù)塊,以使每個(gè)數(shù)據(jù)節(jié)點(diǎn)在獲取數(shù)據(jù)塊后,將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬的數(shù)據(jù)節(jié)點(diǎn)。
      14.如權(quán)利要求13所述的裝置,其特征在于,所述接收模塊接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)不同;所述劃分模塊劃分的每個(gè)數(shù)據(jù)塊中的數(shù)據(jù)是行完整的。
      15.如權(quán)利要求13所述的裝置,其特征在于,所述接收模塊接收并存儲(chǔ)的數(shù)據(jù)與為所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)提供數(shù)據(jù)塊的其它加載服務(wù)器接收并存儲(chǔ)的數(shù)據(jù)相同,且屬于同一個(gè)數(shù)據(jù)文件; 所述分配模塊具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),若該數(shù)據(jù)節(jié)點(diǎn)在向所述第一加載服務(wù)器發(fā)送數(shù)據(jù)請求消息之前,已從其它加載服務(wù)器獲取了數(shù)據(jù)塊,則根據(jù)該數(shù)據(jù)節(jié)點(diǎn)發(fā)送的文件偏移量信息,確定需要發(fā)送給該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)塊。
      16.如權(quán)利要求15所述的裝置,其特征在于,所述劃分模塊具體用于:根據(jù)所述數(shù)據(jù)庫系統(tǒng)內(nèi)的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù)M,將存儲(chǔ)的數(shù)據(jù)劃分為M個(gè)數(shù)據(jù)組,并將每個(gè)數(shù)據(jù)組中的數(shù)據(jù)劃分為多個(gè)數(shù)據(jù)塊;其中,M為正整數(shù),每個(gè)數(shù)據(jù)組對(duì)應(yīng)一個(gè)數(shù)據(jù)節(jié)點(diǎn); 所述分配模塊具體用于:針對(duì)一個(gè)數(shù)據(jù)節(jié)點(diǎn),從對(duì)應(yīng)該數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)組中選擇一個(gè)數(shù)據(jù)塊分配給該數(shù)據(jù)節(jié)點(diǎn)。
      17.如權(quán)利要求16所述的裝置,其特征在于,所述劃分模塊還用于:所述第一加載服務(wù)器根據(jù)不同數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)處理速率的不同,調(diào)整劃分的每個(gè)數(shù)據(jù)組的數(shù)據(jù)量。
      18.一種數(shù)據(jù)加載裝置,該裝置應(yīng)用于數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的加載,該數(shù)據(jù)庫系統(tǒng)包括多個(gè)數(shù)據(jù)節(jié)點(diǎn)和管理各數(shù)據(jù)節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,所述裝置設(shè)置于所述主節(jié)點(diǎn)中;所述數(shù)據(jù)庫系統(tǒng)外設(shè)置有加載服務(wù)器為所述數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)塊,所述數(shù)據(jù)塊為包括多條邏輯記錄的數(shù)據(jù)傳輸單元,其中每條邏輯記錄對(duì)應(yīng)數(shù)據(jù)庫中存儲(chǔ)的一行數(shù)據(jù),該裝置包括: 接收模塊,用于接收數(shù)據(jù)加載指令,并將接收的所述數(shù)據(jù)加載指令傳輸至發(fā)送模塊;發(fā)送模塊,用于將所述數(shù)據(jù)加載指令發(fā)送給所屬的數(shù)據(jù)庫系統(tǒng)內(nèi)的每個(gè)數(shù)據(jù)節(jié)點(diǎn),指示所述每個(gè)數(shù)據(jù)節(jié)點(diǎn)從加載服務(wù)器中獲取數(shù)據(jù)塊,并將獲取的數(shù)據(jù)塊中的每條邏輯記錄分配到該條邏輯記錄所屬 的數(shù)據(jù)節(jié)點(diǎn)。
      【文檔編號(hào)】G06F17/30GK103544285SQ201310516735
      【公開日】2014年1月29日 申請日期:2013年10月28日 優(yōu)先權(quán)日:2013年10月28日
      【發(fā)明者】楊卓慧 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1