專利名稱::一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法。
背景技術(shù):
:數(shù)據(jù)庫(kù)數(shù)據(jù)轉(zhuǎn)換和導(dǎo)入導(dǎo)出在數(shù)據(jù)庫(kù)領(lǐng)域中是經(jīng)常需要使用的操作。傳統(tǒng)的方式是采用數(shù)據(jù)庫(kù)廠商專用的工具。這些工具在異構(gòu)數(shù)據(jù)庫(kù)之間轉(zhuǎn)換和導(dǎo)入導(dǎo)出數(shù)據(jù)時(shí)通常具有以下不足1、僅針對(duì)単一數(shù)據(jù)庫(kù),無法或很難實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫(kù)之間導(dǎo)入或?qū)С?,性能不高,靈活性差。很難應(yīng)用于數(shù)據(jù)庫(kù)倉(cāng)庫(kù)領(lǐng)域。2、對(duì)于異構(gòu)數(shù)據(jù)庫(kù)之間數(shù)據(jù)類型轉(zhuǎn)換自定義功能的支持較弱或不支持。3、配置繁瑣,尤其在異構(gòu)數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出場(chǎng)合,需要安裝多種數(shù)據(jù)庫(kù)客戶端,每個(gè)客戶端都需要単獨(dú)配置,配置不統(tǒng)一,腳本編寫麻煩。4、有些工具針對(duì)于特定操作系統(tǒng),無法跨操作系統(tǒng)平臺(tái)。
發(fā)明內(nèi)容本發(fā)明本發(fā)明為克服上述的不足之處,目的在于針對(duì)異構(gòu)數(shù)據(jù)庫(kù)之間大量數(shù)據(jù)處理的需要,提供一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,采用相互獨(dú)立的多線程讀寫方式通過對(duì)數(shù)據(jù)緩沖池的應(yīng)用,使系統(tǒng)可以在不同操作系統(tǒng)、不同數(shù)據(jù)庫(kù)之間做到數(shù)據(jù)高效率轉(zhuǎn)換和導(dǎo)入導(dǎo)出高速度,解決了現(xiàn)有技術(shù)中存在的問題。本發(fā)明是通過以下技術(shù)方案達(dá)到上述目的一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,包括讀線程、寫線程和監(jiān)控管理線程,讀線程負(fù)責(zé)通過源對(duì)象接ロ從不同操作系統(tǒng)、不同類型的源數(shù)據(jù)庫(kù)讀取數(shù)據(jù),源數(shù)據(jù)庫(kù)數(shù)量可以是1個(gè)或多個(gè),也可以是文件類型,并以數(shù)據(jù)包形式放入數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列頭部;寫線程負(fù)責(zé)從數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列的尾部讀取數(shù)據(jù),并通過目標(biāo)對(duì)象接ロ寫入不同操作系統(tǒng)、不同類型的目標(biāo)數(shù)據(jù)庫(kù),目標(biāo)數(shù)據(jù)庫(kù)數(shù)量可以是1個(gè)或多個(gè),也可以是文件類型;監(jiān)控管理線程負(fù)責(zé)整體系統(tǒng)的運(yùn)行管理;其實(shí)施包括如下步驟1)讀入配置參數(shù),包括讀寫數(shù)據(jù)包大小、數(shù)據(jù)轉(zhuǎn)換規(guī)則、源數(shù)據(jù)庫(kù)信息、目標(biāo)數(shù)據(jù)庫(kù)信息、日志文件信息和讀線程、寫線程啟動(dòng)數(shù)。讀入配置參數(shù)也可以將配置信息寫到配置文件中,然后指定配置文件路徑,通過讀入文件的方式獲得。一般情況下,數(shù)據(jù)包大小為2IOM之間。數(shù)據(jù)轉(zhuǎn)換規(guī)則是針對(duì)復(fù)雜類型的轉(zhuǎn)換和用戶特殊的轉(zhuǎn)換規(guī)則,用戶根據(jù)自身情況進(jìn)行定制,如某數(shù)字類型字段在轉(zhuǎn)換中保持的小數(shù)點(diǎn)位數(shù),指定對(duì)應(yīng)的轉(zhuǎn)換類型數(shù)據(jù)。對(duì)于復(fù)雜數(shù)據(jù)轉(zhuǎn)換還可以指定函數(shù)來處理,如對(duì)于oracle的date類型分別賦值給ー個(gè)db2的date字段和time字段。這個(gè)函數(shù)實(shí)現(xiàn)可以用java語言,也可以指定為perl腳本函數(shù)。源數(shù)據(jù)庫(kù)信息和目標(biāo)數(shù)據(jù)庫(kù)信息包括數(shù)據(jù)庫(kù)url、操作系統(tǒng)、數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)3名稱、用戶名、密碼。2)按照步驟1)所述配置參數(shù)要求,啟動(dòng)監(jiān)管管理線程、讀線程和寫線程;3)讀線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,通過源對(duì)象接ロ連接源數(shù)據(jù)庫(kù),將獲取的數(shù)據(jù)分批放入到緩沖池中,當(dāng)緩沖池未滿時(shí)數(shù)據(jù)被加入到緩沖池中的數(shù)據(jù)隊(duì)列的頭部,當(dāng)緩沖池滿了的時(shí)候,阻塞讀線程;4)寫線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,連接目標(biāo)數(shù)據(jù)庫(kù),從緩沖池的數(shù)據(jù)隊(duì)列尾部獲取數(shù)據(jù)并通過目標(biāo)對(duì)象接ロ寫入目標(biāo)數(shù)據(jù)庫(kù),若緩沖池?zé)o數(shù)據(jù)則阻塞寫線禾王;5)監(jiān)控管理線程負(fù)責(zé)監(jiān)控讀寫線程的工作情況,并記錄日志,供調(diào)優(yōu)分析,并根據(jù)調(diào)優(yōu)分析結(jié)果動(dòng)態(tài)調(diào)整讀線程和寫線程的比例和數(shù)量;6)如果所有的讀線程發(fā)現(xiàn)沒有數(shù)據(jù)可讀,并且數(shù)據(jù)緩沖池中數(shù)據(jù)隊(duì)列長(zhǎng)度為零,此時(shí)系統(tǒng)結(jié)束讀線程和寫線程,進(jìn)行數(shù)據(jù)清理,監(jiān)控管理線程停止整個(gè)過程。本發(fā)明的有益效果本發(fā)明支持異構(gòu)數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換和處理工作,為多種數(shù)據(jù)庫(kù)提供統(tǒng)ー訪問接ロ,屏蔽不同數(shù)據(jù)庫(kù)之間數(shù)據(jù)接ロ差異。為增加數(shù)據(jù)處理效率,在系統(tǒng)中設(shè)計(jì)了多線程讀寫和數(shù)據(jù)緩沖池,避免傳統(tǒng)ー邊讀ー邊寫相互影響的問題,既保證了系統(tǒng)效率又減小了系統(tǒng)開發(fā)工作量。部署維護(hù)方便,不依賴任何第三方應(yīng)用程序,可獨(dú)立運(yùn)行。圖1一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法示意圖。具體實(shí)施例方式下面結(jié)合附圖通過實(shí)施例對(duì)本發(fā)明作進(jìn)ー步闡述一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,包括讀線程、寫線程和監(jiān)控管理線程,讀線程負(fù)責(zé)通過源對(duì)象接ロ從不同操作系統(tǒng)、不同類型的源數(shù)據(jù)庫(kù)讀取數(shù)據(jù),源數(shù)據(jù)庫(kù)數(shù)量可以是1個(gè)或多個(gè),也可以是文件類型,并以數(shù)據(jù)包形式放入數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列頭部;寫線程負(fù)責(zé)從數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列的尾部讀取數(shù)據(jù),并通過目標(biāo)對(duì)象接ロ寫入不同操作系統(tǒng)、不同類型的目標(biāo)數(shù)據(jù)庫(kù),目標(biāo)數(shù)據(jù)庫(kù)數(shù)量可以是1個(gè)或多個(gè),也可以是文件類型;監(jiān)控管理線程負(fù)責(zé)整體系統(tǒng)的運(yùn)行管理;其實(shí)施包括如下步驟1)讀入配置參數(shù),包括讀寫數(shù)據(jù)包大小、數(shù)據(jù)轉(zhuǎn)換規(guī)則、源數(shù)據(jù)庫(kù)信息、目標(biāo)數(shù)據(jù)庫(kù)信息、日志文件信息和讀線程、寫線程啟動(dòng)數(shù)。讀入配置參數(shù)也可以將配置信息寫到配置文件中,然后指定配置文件路徑,通過讀入文件的方式獲得。一般情況下,數(shù)據(jù)包大小為2IOM之間。數(shù)據(jù)轉(zhuǎn)換規(guī)則是針對(duì)復(fù)雜類型的轉(zhuǎn)換和用戶特殊的轉(zhuǎn)換規(guī)則,用戶根據(jù)自身情況進(jìn)行定制,如某數(shù)字類型字段在轉(zhuǎn)換中保持的小數(shù)點(diǎn)位數(shù),指定對(duì)應(yīng)的轉(zhuǎn)換類型數(shù)據(jù)。對(duì)于復(fù)雜數(shù)據(jù)轉(zhuǎn)換還可以指定函數(shù)來處理,如對(duì)于oracle的date類型分別賦值給ー個(gè)db2的date字段和time字段。這個(gè)函數(shù)實(shí)現(xiàn)可以用java語言,也可以指定為perl腳本函數(shù)。源數(shù)據(jù)庫(kù)信息和目標(biāo)數(shù)據(jù)庫(kù)信息包括數(shù)據(jù)庫(kù)url、操作系統(tǒng)、數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)名稱、用戶名、密碼。42)按照步驟1)所述配置參數(shù)要求,啟動(dòng)監(jiān)管管理線程、讀線程和寫線程;3)讀線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,通過源對(duì)象接ロ連接源數(shù)據(jù)庫(kù),將獲取的數(shù)據(jù)分批放入到緩沖池中,當(dāng)緩沖池未滿時(shí)數(shù)據(jù)被加入到緩沖池中的數(shù)據(jù)隊(duì)列的頭部,當(dāng)緩沖池滿了的時(shí)候,阻塞讀線程;4)寫線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,連接目標(biāo)數(shù)據(jù)庫(kù),從緩沖池的數(shù)據(jù)隊(duì)列尾部獲取數(shù)據(jù)并通過目標(biāo)對(duì)象接ロ寫入目標(biāo)數(shù)據(jù)庫(kù),若緩沖池?zé)o數(shù)據(jù)則阻塞寫線禾王;5)監(jiān)控管理線程負(fù)責(zé)監(jiān)控讀寫線程的工作情況,并記錄日志,供調(diào)優(yōu)分析,并根據(jù)調(diào)優(yōu)分析結(jié)果動(dòng)態(tài)調(diào)整讀線程和寫線程的比例和數(shù)量;6)如果所有的讀線程發(fā)現(xiàn)沒有數(shù)據(jù)可讀,并且數(shù)據(jù)緩沖池中數(shù)據(jù)隊(duì)列長(zhǎng)度為零,此時(shí)系統(tǒng)結(jié)束讀線程和寫線程,進(jìn)行數(shù)據(jù)清理,監(jiān)控管理線程停止整個(gè)過程。異構(gòu)數(shù)據(jù)庫(kù)之間難點(diǎn)是數(shù)據(jù)轉(zhuǎn)換,不同數(shù)據(jù)庫(kù)之間數(shù)據(jù)類型往往不一,直接導(dǎo)入很可能導(dǎo)致數(shù)據(jù)錯(cuò)誤。數(shù)據(jù)轉(zhuǎn)換功能主要針對(duì)特定的數(shù)據(jù)類型在異構(gòu)數(shù)據(jù)庫(kù)之間轉(zhuǎn)換問題,由于歷史原因,不同廠商數(shù)據(jù)庫(kù)在對(duì)標(biāo)準(zhǔn)的實(shí)現(xiàn)上有所差異,比如針對(duì)于相同類型,不同的數(shù)據(jù)庫(kù)在實(shí)現(xiàn)細(xì)節(jié)方面有些是不一致的,在轉(zhuǎn)換中需要根據(jù)情況進(jìn)行轉(zhuǎn)換,例如Orac1e中的DATE含有年、月、日、時(shí)、分、秒,它和DB2/400中的DATE不相互對(duì)應(yīng),DB2/400中的DATE只有年、月、日,TIME類型含有吋、分、秒,因此日期和時(shí)間類型要進(jìn)行轉(zhuǎn)換。Oracle中的NUMBER類型可以對(duì)應(yīng)DB2/400中的很多類型,這種對(duì)應(yīng)關(guān)系要依賴于Orac1e中number將用于保存何種類型的數(shù)據(jù),是整型還是帶有小數(shù)位的實(shí)型數(shù)據(jù),另外類型所占用的存儲(chǔ)空間也不相同。為了轉(zhuǎn)換過程中盡量保證數(shù)據(jù)的準(zhǔn)確性,系統(tǒng)根據(jù)字段數(shù)據(jù)情況進(jìn)行進(jìn)行了智能判斷和最優(yōu)選擇如對(duì)于oracledate類型的數(shù)據(jù)轉(zhuǎn)換到db2的date類型,將oracle的年、月、日數(shù)據(jù)賦值。若轉(zhuǎn)換為db2的time類型則將用時(shí)、分、秒數(shù)據(jù)賦值。對(duì)于number類型是同樣道理。系統(tǒng)根據(jù)兩個(gè)數(shù)據(jù)庫(kù)之間的異同進(jìn)行判斷。保證了大部分需求。數(shù)據(jù)緩沖池像是ー個(gè)容器提供數(shù)據(jù)的生命周期管理,提供數(shù)據(jù)進(jìn)出的緩沖,因?yàn)榫彌_池的設(shè)計(jì)使得讀寫數(shù)據(jù)效率很高,而相互不會(huì)產(chǎn)生影響。緩沖池中維護(hù)ー個(gè)數(shù)據(jù)包隊(duì)列,讀線程向數(shù)據(jù)隊(duì)列頭部增加,寫線程在隊(duì)列尾部獲取。為減少系統(tǒng)運(yùn)行中方法切換率,數(shù)據(jù)采用分包的形式在容器中存儲(chǔ)。每個(gè)數(shù)據(jù)包有相似的大小,大小設(shè)定要根據(jù)實(shí)際情況進(jìn)行調(diào)整,若太大則緩沖效果差,若太小系統(tǒng)頻繁切換增加額外消耗。緩沖池在讀寫過程中控制數(shù)據(jù)的動(dòng)態(tài)平衡,保證數(shù)據(jù)傳遞過程中的準(zhǔn)確性。讀寫線程可以根據(jù)任務(wù)情況進(jìn)行指定,監(jiān)控線程只有ー個(gè)。讀寫線程對(duì)應(yīng)的數(shù)據(jù)交換采用數(shù)據(jù)緩沖池,使得讀寫線程隔離開來,隔離讀寫是為了避免寫數(shù)據(jù)的速度影響讀的的速度。避免傳統(tǒng)ー邊讀ー邊寫的寫的速度影響讀的速度的問題,使得讀寫線程之間影響達(dá)到最小提升性能。數(shù)據(jù)緩沖池的工作模型是生產(chǎn)消費(fèi)者模式,讀線程是生產(chǎn)者,寫線程是消費(fèi)者,兩者消費(fèi)的是數(shù)據(jù)。若目標(biāo)或源對(duì)象為文件時(shí),需指明文件路徑,為支持大型文件,支持文件拆分,可以指定最大文件存放的數(shù)據(jù)條數(shù),輸出的文件名支持通配符方式,比如outfile{000}.data代表的含義是生成文件名為OutfileOOl.dataOutfile002.data.......Outfile998.dataOutfile999.data為方便文件的處理,可以指定文件存放的格式,如文件列間隔符、行間隔符。同理讀文件時(shí)也可以指定間隔符,使得系統(tǒng)適應(yīng)性更加靈活。例如我們想從WindOW2003系統(tǒng)中安裝的oracle將ー張表tableA數(shù)據(jù)導(dǎo)入到運(yùn)行于AIX系統(tǒng)下面cft2數(shù)據(jù)庫(kù)表tableB。我們需要先安裝本工具,本工具在兩套系統(tǒng)中安裝不依賴任何第三方程序,也不需要安裝任何數(shù)據(jù)庫(kù)客戶端。只需要將本工具安裝在能連接兩個(gè)數(shù)據(jù)庫(kù)的網(wǎng)絡(luò)環(huán)境中的任意主機(jī)即可。安裝完畢后運(yùn)行以下命令本例運(yùn)行于Iinux系統(tǒng)。./expload.sh_source_db_nameoracle_source_db_connl92.168.10.il/aatabase_name,username,password_target_db_namedb2_target_db_conn192.168.10.15/database_name,username,password-sql"select^fromtableAwhereid>500000;select*fromtableAwhereid<=500000“-tabletableB-pre_typeappend-target_size2命令參數(shù)的含義是-source_db_name_source_db_conn分別指定源數(shù)據(jù)庫(kù)的類型和連接參數(shù),本例是oracle-target_db_namedb2-target_db_conn分別指定目標(biāo)數(shù)據(jù)庫(kù)的類型和連接參數(shù),本例是(Λ2若輸出或輸入為文件指定sourCe_file或target_file參數(shù)替換即可。-sql參數(shù)指定了兩個(gè)sql,這兩個(gè)sql指定的是同一張表,這樣的目的是為了提高讀性能。這里的sql數(shù)目和讀線程的數(shù)量一一對(duì)應(yīng)的。本例是2個(gè)讀線程。-pre_typeappend該參數(shù)指定了預(yù)處理類型,本例是指添加到目標(biāo)表中。也可以指定-pre_Sql命令替換可以指定在寫入目標(biāo)表之前需要對(duì)目標(biāo)表的處理比如刪除目標(biāo)表數(shù)據(jù)或者暫停索引的操作。一般配合-end_Sql命令使用用來指定導(dǎo)出結(jié)束后執(zhí)行的sql。-target_size這個(gè)參數(shù)指定了寫線程的數(shù)量為2個(gè)。Orac1e數(shù)據(jù)庫(kù)中表tab1eAidnumberNTestDatedateYTestVarCharvarchar2(20)YTestNumbernumberY此2數(shù)據(jù)庫(kù)中表tableBidintegerNTestDatedateYTestVarCharvarchar(20)YTestNumberintegerY源表數(shù)據(jù)為IOOw條,字段id是從1開始的序列字段,系統(tǒng)在運(yùn)行時(shí)根據(jù)每條sql查詢出數(shù)據(jù)以每1000條作為ー個(gè)包,若用戶提供了類型轉(zhuǎn)換條件則先進(jìn)行數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換完畢后,放入到數(shù)據(jù)緩沖池中,放入后寫線程繼續(xù)取后面的數(shù)據(jù)如此反復(fù)。對(duì)于目標(biāo)數(shù)據(jù)我們?cè)O(shè)置了多條寫線程,每個(gè)寫線程嘗試從緩存池中獲取數(shù)據(jù)包,獲取后逐條將數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中。根據(jù)設(shè)置的commit條件執(zhí)行提交操作。為方便用戶,系統(tǒng)提供參數(shù)以生成運(yùn)行日志,日志級(jí)別分為多個(gè)級(jí)別,每個(gè)級(jí)別生成的日志詳細(xì)程度不同,在運(yùn)行過程中生成的日志文件,主要內(nèi)容是記錄讀寫時(shí)間占比,讀寫過程中數(shù)據(jù)轉(zhuǎn)換過程或數(shù)據(jù)異常等內(nèi)容。這些數(shù)據(jù)可用于檢查程序執(zhí)行是否正常,為排除故障提供線索,用戶也可以在自定義轉(zhuǎn)換函數(shù)中打印日志方便調(diào)試函數(shù)實(shí)現(xiàn)。對(duì)于想進(jìn)ー步提升系統(tǒng)性能的用戶,日志里還記錄了系統(tǒng)運(yùn)行過程中讀寫線程的占比和讀寫線程等待的時(shí)間,根據(jù)這些數(shù)據(jù)可以分析出來系統(tǒng)的瓶頸所在,也可以分析出合適的線程參數(shù)。比如日志反映寫的占比明顯高過讀線程,我們可以基本斷定寫的速度影響了整個(gè)導(dǎo)入導(dǎo)出性能,這時(shí)候在加大讀線程將不會(huì)起作用也會(huì)帶來資源浪費(fèi)。目標(biāo)應(yīng)該是優(yōu)化寫線程,可以采用増加寫線程數(shù)量等優(yōu)化措施。若日志結(jié)果是寫線程相對(duì)空閑,可以認(rèn)為寫數(shù)據(jù)喂不飽屬于饑餓狀態(tài),則要考慮提升讀線程數(shù)據(jù)量或者減少寫線程的數(shù)量來節(jié)省資源。以上的所述乃是本發(fā)明的具體實(shí)施例及所運(yùn)用的技術(shù)原理,若依本發(fā)明的構(gòu)想所作的改變,其所產(chǎn)生的功能作用仍未超出說明書及附圖所涵蓋的精神吋,仍應(yīng)屬本發(fā)明的保護(hù)范圍。權(quán)利要求1.一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,包括讀線程、寫線程和監(jiān)控管理線程,讀線程負(fù)責(zé)通過源對(duì)象接ロ從不同操作系統(tǒng)、不同類型的源數(shù)據(jù)庫(kù)讀取數(shù)據(jù),并以數(shù)據(jù)包形式放入數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列頭部;寫線程負(fù)責(zé)從數(shù)據(jù)緩沖池?cái)?shù)據(jù)隊(duì)列的尾部讀取數(shù)據(jù),并通過目標(biāo)對(duì)象接ロ寫入不同操作系統(tǒng)、不同類型的目標(biāo)數(shù)據(jù)庫(kù);監(jiān)控管理線程負(fù)責(zé)整體系統(tǒng)的運(yùn)行管理;其實(shí)施包括如下步驟1)讀入配置參數(shù),包括讀寫數(shù)據(jù)包大小、數(shù)據(jù)轉(zhuǎn)換規(guī)則、源數(shù)據(jù)庫(kù)信息、目標(biāo)數(shù)據(jù)庫(kù)信息、日志文件信息和讀線程、寫線程啟動(dòng)數(shù);2)按照步驟1)所述配置參數(shù)要求,啟動(dòng)監(jiān)管管理線程、讀線程和寫線程;3)讀線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,通過源對(duì)象接ロ連接源數(shù)據(jù)庫(kù),將獲取的數(shù)據(jù)分批放入到緩沖池中,當(dāng)緩沖池未滿時(shí)數(shù)據(jù)被加入到緩沖池中的數(shù)據(jù)隊(duì)列的頭部,當(dāng)緩沖池滿了的時(shí)候,阻塞讀線程;4)寫線程根據(jù)配置參數(shù)情況生成ー個(gè)或多個(gè)線程,連接目標(biāo)數(shù)據(jù)庫(kù),從緩沖池的數(shù)據(jù)隊(duì)列尾部獲取數(shù)據(jù)并通過目標(biāo)對(duì)象接ロ寫入目標(biāo)數(shù)據(jù)庫(kù),若緩沖池?zé)o數(shù)據(jù)則阻塞寫線程;5)監(jiān)控管理線程負(fù)責(zé)監(jiān)控讀寫線程的工作情況,并記錄日志,供調(diào)優(yōu)分析,井根據(jù)調(diào)優(yōu)分析結(jié)果動(dòng)態(tài)調(diào)整讀線程和寫線程的比例和數(shù)量;6)如果所有的讀線程發(fā)現(xiàn)沒有數(shù)據(jù)可讀,并且數(shù)據(jù)緩沖池中數(shù)據(jù)隊(duì)列長(zhǎng)度為零,此時(shí)系統(tǒng)結(jié)束讀線程和寫線程,進(jìn)行數(shù)據(jù)清理,監(jiān)控管理線程停止整個(gè)過程。2.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,所述的數(shù)據(jù)包大小為2IOM之間。3.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,步驟1)所述的讀入配置參數(shù)也可以將配置信息寫到配置文件中,然后指定配置文件路徑,通過讀入文件的方式獲得。4.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,步驟1)所述配置參數(shù)的數(shù)據(jù)轉(zhuǎn)換規(guī)則可以通過指定函數(shù)的方式處理。5.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,步驟1)所述配置參數(shù)的源數(shù)據(jù)庫(kù)信息包括源數(shù)據(jù)庫(kù)url、操作系統(tǒng)、數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)名稱、用戶名、密碼。6.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,步驟1)所述配置參數(shù)的目標(biāo)數(shù)據(jù)庫(kù)信息包括目標(biāo)源數(shù)據(jù)庫(kù)url、操作系統(tǒng)、數(shù)據(jù)庫(kù)類型、數(shù)據(jù)庫(kù)名稱、用戶名、密碼。7.根據(jù)權(quán)利要求1所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,源數(shù)據(jù)庫(kù)或目標(biāo)數(shù)據(jù)庫(kù)數(shù)量可以是1個(gè)或多個(gè)。8.根據(jù)權(quán)利要求1-7任ー權(quán)利要求所述的ー種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,其特征在干,源數(shù)據(jù)庫(kù)或目標(biāo)數(shù)據(jù)庫(kù)可以是文件類型。全文摘要本發(fā)明涉及數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)領(lǐng)域,尤其涉及一種異構(gòu)數(shù)據(jù)庫(kù)之間多線程數(shù)據(jù)交換的方法,該方法采用相互獨(dú)立的多線程讀寫方式通過對(duì)數(shù)據(jù)緩沖池的應(yīng)用,使系統(tǒng)可以在不同操作系統(tǒng)、不同數(shù)據(jù)庫(kù)之間做到數(shù)據(jù)高效率轉(zhuǎn)換和導(dǎo)入導(dǎo)出高速度,解決了現(xiàn)有技術(shù)中存在的問題。文檔編號(hào)G06F9/54GK102591725SQ20111045186公開日2012年7月18日申請(qǐng)日期2011年12月20日優(yōu)先權(quán)日2011年12月20日發(fā)明者趙鵬,鐘宏澤申請(qǐng)人:浙江鴻程計(jì)算機(jī)系統(tǒng)有限公司