專利名稱:實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)、裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)中不同數(shù)據(jù)庫之間數(shù)據(jù)遷移的方法,尤其涉及實現(xiàn)異構(gòu)平臺下數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)、裝置及方法。
背景技術(shù):
信息技術(shù)(IT,Information Technology)系統(tǒng)經(jīng)過長時期運行,一方面因其異構(gòu)化為企業(yè)的信息升級和管理帶來了更大的復(fù)雜性,另一方面也因方便用戶使用而起的作用愈大,導(dǎo)致數(shù)據(jù)量也愈來愈巨大,以及業(yè)務(wù)類型也愈來愈多樣化。這樣一來,使得企業(yè)的各項運作都較強地依賴于IT系統(tǒng)的正常運行,由此使得很多IT人員都面臨著類似如下一些問題(1)如何實現(xiàn)不同平臺架構(gòu)下的客戶業(yè)務(wù)的遷移例如,將非X86架構(gòu)下的客戶業(yè)務(wù)遷移到一個可以不停擴展和擴張的X86架構(gòu)下, 能夠為后期的業(yè)務(wù)應(yīng)用升級和遷移提供更多的靈活性。(2)如何確保不同平臺架構(gòu)下的客戶業(yè)務(wù)的數(shù)據(jù)平滑快速地遷移,并確保安全性及可靠性例如,確保將非X86架構(gòu)下數(shù)據(jù)庫中的用戶業(yè)務(wù)數(shù)據(jù)平滑快速地遷移到X86架構(gòu)的數(shù)據(jù)庫中,并確保數(shù)據(jù)遷移過程中非X86架構(gòu)下的用戶業(yè)務(wù)快速恢復(fù)。(3)如何實現(xiàn)不同平臺架構(gòu)下的數(shù)據(jù)庫之間的數(shù)據(jù)遷移目前應(yīng)用廣泛的異構(gòu)平臺架構(gòu)下數(shù)據(jù)遷移的方案,例如RationalRose、 PowerDesigner建模工具與數(shù)據(jù)庫自帶的高可用組件方案等,雖然可利用數(shù)據(jù)庫的逆向工程方案及數(shù)據(jù)庫自帶的高可用組件在一定程度上可以滿足部分客戶業(yè)務(wù)應(yīng)用數(shù)據(jù)遷移的需求,但是同時也存在諸多不足,主要表現(xiàn)在如下一些方面1)由于上述方案只是建模工具,不能生成默認數(shù)據(jù),不能自動將源端數(shù)據(jù)庫的數(shù)據(jù)模型轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型,故很難在短時間內(nèi)實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)快速遷移。2)不能確保目標(biāo)端數(shù)據(jù)庫處于激活狀態(tài),從而造成數(shù)據(jù)遷移時需較長的停機時間,譬如Oracle的自身組件物理備庫機制等。由于上述技術(shù)上的不足,使得IT人員難以解決其所面臨的上述種種問題,導(dǎo)致出現(xiàn)不利于技術(shù)繼續(xù)發(fā)展的瓶頸。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)、裝置及方法,能夠確保異構(gòu)下的客戶業(yè)務(wù)數(shù)據(jù)平滑快速地遷移。為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng),包括依次連接的源端數(shù)據(jù)庫、數(shù)據(jù)遷移裝置以及目標(biāo)端數(shù)據(jù)庫,其中源端數(shù)據(jù)庫,用于通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置,用于根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫;目標(biāo)端數(shù)據(jù)庫,用于執(zhí)行數(shù)據(jù)遷移裝置傳輸?shù)臉?biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并通過管道機制型通道完成從源端數(shù)據(jù)庫的數(shù)據(jù)遷移。進一步地,數(shù)據(jù)遷移裝置包括相互連接的專用數(shù)據(jù)分析引擎模塊以及專用解譯模塊,目標(biāo)端數(shù)據(jù)庫內(nèi)置有標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊;其中專用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征,通過專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將源端數(shù)據(jù)庫數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù), 輸出給專用解譯模塊;專用解譯模塊,用于根據(jù)專用數(shù)據(jù)分析引擎模塊分析出的源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,在專用結(jié)構(gòu)化查詢語言解譯器中通過編譯進程將通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,并通過解譯進程將通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句, 通過互聯(lián)網(wǎng)傳輸給目標(biāo)端數(shù)據(jù)庫內(nèi)置的標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊;標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊,用于通過標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言引擎將收到的標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句提供給目標(biāo)端數(shù)據(jù)庫對應(yīng)的應(yīng)用進程執(zhí)行,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從源端數(shù)據(jù)庫遷移數(shù)據(jù)。進一步地,在專用數(shù)據(jù)分析引擎模塊還連接有通用數(shù)據(jù)分析引擎模塊,其中通用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和所述目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征將通用的數(shù)據(jù)模型或業(yè)務(wù)指派給專用數(shù)據(jù)分析引擎模塊中相應(yīng)的專用數(shù)據(jù)分析引擎;專用數(shù)據(jù)分析引擎模塊通過通用數(shù)據(jù)分析引擎模塊指派的專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,將通用的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫的數(shù)據(jù)模型或業(yè)務(wù)。為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的裝置,包括相互連接的專用數(shù)據(jù)分析引擎模塊以及專用解譯模塊,其中專用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征,通過專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將源端數(shù)據(jù)庫數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù), 輸出給專用解譯模塊;專用解譯模塊,用于根據(jù)專用數(shù)據(jù)分析引擎模塊分析出的源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,在專用結(jié)構(gòu)化查詢語言解譯器中通過編譯進程將通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,并通過解譯進程將通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句, 通過互聯(lián)網(wǎng)傳輸給所述目標(biāo)端數(shù)據(jù)庫。進一步地,在專用數(shù)據(jù)分析引擎模塊之前還包括通用數(shù)據(jù)分析引擎模塊,其中
通用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征將通用的數(shù)據(jù)模型或業(yè)務(wù)指派給專用數(shù)據(jù)分析引擎模塊中相應(yīng)的專用數(shù)據(jù)分析引擎;專用數(shù)據(jù)分析引擎模塊通過通用數(shù)據(jù)分析引擎模塊指派的專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,將通用的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫的數(shù)據(jù)模型或業(yè)務(wù)。為了解決上述技術(shù)問題,本發(fā)明提供了一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的方法,涉及源端數(shù)據(jù)庫和數(shù)據(jù)遷移裝置及目標(biāo)端數(shù)據(jù)庫,該方法包括源端數(shù)據(jù)庫通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫。進一步地,在數(shù)據(jù)遷移裝置編譯通用的數(shù)據(jù)模型或業(yè)務(wù)之前,還包括建立編譯隊列和傳輸隊列,并建立編譯進程、解譯進程以及傳輸進程。進一步地,數(shù)據(jù)遷移裝置根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫,具體包括編譯進程在所述編譯隊列有空閑空間時,將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)編譯成目標(biāo)數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并依次記載在編譯隊列中;解譯進程在傳輸隊列有空閑空間時,依次將編譯隊列中的目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)解譯成標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,然后記載在傳輸隊列中;傳輸進程將所述傳輸隊列中的標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句傳輸給目標(biāo)端數(shù)據(jù)庫。進一步地,該方法還包括目標(biāo)端數(shù)據(jù)庫執(zhí)行標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從源端數(shù)據(jù)庫的數(shù)據(jù)遷移。進一步地,目標(biāo)端數(shù)據(jù)庫執(zhí)行標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從所述源端數(shù)據(jù)庫的數(shù)據(jù)遷移,具體包括目標(biāo)端數(shù)據(jù)庫監(jiān)聽到所述標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句,通過內(nèi)置的標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言引擎解譯所述標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句,由相應(yīng)的應(yīng)用進程執(zhí)行解譯的結(jié)構(gòu)化查詢語言語句過程中,通過管道機制型通道完成數(shù)據(jù)遷移。本發(fā)明基于關(guān)系數(shù)據(jù)庫的逆向工程,同時加入數(shù)據(jù)分析轉(zhuǎn)換器和SQL編譯器引擎來完成跨平臺數(shù)據(jù)庫跨數(shù)據(jù)庫不同數(shù)據(jù)類型之間的數(shù)據(jù)快速遷移,通過分析最根本的數(shù)據(jù)庫模型方法解譯異構(gòu)環(huán)境下的數(shù)據(jù),大大減輕了主機壓力和網(wǎng)絡(luò)負擔(dān),整個分析、解譯及應(yīng)用進程對用戶均是透明的,從而能夠較好地實現(xiàn)跨平臺跨數(shù)據(jù)庫數(shù)據(jù)的快速遷移。
圖1為本發(fā)明的實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)實施例的結(jié)構(gòu)框圖;圖2為本發(fā)明將源端數(shù)據(jù)庫的數(shù)據(jù)模型轉(zhuǎn)換成通用的數(shù)據(jù)模型的示意圖;圖3為本發(fā)明的實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的方法實施例的流程圖。
具體實施例方式以下結(jié)合附圖和優(yōu)選實施例對本發(fā)明的技術(shù)方案進行詳細地闡述。以下例舉的實施例僅用于說明和解釋本發(fā)明,而不構(gòu)成對本發(fā)明技術(shù)方案的限制。關(guān)系數(shù)據(jù)庫是在一個給定的應(yīng)用領(lǐng)域中將所有實體及實體之間聯(lián)系的關(guān)系進行集合所構(gòu)成的。關(guān)系數(shù)據(jù)庫的型稱為關(guān)系數(shù)據(jù)庫模式,是對關(guān)系數(shù)據(jù)庫的描述,涉及若干域的定義,即在這些域上定義若干關(guān)系模式。關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合,通常簡稱為關(guān)系數(shù)據(jù)庫。通常,異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)遷移均是針對關(guān)系數(shù)據(jù)庫。當(dāng)客戶操作系統(tǒng)的環(huán)境需要從舊版本升級新版本,或者,從一個較低級版本的舊數(shù)據(jù)庫更新為較高級版本的新數(shù)據(jù)庫時,可以通過本發(fā)明的實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)及方法,實現(xiàn)異構(gòu)平臺下新舊版本異構(gòu)數(shù)據(jù)庫快速的數(shù)據(jù)遷移。本發(fā)明的主要設(shè)計思想,是基于關(guān)系數(shù)據(jù)庫的逆向工程技術(shù)實現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)快速遷移,即由于各種關(guān)系數(shù)據(jù)庫均是根據(jù)數(shù)據(jù)模型來創(chuàng)建的,因此首先通過逆向工程將源端數(shù)據(jù)庫的數(shù)據(jù)模型轉(zhuǎn)換成基本的數(shù)據(jù)模型(即數(shù)據(jù)庫數(shù)據(jù)模型),再將這種基本的數(shù)據(jù)模型通過正向工程轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫所需要的數(shù)據(jù)類型,由此解決異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)快速遷移。通過結(jié)構(gòu)化查詢語言(SQL,Structured Query Language)編譯器引擎解決不同數(shù)據(jù)庫之間存儲過程、觸發(fā)器等語法上的差異,實現(xiàn)不同數(shù)據(jù)庫類型之間在應(yīng)用邏輯上的傳輸,從而確保源端和目標(biāo)端的數(shù)據(jù)一致性;同時,利用不同類型的數(shù)據(jù)庫都內(nèi)置有標(biāo)準(zhǔn)的 SQL編譯器引擎,在目標(biāo)端數(shù)據(jù)庫通過應(yīng)用進程調(diào)用該引擎執(zhí)行轉(zhuǎn)換過的SQL語句后,觸發(fā)管道機制通道進行從源端數(shù)據(jù)庫到目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)傳輸,并在此過程中通過協(xié)調(diào)解譯進程、編譯進程和應(yīng)用進程三者之間的工作,實現(xiàn)異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)的快速遷移。如圖1所示,表示了本發(fā)明的實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)實施例,包括依次連接的源端數(shù)據(jù)庫、本發(fā)明的數(shù)據(jù)遷移裝置實施例以及目標(biāo)端數(shù)據(jù)庫,其中源端數(shù)據(jù)庫,用于通過關(guān)系數(shù)據(jù)庫的逆向工程,將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置,用于根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫;目標(biāo)端數(shù)據(jù)庫,用于執(zhí)行數(shù)據(jù)遷移裝置傳輸?shù)臉?biāo)準(zhǔn)的數(shù)據(jù)庫SQL語句,并通過管道機制型通道完成從源端數(shù)據(jù)庫的數(shù)據(jù)遷移。在上述系統(tǒng)實施例中,源端數(shù)據(jù)庫通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型轉(zhuǎn)換成通用的數(shù)據(jù)模型,譬如將本數(shù)據(jù)庫執(zhí)行應(yīng)用業(yè)務(wù)形成的一些具體數(shù)據(jù)模型(類似于E-R圖)轉(zhuǎn)換成通用數(shù)據(jù)模型,如圖2所示;將觸發(fā)器、存儲、作業(yè)等具體應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用業(yè)務(wù)模型。
在上述系統(tǒng)實施例中,管道機制型通道作為源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫傳輸數(shù)據(jù)庫的通道,采用了緩沖機制。當(dāng)目標(biāo)端數(shù)據(jù)庫完成數(shù)據(jù)模型結(jié)構(gòu)或應(yīng)用業(yè)務(wù)的建立之后,目標(biāo)端會反饋給應(yīng)用進程完成的標(biāo)志,應(yīng)用進程收到此標(biāo)志后觸發(fā)源端數(shù)據(jù)庫開始通過該通道將數(shù)據(jù)向目標(biāo)端數(shù)據(jù)庫傳輸,當(dāng)傳輸出現(xiàn)短暫網(wǎng)絡(luò)中斷時,由于該通道采用了管道的緩沖機制而能夠?qū)崿F(xiàn)續(xù)傳,因此不會影響傳輸?shù)男?。從而保證了數(shù)據(jù)的快速連續(xù)傳輸。在上述系統(tǒng)實施例中,數(shù)據(jù)遷移裝置實施例如圖1所示,包括相互連接的專用數(shù)據(jù)分析引擎模塊以及專用解譯模塊,目標(biāo)端數(shù)據(jù)庫內(nèi)置標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊;其中專用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征,通過專用數(shù)據(jù)分析引擎(1 η中的一個)分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將源端數(shù)據(jù)庫數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù),并輸出給專用解譯模塊;專用解譯模塊,用于根據(jù)專用數(shù)據(jù)分析引擎模塊分析出的源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,在專用SQL解譯器(1 η中的一個)中通過編譯進程將通用標(biāo)準(zhǔn)的數(shù)據(jù)庫的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的SQL語句,并通過解譯進程將通用標(biāo)準(zhǔn)的SQL語句轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的SQL語句,通過互聯(lián)網(wǎng)傳輸給目標(biāo)端數(shù)據(jù)庫內(nèi)置的標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊;標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊,用于通過標(biāo)準(zhǔn)SQL引擎將業(yè)務(wù)解譯模塊解譯的標(biāo)準(zhǔn)的 SQL語句提供給目標(biāo)端數(shù)據(jù)庫對應(yīng)的應(yīng)用進程正向的執(zhí)行,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從源端數(shù)據(jù)庫遷移數(shù)據(jù)。在上述裝置實施例中,在專用數(shù)據(jù)分析引擎模塊之前還包括通用數(shù)據(jù)分析引擎模塊,其中通用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征將通用的數(shù)據(jù)模型或業(yè)務(wù)指派給專用數(shù)據(jù)分析引擎模塊中相應(yīng)的專用數(shù)據(jù)分析引擎;專用數(shù)據(jù)分析引擎模塊通過通用數(shù)據(jù)分析引擎模塊指派的專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將通用的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)。本發(fā)明針對以上系統(tǒng)實施例及其裝置實施例,相應(yīng)地還提供了實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的方法實施例,其流程如圖3所示,包括如下步驟100 源端數(shù)據(jù)庫通過逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型和應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用數(shù)據(jù)模型和業(yè)務(wù);101 建立編譯隊列和傳輸隊列,并建立編譯進程、解譯進程以及傳輸進程;本發(fā)明的數(shù)據(jù)遷移裝置為各類源端數(shù)據(jù)庫轉(zhuǎn)換的通用數(shù)據(jù)模型和業(yè)務(wù)和建立編譯隊列和傳輸隊列,同時建立編譯進程、解譯進程以及傳輸進程。102 判斷編譯隊列是否有空閑空間,是則執(zhí)行下列步驟,否則執(zhí)行步驟109 ;103 編譯進程將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)編譯成目標(biāo)數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并依次記載在編譯隊列中;編譯進程根據(jù)獲取的目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征將通用標(biāo)準(zhǔn)的數(shù)據(jù)模型編譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型,或根據(jù)目標(biāo)端數(shù)據(jù)庫的應(yīng)用業(yè)務(wù)特征將通用的業(yè)務(wù)編譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的應(yīng)用業(yè)務(wù),并依次記載在編譯隊列中。104 判斷傳輸隊列是否有空閑空間,是則執(zhí)行下列步驟,否則執(zhí)行步驟110 ;—旦傳輸隊列空間滿時,會觸發(fā)解譯進程停止解譯,直到傳輸隊列有空余空間時, 再觸發(fā)解譯進程進行解譯。105 解譯進程依次將編譯隊列中的目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)解譯成標(biāo)準(zhǔn)的SQL語句,然后記載在傳輸隊列中;106 傳輸進程將傳輸隊列中記載的標(biāo)準(zhǔn)的SQL語句傳輸給目標(biāo)端數(shù)據(jù)庫;傳輸進程通過基于TCP/IP協(xié)議傳輸SQL語句,可以保證異地遠距離傳輸;并且由于SQL語句本身占用帶寬較小,故可減輕網(wǎng)絡(luò)壓力。107 目標(biāo)端數(shù)據(jù)庫通過內(nèi)置的標(biāo)準(zhǔn)SQL引擎從標(biāo)準(zhǔn)的SQL語句中解譯出數(shù)據(jù)模型和/或應(yīng)用業(yè)務(wù),并提供給相應(yīng)的應(yīng)用進程;108 目標(biāo)端數(shù)據(jù)庫的應(yīng)用進程通過構(gòu)建的管道機制型通道遷移源端數(shù)據(jù)庫的數(shù)據(jù);結(jié)束流程。目標(biāo)端數(shù)據(jù)庫通過應(yīng)用程序監(jiān)聽察覺到傳輸?shù)臉?biāo)準(zhǔn)的SQL語句,并通過目標(biāo)端數(shù)據(jù)庫內(nèi)置的標(biāo)準(zhǔn)SQL引擎執(zhí)行解譯的標(biāo)準(zhǔn)的SQL語句,觸發(fā)應(yīng)用進程通過管道機制型通道從源端數(shù)據(jù)庫快速遷移數(shù)據(jù)到異構(gòu)的目標(biāo)端數(shù)據(jù)庫。109 編譯進程停止編譯,執(zhí)行步驟104 ;110 解譯進程停止解譯,執(zhí)行步驟106。在上述方法實施例的整個執(zhí)行過程中,通過在本發(fā)明的數(shù)據(jù)遷移裝置實施例中弓丨入編譯進程、解譯進程、及傳輸進程,對源端數(shù)據(jù)庫轉(zhuǎn)換的通用的數(shù)據(jù)模型和業(yè)務(wù)進行編譯,并將編譯成的目標(biāo)數(shù)據(jù)庫的數(shù)據(jù)模型及應(yīng)用業(yè)務(wù)解譯出相應(yīng)的SQL語句,傳輸?shù)侥繕?biāo)端數(shù)據(jù)庫由應(yīng)用進程執(zhí)行。這三個進程均不會對源端數(shù)據(jù)庫造成任何影響,通過本發(fā)明的數(shù)據(jù)遷移裝置實施例中內(nèi)置的進程工作觸發(fā)關(guān)系,即使在某個進程由于意外原因宕掉,也不會造成源端數(shù)據(jù)庫數(shù)據(jù)的斷傳。本發(fā)明的上述方法實施例從常見關(guān)系數(shù)據(jù)庫的運行原理入手,引入了關(guān)系數(shù)據(jù)庫的逆向工程,將不同類型數(shù)據(jù)庫之間的數(shù)據(jù)模型差異和SQL語法差異抽象成與數(shù)據(jù)庫類型無關(guān)的標(biāo)準(zhǔn)的SQL語句,并利用數(shù)據(jù)遷移裝置將標(biāo)準(zhǔn)的SQL語句解譯成目標(biāo)端數(shù)據(jù)庫執(zhí)行的SQL語句,傳輸?shù)侥繕?biāo)端數(shù)據(jù)庫內(nèi)置的標(biāo)準(zhǔn)SQL引擎上執(zhí)行,從而確保異構(gòu)數(shù)據(jù)庫之間數(shù)據(jù)的快速遷移。另外,通過裝置實施例中內(nèi)置的觸發(fā)機制,來協(xié)調(diào)編譯進程、解譯進程、傳輸進程之間的同步關(guān)系,以確保源端數(shù)據(jù)庫的數(shù)據(jù)不斷傳。對于本領(lǐng)域的專業(yè)人員來說,在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進行形式和細節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護范圍之內(nèi)。
權(quán)利要求
1.一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng),其特征在于,包括依次連接的源端數(shù)據(jù)庫、數(shù)據(jù)遷移裝置以及目標(biāo)端數(shù)據(jù)庫,其中源端數(shù)據(jù)庫,用于通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置,用于根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫;目標(biāo)端數(shù)據(jù)庫,用于執(zhí)行數(shù)據(jù)遷移裝置傳輸?shù)臉?biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并通過管道機制型通道完成從源端數(shù)據(jù)庫的數(shù)據(jù)遷移。
2.按照權(quán)利要求1所述的系統(tǒng),其特征在于,所述數(shù)據(jù)遷移裝置包括相互連接的專用數(shù)據(jù)分析引擎模塊以及專用解譯模塊,所述目標(biāo)端數(shù)據(jù)庫內(nèi)置有標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊; 其中專用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征,通過專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將源端數(shù)據(jù)庫數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù),輸出給專用解譯模塊;專用解譯模塊,用于根據(jù)專用數(shù)據(jù)分析引擎模塊分析出的源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,在專用結(jié)構(gòu)化查詢語言解譯器中通過編譯進程將通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,并通過解譯進程將通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,通過互聯(lián)網(wǎng)傳輸給目標(biāo)端數(shù)據(jù)庫內(nèi)置的標(biāo)準(zhǔn)數(shù)據(jù)查詢弓I擎模塊;標(biāo)準(zhǔn)數(shù)據(jù)查詢引擎模塊,用于通過標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言引擎將收到的標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句提供給目標(biāo)端數(shù)據(jù)庫對應(yīng)的應(yīng)用進程執(zhí)行,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從所述源端數(shù)據(jù)庫遷移數(shù)據(jù)。
3.按照權(quán)利要求2所述的系統(tǒng),其特征在于,在所述專用數(shù)據(jù)分析引擎模塊還連接有通用數(shù)據(jù)分析引擎模塊,其中通用數(shù)據(jù)分析引擎模塊,用于根據(jù)所述源端數(shù)據(jù)庫和所述目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征將通用的數(shù)據(jù)模型或業(yè)務(wù)指派給專用數(shù)據(jù)分析引擎模塊中相應(yīng)的專用數(shù)據(jù)分析引擎;所述專用數(shù)據(jù)分析引擎模塊通過通用數(shù)據(jù)分析引擎模塊指派的專用數(shù)據(jù)分析引擎分析出所述源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,將所述通用的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成所述通用標(biāo)準(zhǔn)的數(shù)據(jù)庫的數(shù)據(jù)模型或業(yè)務(wù)。
4.一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的裝置,包括相互連接的專用數(shù)據(jù)分析引擎模塊以及專用解譯模塊,其中專用數(shù)據(jù)分析引擎模塊,用于根據(jù)源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫的所述數(shù)據(jù)模型特征或所述應(yīng)用業(yè)務(wù)特征,通過專用數(shù)據(jù)分析引擎分析出源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,并將源端數(shù)據(jù)庫數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù),輸出給專用解譯模塊;專用解譯模塊,用于根據(jù)專用數(shù)據(jù)分析引擎模塊分析出的源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,在專用結(jié)構(gòu)化查詢語言解譯器中通過編譯進程將通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,并通過解譯進程將通用標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句轉(zhuǎn)換成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,通過互聯(lián)網(wǎng)傳輸給所述目標(biāo)端數(shù)據(jù)庫。
5.按照權(quán)利要求4所述的裝置,其特征在于,在所述專用數(shù)據(jù)分析引擎模塊之前還包括通用數(shù)據(jù)分析引擎模塊,其中通用數(shù)據(jù)分析引擎模塊,用于根據(jù)所述源端數(shù)據(jù)庫和所述目標(biāo)端數(shù)據(jù)庫的數(shù)據(jù)模型特征或應(yīng)用業(yè)務(wù)特征將通用的數(shù)據(jù)模型或業(yè)務(wù)指派給專用數(shù)據(jù)分析引擎模塊中相應(yīng)的專用數(shù)據(jù)分析引擎;所述專用數(shù)據(jù)分析引擎模塊通過通用數(shù)據(jù)分析引擎模塊指派的專用數(shù)據(jù)分析引擎分析出所述源端數(shù)據(jù)庫和目標(biāo)端數(shù)據(jù)庫各自的特點和語法差異,將所述通用的數(shù)據(jù)模型或業(yè)務(wù)轉(zhuǎn)換成所述通用標(biāo)準(zhǔn)的數(shù)據(jù)庫的數(shù)據(jù)模型或業(yè)務(wù)。
6.一種實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的方法,涉及源端數(shù)據(jù)庫和數(shù)據(jù)遷移裝置及目標(biāo)端數(shù)據(jù)庫,該方法包括源端數(shù)據(jù)庫通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫。
7.按照權(quán)利要求6所述的方法,其特征在于,在所述數(shù)據(jù)遷移裝置編譯所述通用的數(shù)據(jù)模型或業(yè)務(wù)之前,還包括建立編譯隊列和傳輸隊列,并建立編譯進程、解譯進程以及傳輸進程。
8.按照權(quán)利要求7所述的方法,其特征在于,所述數(shù)據(jù)遷移裝置根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫,具體包括所述編譯進程在所述編譯隊列有空閑空間時,將所述源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)庫數(shù)據(jù)模型或業(yè)務(wù)編譯成所述目標(biāo)數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并依次記載在編譯隊列中;所述解譯進程在所述傳輸隊列有空閑空間時,依次將所述編譯隊列中的所述目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)解譯成標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句,然后記載在所述傳輸隊列中;所述傳輸進程將所述傳輸隊列中的所述標(biāo)準(zhǔn)的專用結(jié)構(gòu)化查詢語言語句傳輸給所述目標(biāo)端數(shù)據(jù)庫。
9.按照權(quán)利要求8所述的方法,其特征在于,還包括所述目標(biāo)端數(shù)據(jù)庫執(zhí)行標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從所述源端數(shù)據(jù)庫的數(shù)據(jù)遷移。
10.按照權(quán)利要求8所述的方法,其特征在于,所述目標(biāo)端數(shù)據(jù)庫執(zhí)行標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并觸發(fā)應(yīng)用進程通過管道機制型通道完成從所述源端數(shù)據(jù)庫的數(shù)據(jù)遷移,具體包括所述目標(biāo)端數(shù)據(jù)庫監(jiān)聽到所述標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句,通過內(nèi)置的標(biāo)準(zhǔn)結(jié)構(gòu)化查詢語言引擎解譯所述標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言語句,由相應(yīng)的應(yīng)用進程執(zhí)行解譯的所述結(jié)構(gòu)化查詢語言語句過程中,通過所述管道機制型通道完成所述數(shù)據(jù)遷移。
全文摘要
本發(fā)明披露了實現(xiàn)異構(gòu)數(shù)據(jù)庫數(shù)據(jù)遷移的系統(tǒng)、裝置及方法,其中系統(tǒng)包括源端數(shù)據(jù)庫通過關(guān)系數(shù)據(jù)庫的逆向工程將本數(shù)據(jù)庫的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù)轉(zhuǎn)換成通用的數(shù)據(jù)模型或業(yè)務(wù);數(shù)據(jù)遷移裝置根據(jù)目標(biāo)端數(shù)據(jù)庫的特征將源端數(shù)據(jù)庫轉(zhuǎn)換的通用標(biāo)準(zhǔn)的數(shù)據(jù)模型或業(yè)務(wù)編譯、解譯成目標(biāo)端數(shù)據(jù)庫標(biāo)準(zhǔn)的數(shù)據(jù)模型或應(yīng)用業(yè)務(wù),并解譯成標(biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句傳輸給目標(biāo)端數(shù)據(jù)庫;目標(biāo)端數(shù)據(jù)庫執(zhí)行數(shù)據(jù)遷移裝置傳輸?shù)臉?biāo)準(zhǔn)的數(shù)據(jù)庫查詢語句,并通過管道機制型通道完成從源端數(shù)據(jù)庫的數(shù)據(jù)遷移。本發(fā)明能夠較好地實現(xiàn)跨平臺跨數(shù)據(jù)庫數(shù)據(jù)的快速遷移。
文檔編號G06F17/30GK102508929SQ20111039364
公開日2012年6月20日 申請日期2011年12月1日 優(yōu)先權(quán)日2011年12月1日
發(fā)明者喬鑫, 徐國強 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司