申 毅,佘彥超,冉耀宗
(銅仁學(xué)院 大數(shù)據(jù)學(xué)院,貴州 銅仁 554300)
隨著大數(shù)據(jù)技術(shù)的發(fā)展,越來越多的分布式單元需要進(jìn)行數(shù)據(jù)庫的同步。例如,銀行各個網(wǎng)點(diǎn)之間的數(shù)據(jù)同步,醫(yī)院不同部門數(shù)據(jù)之間的同步等?,F(xiàn)有的數(shù)據(jù)同步方法有兩種,分為同構(gòu)數(shù)據(jù)庫的同步和異構(gòu)數(shù)據(jù)庫的同步。同構(gòu)數(shù)據(jù)庫的同步與不同網(wǎng)點(diǎn)MySQL數(shù)據(jù)庫之間的同步相同。由于采取相同的存儲機(jī)制,相同數(shù)據(jù)庫的同步較容易實(shí)現(xiàn),數(shù)據(jù)庫廠商針對各自數(shù)據(jù)庫系統(tǒng)開發(fā)的同步方案[1],如Oracle、結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)Server。異構(gòu)數(shù)據(jù)的同步與MySQL與SQL Server數(shù)據(jù)庫之間的同步相同。由于采取不同的存儲機(jī)制,不同數(shù)據(jù)庫的同步較難實(shí)現(xiàn)。學(xué)者們提出利用數(shù)據(jù)庫觸發(fā)器和存儲過程實(shí)現(xiàn)的數(shù)據(jù)同步系統(tǒng)[2-5]。由于學(xué)院教務(wù)處舊版系統(tǒng)采用MySQL數(shù)據(jù)庫,新版系統(tǒng)采用SQL Server數(shù)據(jù)庫,兩個版本都在使用,兩者之間需要進(jìn)行異構(gòu)數(shù)據(jù)庫同步。采用基于觸發(fā)器的機(jī)制捕獲變化數(shù)據(jù),耗損資源較大,故采用基于時間戳增量變化捕獲方式[6],耗損資源較小。設(shè)計(jì)教務(wù)管理系統(tǒng)新舊版本的數(shù)據(jù)庫同步系統(tǒng),一個數(shù)據(jù)庫的信息產(chǎn)生變化,采用可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)作為中間件,將這個數(shù)據(jù)庫的增加、刪除、修改等信息寫入XML文件,將這個XML文件傳遞給另一個數(shù)據(jù)庫,另一個數(shù)據(jù)庫通過解析XML文件獲得相應(yīng)變化的信息,從而獲得信息同步。
該系統(tǒng)分為同步規(guī)則定義、數(shù)據(jù)掃描、XML文件生成、文件傳輸、XML文件解析5個過程。
同步規(guī)則定義包括異構(gòu)規(guī)則聲明和數(shù)據(jù)掃描周期。異構(gòu)規(guī)則聲明包括源數(shù)據(jù)庫和目的數(shù)據(jù)庫相互對應(yīng)的數(shù)據(jù)庫名、表名、字段名、字段數(shù)據(jù)類型、主鍵標(biāo)識。如源數(shù)據(jù)庫的“Course-Information”表對應(yīng)于目的數(shù)據(jù)庫的“Course”表,通過異構(gòu)規(guī)則聲明,使目的數(shù)據(jù)庫知道兩者的對應(yīng)關(guān)系。數(shù)據(jù)掃描周期可以分為一小時、一天、一周、一月。
數(shù)據(jù)掃描根據(jù)掃描周期進(jìn)行相應(yīng)間隔時間的數(shù)據(jù)掃描,并生成相應(yīng)的XML文件如下:
...重復(fù)M多行(比如M等于10萬條記錄)
主鍵值課程名稱為“數(shù)字電路基礎(chǔ)”的記錄其opt屬性值為“I”,說明其是源數(shù)據(jù)庫新增的數(shù)據(jù),當(dāng)目的數(shù)據(jù)庫解析時,將該記錄寫入到數(shù)據(jù)庫中。
異構(gòu)規(guī)則聲明文件和XML文件通過內(nèi)部網(wǎng)絡(luò)進(jìn)行傳輸。根據(jù)異構(gòu)規(guī)則聲明,目的數(shù)據(jù)庫端通過解析XML文件進(jìn)行相應(yīng)的數(shù)據(jù)操作,完成源數(shù)據(jù)庫和目的數(shù)據(jù)庫的同步。
系統(tǒng)采用Java技術(shù),通過Web界面顯示舊版教務(wù)管理系統(tǒng)的課程信息、考試信息和調(diào)課信息,課程信息界面如圖1所示。
圖1 舊版教務(wù)管理系統(tǒng)的課程信息
通過Web界面顯示新版教務(wù)管理系統(tǒng)的課程信息、考試信息和調(diào)課信息,課程信息界面如圖2所示。
圖2 新版教務(wù)管理系統(tǒng)的課程信息
同步參數(shù)設(shè)置實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)庫同步的用戶可操作配置。設(shè)置好同步周期和同步模式,源數(shù)據(jù)庫和目的數(shù)據(jù)庫就可以自動同步。同步參數(shù)設(shè)置如圖3所示。
圖3 同步參數(shù)設(shè)置
同步后的新版教務(wù)管理系統(tǒng)的課程信息如圖4所示。
圖4 同步后新版教務(wù)管理系統(tǒng)的課程信息
設(shè)計(jì)學(xué)院教務(wù)管理系統(tǒng)新舊版本的數(shù)據(jù)庫同步系統(tǒng),采用基于時間戳的增量變化捕獲方式,將XML作為中間件,將源數(shù)據(jù)庫的增加、刪除、修改等信息寫入XML文件,將XML文件傳遞給目的數(shù)據(jù)庫。目的數(shù)據(jù)庫通過解析XML文件獲得相應(yīng)變化的信息,獲得信息同步。采用Java技術(shù)實(shí)現(xiàn)了同步系統(tǒng)的界面操作,便于管理同步進(jìn)程。