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

圖1 舊版教務管理系統的課程信息
通過Web界面顯示新版教務管理系統的課程信息、考試信息和調課信息,課程信息界面如圖2所示。

圖2 新版教務管理系統的課程信息
同步參數設置實現了異構數據庫同步的用戶可操作配置。設置好同步周期和同步模式,源數據庫和目的數據庫就可以自動同步。同步參數設置如圖3所示。

圖3 同步參數設置
同步后的新版教務管理系統的課程信息如圖4所示。

圖4 同步后新版教務管理系統的課程信息
設計學院教務管理系統新舊版本的數據庫同步系統,采用基于時間戳的增量變化捕獲方式,將XML作為中間件,將源數據庫的增加、刪除、修改等信息寫入XML文件,將XML文件傳遞給目的數據庫。目的數據庫通過解析XML文件獲得相應變化的信息,獲得信息同步。采用Java技術實現了同步系統的界面操作,便于管理同步進程。