專利名稱:一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法。
背景技術(shù):
隨著信息時代的來臨,數(shù)據(jù)出現(xiàn)爆炸式增長。面對海量數(shù)據(jù),企業(yè)對數(shù)據(jù)庫系統(tǒng)的處理能力和計算強度要求越來越高,因此,數(shù)據(jù)庫集群開始逐步替代單一服務(wù)器模式的數(shù)據(jù)庫,成為企業(yè)應(yīng)對海量數(shù)據(jù)的首選。數(shù)據(jù)庫集群通過高速網(wǎng)絡(luò)將多個數(shù)據(jù)庫服務(wù)器聯(lián)合起來組成集群,可以實現(xiàn)綜合性能優(yōu)于單個大型服務(wù)器。數(shù)據(jù)的海量不單單指數(shù)據(jù)規(guī)模大,還體現(xiàn)在數(shù)據(jù)增長快。因此,企業(yè)要求數(shù)據(jù)庫集群在具備高效的數(shù)據(jù)計算處理能力同時,還需要具備高速的數(shù)據(jù)導入能力。另外,企業(yè)在首次部署數(shù)據(jù)庫集群后,需要快速將海量的歷史數(shù)據(jù)入庫,以便盡快提供服務(wù)。如何能夠高速地完成數(shù)據(jù)導入成為各個數(shù)據(jù)庫集群關(guān)注的問題。目前,各大主流數(shù)據(jù)庫集群產(chǎn)品都是依靠系統(tǒng)自身來完成數(shù)據(jù)的導入,如圖I所
/Jn o數(shù)據(jù)庫集群內(nèi)部包含一個(或多個)控制節(jié)點,負責驅(qū)動各個數(shù)據(jù)庫節(jié)點,協(xié)調(diào)整個系統(tǒng)的工作??刂乒?jié)點包括數(shù)據(jù)導入、并行計算、負載均衡與安全管理等功能,其中數(shù)據(jù)導入功能模塊負責對數(shù)據(jù)導入存儲,如圖2所示,數(shù)據(jù)導入功能模塊主要包括以下兩方面功能1、按照設(shè)定的分片策略(哈希、范圍、循環(huán)方式)計算數(shù)據(jù)的存儲位置;2、通過導入接口將數(shù)據(jù)發(fā)往數(shù)據(jù)庫節(jié)點,完成數(shù)據(jù)的存儲。這種將數(shù)據(jù)導入、數(shù)據(jù)計算等操作統(tǒng)一集成于控制節(jié)點內(nèi)的實現(xiàn)方式存在兩個主要的問題I、資源爭用導致控制節(jié)點成為瓶頸數(shù)據(jù)導入過程中的分片計算需要對每一條記錄進行處理,占用大量的CPU計算。將數(shù)據(jù)發(fā)往數(shù)據(jù)庫節(jié)點時需要進行數(shù)據(jù)緩存,占用大量的內(nèi)存資源;同時也會占用控制節(jié)點同數(shù)據(jù)庫節(jié)點之間的網(wǎng)絡(luò)資源。因此,在進行數(shù)據(jù)的高速、持續(xù)導入時,勢必會因大量的CPU、內(nèi)存、網(wǎng)絡(luò)資源開銷,致使控制節(jié)點成為瓶頸,從而影響數(shù)據(jù)庫集群的整體性能。2、服務(wù)器性能限制數(shù)據(jù)導入效率數(shù)據(jù)庫集群的服務(wù)器性能決定了其數(shù)據(jù)導入效率,當數(shù)據(jù)庫集群出現(xiàn)高負載時,會造成數(shù)據(jù)導入的阻塞、延遲,數(shù)據(jù)的延遲導入進而會影響對新數(shù)據(jù)處理計算的實時性。該影響會隨著數(shù)據(jù)導入量的增加而愈加明顯。采用多控制節(jié)點的數(shù)據(jù)庫集群可以將數(shù)據(jù)導入分派到多個控制節(jié)點并行處理,但這種分派的方式只能在一定程度上減輕數(shù)據(jù)導入過程中的資源爭用,但無法從根本上解決數(shù)據(jù)的高速導入的性能問題。綜上所述,由控制節(jié)點統(tǒng)一完成所有操作的方式無法在數(shù)據(jù)的高速導入與處理計算間達到平衡。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種可實現(xiàn)數(shù)據(jù)的高速導入且可最大限度減輕控制節(jié)點負擔的數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法。本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實現(xiàn)的一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,采用將數(shù)據(jù)導入模塊從數(shù)據(jù)庫集群中的控制節(jié)點中分離出來構(gòu)成獨立的數(shù)據(jù)導入驅(qū)動組件,在數(shù)據(jù)庫集群中的控制節(jié)點中增加交互控制模塊,并且通過以下步驟實現(xiàn)步驟I :數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互模塊建立連接并獲取各個數(shù)據(jù)庫節(jié)點連接信息;
步驟2 :數(shù)據(jù)導入驅(qū)動組件通過步驟I建立的數(shù)據(jù)庫集群連接獲取目標表的模式信息及分片存儲信息并與相關(guān)數(shù)據(jù)庫節(jié)點建立連接;步驟3 :數(shù)據(jù)導入驅(qū)動組件向相關(guān)數(shù)據(jù)庫節(jié)點進行數(shù)據(jù)導入,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息。而且,所述步驟I包括以下處理過程數(shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送建立連接請求,交互控制模塊響應(yīng)數(shù)據(jù)導入驅(qū)動組件連接請求,并向數(shù)據(jù)導入驅(qū)動組件發(fā)送數(shù)據(jù)庫節(jié)點連接信息,數(shù)據(jù)導入驅(qū)動組件獲取集群的各個數(shù)據(jù)庫節(jié)點連接信息。而且,所述步驟2包括以下處理過程數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群進行時間同步,數(shù)據(jù)導入驅(qū)動組件向交互控制模塊詢問目標表是否可用?交互控制模塊檢查目標表是否可用并回復(fù);數(shù)據(jù)導入驅(qū)動組件向交互控制模塊獲取目標表的模式信息和分片存儲信息,交互控制模塊將目標表的模式信息及分片存儲信息傳送給數(shù)據(jù)導入驅(qū)動組件;數(shù)據(jù)導入驅(qū)動組件與相關(guān)數(shù)據(jù)庫節(jié)點建立連接。而且,所述數(shù)據(jù)導入驅(qū)動組件通過JDBC、ODBC及OLEDB標準方式或定制優(yōu)化的數(shù)
據(jù)庫訪問方式同相關(guān)的數(shù)據(jù)庫節(jié)點建立連接。而且,所述步驟3包括以下處理過程數(shù)據(jù)導入驅(qū)動組件在數(shù)據(jù)導入過程時,開啟一個獨立的后臺線程負責監(jiān)控集群系統(tǒng)的控制消息,當數(shù)據(jù)庫集群需要進行修改表模式或數(shù)據(jù)備份操作時,交互控制模塊會通知數(shù)據(jù)導入驅(qū)動組件暫?;蛑兄箤?;數(shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送集群導入結(jié)果通知,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息,同時數(shù)據(jù)導入驅(qū)動組件釋放數(shù)據(jù)庫集群連接。本發(fā)明的優(yōu)點和積極效果是本發(fā)明將數(shù)據(jù)導入功能封裝為獨立的數(shù)據(jù)導入驅(qū)動組件,通過數(shù)據(jù)導入驅(qū)動組件和數(shù)據(jù)庫集群的控制節(jié)點中的交互控制模塊相互配合實現(xiàn)數(shù)據(jù)高速導入功能,將數(shù)據(jù)導入對CPU、內(nèi)存與網(wǎng)絡(luò)資源的使用轉(zhuǎn)移至客戶端,從而解放了控制節(jié)點,實現(xiàn)在盡可能少受數(shù)據(jù)庫集群干預(yù)的情況下完成數(shù)據(jù)的導入;同時,采用獨立數(shù)據(jù)導入的方式,可以方便的通過增加客戶端來實現(xiàn)并行導入,提升導入性能,從而滿足企業(yè)對數(shù)據(jù)高速導入的要求。
圖I是現(xiàn)有數(shù)據(jù)庫集群體系的結(jié)構(gòu)示意圖;圖2是現(xiàn)有數(shù)據(jù)庫集群體系的數(shù)據(jù)導入模塊處理示意圖;圖3是采用本發(fā)明的數(shù)據(jù)庫集群體系的結(jié)構(gòu)示意圖;圖4是采用本發(fā)明的一種應(yīng)用系統(tǒng)連接示意圖。
具體實施例方式以下結(jié)合附圖對本發(fā)明實施例做進一步詳述—種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,是在如圖3所示的系統(tǒng)框架上實現(xiàn)的。在該系統(tǒng)框架中,數(shù)據(jù)導入模塊從數(shù)據(jù)庫集群中的控制節(jié)點中分離出來并增加控制器模塊構(gòu)成獨立的數(shù)據(jù)導入驅(qū)動組件,該數(shù)據(jù)導入驅(qū)動組件既可以獨立存在,也可以嵌入到數(shù)據(jù)庫集群的JDBC、0DBC、0LEDB等標準數(shù)據(jù)庫訪問接口提供給用戶使用。該數(shù)據(jù)導入驅(qū)動組件的核心是數(shù)據(jù)導入模塊與控制器模塊,該數(shù)據(jù)導入模塊包括數(shù)據(jù)準備、數(shù)據(jù)分片計算、數(shù)據(jù)緩存發(fā)送模塊;控制器包括交互通信模塊和監(jiān)控線程模塊,交互通信模塊負責向數(shù)據(jù)庫集群發(fā)送數(shù)據(jù)導入請求,獲取相關(guān)信息并返回導入結(jié)果;監(jiān)控線程模塊負責在數(shù)據(jù)導入期間監(jiān)聽數(shù)據(jù)庫集群發(fā)送的控制信息。同時,在數(shù)據(jù)庫集群中的控制節(jié)點中增加交互控制模塊以實現(xiàn)同數(shù)據(jù)導入驅(qū)動組件的通信控制功能。本數(shù)據(jù)導入方法將數(shù)據(jù)導入對CPU、內(nèi)存與網(wǎng)絡(luò)資源的使用轉(zhuǎn)移至客戶端,從而解放了控制節(jié)點,實現(xiàn)在盡可能少受數(shù)據(jù)庫集群干預(yù)的情況下完成數(shù)據(jù)的導入;同時,采用獨立數(shù)據(jù)導入的方式,可以方便的通過增加客戶端來實現(xiàn)并行導入,提升導入性能,從而滿足企業(yè)對數(shù)據(jù)高速導入的要求。 本方法由數(shù)據(jù)導入驅(qū)動組件和數(shù)據(jù)庫集群中的交互控制模塊相互配合實現(xiàn)。數(shù)據(jù)導入驅(qū)動組件的功能為通過控制器同數(shù)據(jù)庫集群建立連接;待建立連接后需要進行時間同步,獲取各個數(shù)據(jù)庫節(jié)點連接信息,獲取目標表的模式與分片存儲信息;數(shù)據(jù)導入驅(qū)動獲取到相關(guān)信息后,通過標準(JDBC、ODBC、OLEDB等)或定制優(yōu)化的數(shù)據(jù)庫訪問接口同相關(guān)的數(shù)據(jù)庫節(jié)點建立連接,隨后完成向數(shù)據(jù)庫節(jié)點的直接導入。數(shù)據(jù)導入驅(qū)動組件的具體工作流程如下( I)同數(shù)據(jù)庫集群建立連接;(2)獲取集群的各個數(shù)據(jù)庫節(jié)點連接信息;(3)同數(shù)據(jù)庫集群進行時間同步;( 4 )詢問目標表是否可用;(5)獲取目標表的模式信息;(6)獲取目標表的分片存儲信息;(7)開啟后臺監(jiān)控線程;(8)開始導入數(shù)據(jù);(9)通知集群導入結(jié)果導入是否成功,導入數(shù)目;( 10)釋放數(shù)據(jù)庫集群連接;數(shù)據(jù)庫集群的控制節(jié)點中的交互控制模塊的功能為響應(yīng)驅(qū)動獲取數(shù)據(jù)導入信息的請求,若數(shù)據(jù)庫集群在數(shù)據(jù)導入期間需要進行修改表模式或數(shù)據(jù)備份操作,則需要由交互控制模塊預(yù)先通知各個數(shù)據(jù)導入程序暫停或中止導入操作。交互控制模塊的工作流程為( I)響應(yīng)數(shù)據(jù)導入驅(qū)動組件連接請求;(2)發(fā)送數(shù)據(jù)庫節(jié)點連接信息;(3)時間同步;( 4 )檢查目標表是否可用;(5)響應(yīng)獲取目標表的模式、分片相關(guān)信息請求;
(6)當需要進行修改表模式或數(shù)據(jù)備份操作時,通知數(shù)據(jù)導入驅(qū)動組件暫?;蛑兄箤?;(7)接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息。本數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,包括以下步驟I、數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互模塊建立連接并獲取各個數(shù)據(jù)庫節(jié)點連接信息;在本步驟中,數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互控制模塊進行如下交互過程數(shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送建立連接請求,交互控制模塊響應(yīng)數(shù)據(jù)導入驅(qū)動組件連接請求,并向數(shù)據(jù)導入驅(qū)動組件發(fā)送數(shù)據(jù)庫節(jié)點連接信息,數(shù)據(jù)導入驅(qū)動組件獲取集群的各個數(shù)據(jù)庫節(jié)點連接信息。 2、數(shù)據(jù)導入驅(qū)動組件通過步驟I建立的數(shù)據(jù)庫集群連接獲取目標表的模式信息及分片存儲信息并與相關(guān)數(shù)據(jù)庫節(jié)點建立連接;在本步驟中,數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互控制模塊進行如下交互過程數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群進行時間同步,數(shù)據(jù)導入驅(qū)動組件向交互控制模塊詢問目標表是否可用?交互控制模塊檢查目標表是否可用并回復(fù);數(shù)據(jù)導入驅(qū)動組件向交互控制模塊獲取目標表的模式信息和分片存儲信息,交互控制模塊將目標表的模式信息及分片存儲信息傳送給數(shù)據(jù)導入驅(qū)動組件;數(shù)據(jù)導入驅(qū)動組件通過JDBC、ODBC及OLEDB等標準或定制優(yōu)化的數(shù)據(jù)庫訪問方式同相關(guān)的數(shù)據(jù)庫節(jié)點建立連接。3、數(shù)據(jù)導入驅(qū)動組件向相關(guān)數(shù)據(jù)庫節(jié)點進行數(shù)據(jù)導入,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息。在本步驟中,數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互控制模塊進行如下交互過程數(shù)據(jù)導入驅(qū)動組件在數(shù)據(jù)導入過程時,開啟一個獨立的后臺線程負責監(jiān)控集群系統(tǒng)的控制消息,當數(shù)據(jù)庫集群需要進行修改表模式或數(shù)據(jù)備份操作時,交互控制模塊會通知數(shù)據(jù)導入驅(qū)動組件暫?;蛑兄箤?;數(shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送集群導入結(jié)果通知導入是否成功及導入數(shù)目,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息,同時數(shù)據(jù)導入驅(qū)動組件釋放數(shù)據(jù)庫集群連接,導入處理結(jié)束。本發(fā)明已經(jīng)在某公司的集中綜合結(jié)算系統(tǒng)中進行了試用。由于該綜合結(jié)算系統(tǒng)包括分布在各地的諸多子系統(tǒng),各個子系統(tǒng)時刻產(chǎn)生大量的數(shù)據(jù)需要入庫,因此,對諸多子系統(tǒng)的統(tǒng)一管理與對大量數(shù)據(jù)的及時、快速入庫成為該結(jié)算系統(tǒng)的兩個重點。如圖4所示,該綜合結(jié)算系統(tǒng)采用神通ClusterWare進行統(tǒng)一管理,采用基于本方法實現(xiàn)的神通ClusterWare數(shù)據(jù)高速導入組件,完成數(shù)據(jù)的高速入庫。該綜合結(jié)算系統(tǒng)成功地實現(xiàn)了數(shù)據(jù)的高速入庫功能,同時也保證了神通ClusterWare能夠提供高效的數(shù)據(jù)計算、及時響應(yīng)應(yīng)用功能。需要強調(diào)的是,本發(fā)明所述的實施例是說明性的,而不是限定性的,因此本發(fā)明并不限于具體實施方式
中所述的實施例,凡是由本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出的其他實施方式,同樣屬于本發(fā)明保護的范圍。
權(quán)利要求
1.一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其特征在于采用將數(shù)據(jù)導入模塊從數(shù)據(jù)庫集群中的控制節(jié)點中分離出來構(gòu)成獨立的數(shù)據(jù)導入驅(qū)動組件,在數(shù)據(jù)庫集群中的控制節(jié)點中增加交互控制模塊,并且通過以下步驟實現(xiàn) 步驟I:數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互模塊建立連接并獲取各個數(shù)據(jù)庫節(jié)點連接信息; 步驟2 :數(shù)據(jù)導入驅(qū)動組件通過步驟I建立的數(shù)據(jù)庫集群連接獲取目標表的模式信息及分片存儲信息并與相關(guān)數(shù)據(jù)庫節(jié)點建立連接; 步驟3 :數(shù)據(jù)導入驅(qū)動組件向相關(guān)數(shù)據(jù)庫節(jié)點進行數(shù)據(jù)導入,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息。
2.根據(jù)權(quán)利要求I所述的一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其特征在于所述步驟I包括以下處理過程數(shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送建立連接請求,交互控制模塊響應(yīng)數(shù)據(jù)導入驅(qū)動組件連接請求,并向數(shù)據(jù)導入驅(qū)動組件發(fā)送數(shù)據(jù)庫節(jié)點連接信息,數(shù)據(jù)導入驅(qū)動組件獲取集群的各個數(shù)據(jù)庫節(jié)點連接信息。
3.根據(jù)權(quán)利要求I所述的一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其特征在于所述步驟2包括以下處理過程數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群進行時間同步,數(shù)據(jù)導入驅(qū)動組件向交互控制模塊詢問目標表是否可用?交互控制模塊檢查目標表是否可用并回復(fù);數(shù)據(jù)導入驅(qū)動組件向交互控制模塊獲取目標表的模式信息和分片存儲信息,交互控制模塊將目標表的模式信息及分片存儲信息傳送給數(shù)據(jù)導入驅(qū)動組件;數(shù)據(jù)導入驅(qū)動組件與相關(guān)數(shù)據(jù)庫節(jié)點建立連接。
4.根據(jù)權(quán)利要求3所述的一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其特征在于所述數(shù)據(jù)導入驅(qū)動組件通過JDBC、ODBC及OLEDB標準方式或定制優(yōu)化的數(shù)據(jù)庫訪問方式同相關(guān)的數(shù)據(jù)庫節(jié)點建立連接。
5.根據(jù)權(quán)利要求I所述的一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其特征在于所述步驟3包括以下處理過程數(shù)據(jù)導入驅(qū)動組件在數(shù)據(jù)導入過程時,開啟一個獨立的后臺線程負責監(jiān)控集群系統(tǒng)的控制消息,當數(shù)據(jù)庫集群需要進行修改表模式或數(shù)據(jù)備份操作時,交互控制模塊會通知數(shù)據(jù)導入驅(qū)動組件暫?;蛑兄箤耄粩?shù)據(jù)導入驅(qū)動組件向交互控制模塊發(fā)送集群導入結(jié)果通知,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息,同時數(shù)據(jù)導入驅(qū)動組件釋放數(shù)據(jù)庫集群連接。
全文摘要
本發(fā)明涉及一種數(shù)據(jù)庫集群數(shù)據(jù)高速導入方法,其技術(shù)特點是包括以下步驟步驟1數(shù)據(jù)導入驅(qū)動組件與數(shù)據(jù)庫集群的交互模塊建立連接并獲取各個數(shù)據(jù)庫節(jié)點連接信息;步驟2數(shù)據(jù)導入驅(qū)動組件通過步驟1建立的數(shù)據(jù)庫集群連接獲取目標表的模式信息及分片存儲信息并與相關(guān)數(shù)據(jù)庫節(jié)點建立連接;步驟3數(shù)據(jù)導入驅(qū)動組件向相關(guān)數(shù)據(jù)庫節(jié)點進行數(shù)據(jù)導入,交互控制模塊接收數(shù)據(jù)導入結(jié)果,并更新目標表的相關(guān)統(tǒng)計信息。本發(fā)明的數(shù)據(jù)導入驅(qū)動組件,解放了控制節(jié)點,實現(xiàn)在盡可能少受數(shù)據(jù)庫集群干預(yù)的情況下完成數(shù)據(jù)的導入;同時,采用獨立數(shù)據(jù)導入的方式,可以方便的通過增加客戶端來實現(xiàn)并行導入,提升導入性能,從而滿足企業(yè)對數(shù)據(jù)高速導入的要求。
文檔編號G06F17/30GK102750368SQ201210200158
公開日2012年10月24日 申請日期2012年6月18日 優(yōu)先權(quán)日2012年6月18日
發(fā)明者關(guān)剛, 馮柯, 劉榮, 李曉鵬, 李陽, 王效忠, 王洋洋, 蔣志勇, 蔣旭, 趙雪靜, 饒路 申請人:天津神舟通用數(shù)據(jù)技術(shù)有限公司