鐘志宏


摘要:異構數據庫系統的遷移是建立數據倉庫、新舊應用系統無縫遷移的關鍵技術。通過研究SQL SERVER數據庫系統與MY SQL數據庫系統的異同特征,采用SQL腳本編輯轉換、ODBC應用程序,有效地實現了原有系統從SQL SERVER到MY SQL數據庫系統的遷移,并保證了原有應用系統僅進行少量修改,實現了系統運行平臺的快速轉換,有效滿足了用戶的投入成本小、系統性能高、業務不中斷的要求。
關鍵詞:數據庫遷移;SQL SERVER;MY SQL
中圖分類號:TP391 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2019)14-0001-02
開放科學(資源服務)標識碼(OSID):
Abstract: The migration of heterogeneous database system is the key technology for the data warehouse establishment and seamless migration of old and new application systems. Through researching the similarities and differences between SQL SERVER database system and MY SQL database system, using SQL script editing conversion and ODBC application program, the migration of the original system from SQL SERVER to MY SQL database system is effectively realized, and only a few modifications are made to the original application system. The rapid transformation of the system operation platform is realized, which effectively meets the requirements of low input cost, high system performance and uninterrupted business.
Key words: Database migration; SQL SERVER; MY SQL
1 研究意義與背景
數據庫管理系統(即DBMS)是整個信息應用系統的核心,合理選擇數據庫管理系統以及完善的數據庫設計,能夠有效提高應用系統的可靠性、平臺的伸縮性、開發成本和周期。近年來,隨著大數據、云計算與人工智能等基于海量數據處理的新技術的出現,異構數據庫、結構化半結構數據的多種數據源的集成與遷移成為研究和應用的支撐技術。同時,隨著信息化建設的加速、公司業務規模的擴大、機構的擴展,也使得當前很多面向具體業務的信息應用系統需要進行數據庫的遷移,在數據遷移的過程中,不僅要保證數據的準確性,還要確保數據的完整性約束、權限控制、存儲過程與自定義函數、觸發器等等,從而確保數據庫的遷移對應用系統影響最小,以滿足企業控制成本支持、提高平臺性能、拓展業務規模、提升用戶體驗的現實需求。
異構數據庫遷移是指將數據從一種數據庫管理系統遷移到另一種數據庫管理系統中。由于異構數據庫之間常常存在數據類型不兼容、默認字符集不一致、完整性約束定義差異、內置函數及變量不同、存儲過程與函數定義不一致等等情況,導致數據遷移較為復雜,甚至有些遷移要求成為不可完成的任務。當前常常采用的異構數據庫遷移方法主要有三種:
(1)基于SQL腳本的編輯。將導出源數據庫的SQL語句腳本,通過人工方式編輯轉換為目標數據庫所對應的SQL語句腳本,然后在目標數據庫系統中執行轉換后的SQL腳本,從而實現目標數據庫的創建。該方法方便靈活,能夠有效滿足應用遷移需要,但主要適用于結構不是太復雜、數據遷移轉換頻率較低的數據庫。
(2)基于數據庫管理系統廠商的數據遷移工具。DBMS廠商(比如甲骨文的Oracle和MY SQL、微軟的SQL SERVER、IBM的DB2等)通常提供數據遷移工具軟件,使得數據庫管理員DBA能實現快速的數據遷移。但該方法主要適用于在同一數據庫管理系統的多個不同版本之間進行數據遷移,對于異構數據庫通常必須配合SQL腳本編輯方法。
(3)基于元數據的中間件技術。基于數據庫元數據,利用XML定義異構數據庫之間的映射關系,同時開發數據遷移的中間件軟件,從而能夠快速而自動的實現源數據庫到目標數據庫的數據遷移,但該方法通常研制成本高,開發時間長,主要滿足大型數據集成、頻繁遷移的自動化應用場景中。
本文根據用戶信息系統平臺轉換與擴展的需要,主要研究如何快速而又完整地將數據庫從SQL SERVER靜態遷移(即在遷移時,暫停數據庫服務,從而確保數據的完整性和一致性。)到MYSQL的方法與技術,并實現原有應用系統最小修改原則,快速實現原有平臺到新平臺的轉化,達到用戶投入成本小、平臺轉化快、應用場景不變、系統無縫遷移的總體需求。
2 遷移解決方案
2.1 應用系統遷移總步驟
為了確保應用能夠快速的無縫遷移,整個實施步驟如圖1所示。
(1)數據庫遷移。充分研究SQL SERVER數據庫系統與MY SQL數據庫系統的異同特征,采用SQL腳本編輯轉換、ODBC應用程序,實現了原有系統從SQL SERVER到MY SQL數據庫系統的遷移。
(2)數據校驗及數據庫對象驗證。根據SQL SERVER數據庫中的元數據信息,對轉換到MYSQL數據庫中的數據進行完整性與一致性校驗,對視圖、存儲過程、特定函數、觸發器進行驗證,對安全性規則進行驗證。
(3)應用程序修改及轉換測試。針對遷移后的MY SQL數據庫,修改應用程序中針對性的代碼,如數據庫鏈接字符串或數據庫服務器配置文件、部分數據存儲類。
(4)整體應用系統遷移。發布系統平臺升級公告,選擇業務量最小時段進行停服原始數據備份、數據庫遷移、應用系統更換,新系統平臺開啟正常服務。
下面主要介紹數據庫遷移和數據校驗相關內容。
2.2數據庫遷移
數據庫遷移是整個應用系統遷移工作的核心,涉及字符集的選擇、數據類型轉換、完整性約束條件的轉換、存儲過程與觸發器的轉換、用戶權限規則轉換等方面,如圖2所示。
系統是從SQL SERVER2008 R2遷移到MY SQL5.7數據庫管理系統,服務器操作系統為Windows Server 2008(64位)。首先從SQLSERVER2008導出數據庫整體結構SQL腳本,通過映射修改后,在MYSQL中利用修改后的腳本建立數據庫整體結構。
(1)字符集的選擇。SQL SERVER2008中數據庫采用默認字符集,且服務器排序規則為Chinese_PRC_CI_AS,為了防止MY SQL數據庫出現亂碼,MY SQL服務器采用的字符集為utf8,同時選擇相應的排序規則。
(2)數據類型的轉換。數據類型轉換目的是確保源數據庫與目標數據庫數據相容,是數據正確遷移的重要保障。SQL SERVER與MY SQL數據類型絕大多數是對應的,主要的區別在于:①用于存儲二進制數據(如圖片、文檔、音頻等文件)在SQL SERVER為image類型,而在MY ?SQL中采用longblob類型;②MY SQL中支持邏輯值bool和boolean,但實質上存儲的整形數據1(True)和0(False);③MYSQL中支持特殊的枚舉數據類型enum和多值的集合類型set。
(3)完整性約束條件的轉換。數據庫中的完整性約束分為三類:實體完整性、參照完整性、用戶自定義完整性,其中實體完整性和參照完整性稱為關系數據庫系統中的兩個不變性,所有的關系數據庫必須支持兩個不變性。①SQL SERVER與MY SQL對應實體完整性和參照完整性的支持是完全一致的,使用的關鍵字與語法也相同,需要注意的是,MY SQL中只有表的存儲引擎為INNODB時才支持參照完整性;②MY SQL中不支持Check關鍵字定義用戶完整性,用戶完整性的定義主要采用觸發器來實現,對于字符類型的限定取值范圍的check約束,MY SQL中也可以采用舉數據類型enum來實現約束,當然此時MY SQL數據庫應處于Strict嚴格模式下。
(4)存儲過程與存儲函數的轉換。存儲過程與存儲函數能夠有效提高信息管理系統的開發效率,使用不同程序設計語言的程序員可以調用數據庫中定義好的存儲過程和存儲函數實現統一、規范的數據訪問,而不必分別編寫相應應用程序。SQL SERVER與MY SQL中存儲過程的編寫語法基本相同,但調用各自內部函數時,其相同功能的函數可能函數名稱并不相同,因此需要進行映射與轉換。
(5)觸發器的轉換。觸發器是進行數據庫自動化操作和復雜數據完整性規則的數據庫對象。SQL SERVER與MY SQL中存儲過程的編寫語法基本相同,由于觸發器中常常會用到數據操作影響的新值與舊值,在SQL SERVER中分別用Inserted和Deleted兩個臨時表來存儲,而MY SQL中對應的則是NEW和OLD,因此需要進行轉換。
(6)用戶權限規則的轉換。用戶權限給予了數據庫訪問用戶相關的數據訪問范圍,是數據庫安全性的基本保證。為了滿足用戶數據庫操作的習慣,有必要在MY SQL系統中重建SQL SERVER系統下的用戶權限規則。
2.3數據遷移與校驗
數據的遷移應按照一定的次序依次進行,以保證數據能夠成功導入目標數據庫中:首先根據參照完整性遷移表的外鍵數據,然后再遷移主鍵數據。該過程通過編寫數據遷移腳本以及基于ODBC的應用程序自動完成。
數據完成從SQL SERVER與MY SQL遷移后必須進行數據校驗,以確保數據的完整性、一致性、正確性。數據校驗通過編寫應用程序來完成,采用隨機分別抽取一定比例的源數據庫和目標數據庫中相同記錄進行比對的方式進行,校驗程序允許設置抽樣率;如果遷移數據量較少,可采用較大抽樣率甚至100%(全部校驗),如果數據較大,一般可選擇抽樣率10%,進行兩次校驗,即可達到校驗目的。
3 結束語
本文根據用戶信息系統平臺遷移的實際需求,分析比較了現有異構數據庫系統數據遷移的相關方法及其優缺點,提出了采用SQL腳本編輯與ODBC API應用程序相結合的遷移方案,實現了將用戶信息系統由SQL SERVER數據庫系統到MY SQL數據庫系統的遷移。遷移過程涉及字符集的選擇、數據類型轉換、完整性約束條件的轉換、存儲過程與觸發器的轉換、用戶權限規則轉換等方面,并保證了原有應用系統僅進行少量修改,有效滿足了用戶的投入成本小、系統性能高、業務不中斷的要求。
參考文獻:
[1] 方英蘭,陳兵輝,唐苗. 基于JDBC的異構數據庫遷移系統的設計與實現[J]. 北方工業大學學報,2013,25(1).
[2] 熊華平,李莉嬌,陳付平,榮海亮. 大型異構數據庫數據遷移系統的研究與應用[J]. 計算機應用與軟件, 2012,29(7).
[3] 唐如意,巢玉強. 基于用電信息采集系統跨平臺數據庫數據遷移的應用[J]. 電工技術,2015(11).
[4] 程利. 數據庫應用平臺的異構數據遷移[J]. 信息系統工程, 2014(3).
[5] 歐應栗. 異構數據庫數據遷移的研究與實現[J]. 現代計算機, 2015(16).
[6] 邵桐,朱明東. 基于元數據的數據交換系統研究[J]. 軟件導刊, 2016(7).
[7] 常建輝.基于XML異構數據庫集成技術的研究與實現[J].計算機應用與軟件, 2012,29(7).
【通聯編輯:王力】