新四季網

一種數據加載方法及裝置製造方法

2023-05-08 14:50:01

一種數據加載方法及裝置製造方法
【專利摘要】本發明涉及數據處理領域,尤其涉及一種數據加載方法及裝置,用以提高對系統內各個數據節點的資源及網絡帶寬的利用效率;本發明數據加載方法中,第一數據節點在接收到所屬的資料庫系統的主節點發送的數據加載指令後,從加載伺服器中獲取數據塊,並檢測獲取的數據塊中每條邏輯記錄所屬的數據節點,針對其中任意一條邏輯記錄,在檢測到該條邏輯記錄屬於本節點後,將該條邏輯記錄存儲在本地,在檢測到該條邏輯記錄屬於所述資料庫系統的其它數據節點後,將該條邏輯記錄轉發給所述其它數據節點。本發明將分布式資料庫系統的數據重分布能力布置在資料庫系統中的每個數據節點,從而可以充分利用資料庫系統中每個數據節點的資源及網絡帶寬。
【專利說明】—種數據加載方法及裝置
【技術領域】
[0001]本發明涉及數據處理領域,尤其涉及一種數據加載方法及裝置。
【背景技術】
[0002]分布式資料庫系統是在集中式資料庫系統的基礎上發展起來的,是計算機技術和網絡技術相結合的產物。相比集中式資料庫系統,分布式資料庫系統具有許多優勢:首先,分布式資料庫系統可以允許各個分散部門將其常用的數據存儲在本地,從而可以降低數據傳送的成本,提高響應速率,其次,由於分布式資料庫系統允許在網絡出現故障時,對局部資料庫進行操作,從而可以提高系統的可靠性,再次,由於在分布式資料庫系統中增加一個新的局部資料庫,或在某個位置擴充一臺適當的小型計算機,都很容易實現,因此,分布式資料庫系統的可擴展性也比較高。分布式資料庫系統的低延遲、高可靠、易擴展等優點成為企業部署資料庫系統的首選。
[0003]分布式資料庫系統主要包括一個主節點(master)和多個數據節點(datanode),在該系統中,進行數據加載的方式是採用主節點或系統外的數據導入組件作為數據加載的入口,由該主節點或數據導入組件對需要入庫的數據進行拆分解析等處理,確定不同數據所屬的數據節點,並將處理後的數據分發給資料庫中對應的數據節點,因此,分布式資料庫系統的整體加載性能依賴於上述主節點或數據導入組件的處理性能,在數據量較大、系統內數據節點數量較多時,上述主節點或數據導入組件需要將大量的數據進行拆分解析後,分別分發給對應的各個數據節點,耗時較長,這時,上述主節點或數據導入組件會成為整個資料庫系統進行數據加載的瓶頸,在主節點或數據導入組件將數據分發到數據節點之前,該數據節點無法對數據進行任何處理,因此,採用這種加載方式對系統內各個數據節點的資源及網絡帶寬的利用效率較低。

【發明內容】

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

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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀