一種數據庫集群批量快速加載數據的方法及加載系統的制作方法
【技術領域】
[0001]本發明涉及數據庫集群的加載技術,尤其涉及一種數據庫集群批量快速加載數據的方法。
【背景技術】
[0002]隨著信息化技術的快速發展,一個企業的用戶數量、數據量均呈現爆炸式增長,在業務量提高的同時,數據庫的訪問量和數據量快速增長對數據庫處理能力和計算強度也相應增大,使得單一節點數據庫根本無法承擔。在這樣一個背景下,大型分布式數據庫集群產生了,所謂數據庫集群,是指利用兩臺或多臺數據庫服務,構成一個虛擬單一數據庫邏輯映像,像單數據庫那樣,向客戶端提供透明的數據服務。
[0003]在數據庫集群系統中,提供了數據的分布式存儲以及并行運算功能。對于分布式存儲,其表現是一張表(例如Tablel)的數據分別存儲在多個集群節點上,而在集群的外部(例如應用系統)使用Tablel表時,看到的是表Tablel的全部數據,無法看到集群內部數據的分布情況;對于并行運算,其表現是,針對Tablel的查詢操作,可以在集群內部的多個集群節點上并行執行查詢操作,進而提高數據的訪問速度。
[0004]由于數據庫集群的分布表特性決定,向數據庫集群插入數據的時候,需要由集群節點依據表的分布規則確定插入數據所歸屬的集群節點,并由歸屬節點執行數據存儲操作。通常,在數據庫集群中提供單條數據插入功能與多條數據批量插入功能。而在數據庫集群中,采用最多的是批量插入功能,如圖1所示。以一個三節點的集群為例,向數據庫集群中批量插入數據的一般方法如圖2所示是:
[0005](1)客戶端與集群節點2建立連接,發起批量數據加載請求,例如向表Tablel中批量加載10萬條數據
[0006](2)集群節點2接收到客戶端的批量數據加載請求,接收客戶端發送的加載數據。集群節點2根據表Tablel的分布規則拆分數據為三份,將屬于本集群節點的數據發送到本集群節點,將屬于集群節點1的數據發送到集群節點1,屬于集群節點3數據發送到集群節點3
[0007](3)集群節點2將屬于本集群節點的數據存儲到本集群節點的Tablel中,集群節點1接收集群節點2發送的數據并存儲到集群節點2的Tablel中,并給集群節點2發送加載數據成功響應;集群節點3接收集群節點2發送的數據并存儲到集群節點3的Tablel中,并給集群節點2發送加載數據成功響應;
[0008](4)集群節點2接收到集群節點1、集群節點3加載數據成功響應,并判斷本集群節點加載數據成功,發批量加載數據響應給客戶端;
[0009](5)客戶端接收到集群節點2的批量加載數據響應,本次批量加載數據完成
[0010]在上述過程中,集群節點2需要完成加載數據獲取、拆分等工作,造成本集群節點的負載過大,進而影響了整個集群的數據加載速度。雖然其他節點也可以并發的接收客戶端發起的批量加載任務,但是由于同樣存在負載過重的原因,導致整個集群的數據加載速度不快,同時,由于沒有統一的調度協調,會造成數據庫集群的負載不均衡,且容易出現數據不一致問題。
【發明內容】
[0011]本發明所要解決的技術問題是在現有技術的基礎上,提出一種數據庫集群批量快速加載數據的方法,解決當前數據庫集群加載數據慢且加載負荷不均衡的問題,并保證數據的一致性,提高數據庫集群的高可用性。
[0012]本發明提供的實現方法包括包括如下步驟:
[0013](1)數據庫集群中設置加載系統,客戶端建立與加載系統的連接以后,發起批量加載請求給加載系統;
[0014](2)加載系統接收到客戶端的批量加載請求,獲取加載數據,并獲取數據的分布規貝1J,執行數據預處理操作,然后將數據分發到數據庫集群的每個集群節點;
[0015](3)每個集群節點接收加載系統分發的數據并存儲到本解決節點中,發加載成功響應給加載系統;
[0016](4)加載系統接收到每個集群節點的加載成功響應以后,發加載成功響應給客戶端;
[0017](5)客戶端接收到加載系統的加載成功響應,本次批量數據加載完成。
[0018]進一步的,所述步驟(1)中包含以下處理,客戶端通過配置文件的方式通知加載系統數據文件的位置;同時,配置文件中配置最大加載速度。
[0019]更進一步的,所述步驟(2)中,包含以下步驟:
[0020]al、加載系統接收到客戶端的批量加載請求以后,通過配置文件獲取數據文件的位置,獲取數據文件內容;
[0021]a2、加載系統與數據庫集群系統建立連接,獲取數據的分布規則,對數據進行清洗、過濾、按數據的分布規則切分數據并將切分后的數據對應到每個集群節點;
[0022]a3、加載系統與每個集群節點建立連接,將切分后的數據發送到對應的集群節點上。
[0023]進一步的,所述步驟(3)中,還包含如下處理,如果某個或某幾個集群節點加載數據失敗,則發送數據加載失敗響應消息給加載系統。
[0024]更進一步的,所述步驟(4)中,包含以下處理,如果加載系統接收到一個或者多個集群節點的加載數據失敗響應,則加載系統發送rollback消息給加載成功的集群節點,回退本次加載的數據,然后發加載失敗響應給客戶端,保證集群數據的一致性。
[0025]進一步的,加載系統與數據庫集群的每個集群節點連接方式為TCP/IP或者UDP/IP連接。
[0026]本發明還提供了一種數據庫集群批量快速加載數據的加載系統,包括:接口模塊,用于提供與客戶端和數據庫集群的接口;數據獲取模塊,用于從客戶端獲取批量加載數據,以及從數據庫集群獲取數據的分布規則;數據預處理模塊,用于對數據進行清洗、過濾、按數據的分布規則切分數據;數據加載模塊,用于將預處理后的數據分發到數據庫集群的每個集群節點;消息處理系統,用于接收數據庫集群節點的加載成功響應,并發送加載成功響應至客戶端。
[0027]進一步的,所述數據獲取模塊設有配置文件讀取單元,用于讀取客戶端發送的配置文件,獲取數據文件的位置,獲取數據文件內容。
[0028]進一步的,所述消息處理系統還設有加載失敗處理單元,用于接收一個或者多個集群節點的加載數據失敗響應,然后發送rollback消息給加載成功的集群節點,回退本次加載的數據,然后發加載失敗響應給客戶端,保證集群數據的一致性。
[0029]進一步的,所述接口模塊中與數據庫集群的接口為TCP/IP或者UDP/IP。
[0030]本發明具有的優點和積極效果是:
[0031 ] 1.批量快速加載數據:加載系統專職向數據庫集群批量加載數據,可在數據庫集群外部完成加載數據的全部準備工作,避免了由某個集群節點因承擔該部分工作而造成的單點負載失衡而引起的加載速度慢問題。通過本發明,集群節點的加載工作只有一個任務,將加載系統提供的批量數據一次或者分批次加載到數據庫中,不需要對數據的有效性進行檢查,因此極大提高了加載速度;
[0032]2.負載均衡且可控制:加載系統負責向數據庫集群提供加載數據,可根據每個集群節點的加載性能動態調整加載數據發送速度,也可