王靜
摘 要:針對目前《全國報刊索引》底層異構數據庫之間數據交換存在的問題,提出了異構數據庫SQLServer到Oracle之間數據交換的設計模型,并基于設計模型開發實現了這兩個數據庫之間的數據轉換工具,設計了Groovy動態語言腳本引擎,支持數據遷移轉換和數據合并轉換;建立了版本控制模式,便于描述數據交換的狀態和管理數據的安全。該工具滿足了《全國報刊索引》平臺數據的日益增長的數據交換需求。
關鍵詞:異構數據庫 數據轉換工具 動態語言腳本引擎
中圖分類號:TP31 文獻標識碼:A 文章編號:1672-3791(2018)02(b)-0014-03
《全國報刊索引》數據庫始建于1993年,涵蓋了多種類型的報紙期刊數據庫產品。如晚清全文數據庫、民國時期期刊全文數據庫、各類報紙數據庫、現刊索引數據庫和專題數據庫等。《全國報刊索引》收錄的數據最早可回溯至1833年,至今已累計收錄報刊20000余種、文獻3000多萬篇,年更新數據量超過350萬條。
從最早的光盤版到現今的SQL Server、Access、Oracle等多種的數據庫管理系統被應用。這些數據庫管理系統相互之間存在許多物理和邏輯上的差異,盡管其本身都具有數據導入和導出功能,但這些功能還不能夠滿足平臺日益增長的數據交換需求。為了滿足期刊全文檢索上線的需求,提升檢索速度和效率,數據庫管理系統從SQL Server升級到Oracle。SQL Server到Oracle數據轉換,不是簡單字段對應的遷移轉換,需要進行字段計算、內容合并、日期處理、簡繁轉換等多種轉換,這就需要設計專門的工具來進行復雜的數據轉換。
1 數據轉換設計
根據異構數據庫數據轉換工具的設計總體目標,將該工具分為如下的幾個部分:數據讀取、轉換規則、數據寫入、操作界面、版本管理。
數據讀取負責分析源數據庫中鏈接信息,源數據表Excel的數據框架結構和數據的讀取。
(1)轉換規則控制源數據和目的數據之間的轉換,根據制定的轉換規則得出需要某些源數據字段進行日期、簡繁或格式的轉換。
(2)數據寫入負責將進行轉換后的源數據寫入目的數據庫。
(3)操作界面為用戶提供一個可交互的界面進行操作。
(4)版本管理負責對任務版本進行管理。
工具的總體流程圖如圖1所示。
1.1 數據讀取
數據讀取,先讀取源數據庫的信息:源數據庫的類型、數據庫連接的方式、連接的配置、源數據庫地址、源數據庫用戶名及源數據庫密碼。
通過數據庫驅動讀取數據到內存中,與源數據庫取得連接。
1.2 轉換規則
轉換規則,轉換規則保存在Excel數據框架中。將源SQL SERVER數據庫中的數據轉換成符合要求及目的ORACLE數據庫要求的數據格式,有以下的幾種轉換。
1.2.1 數據類型的轉換
在不同的數據庫中由于數據類型的不一樣,需要進行轉換,如SQL SERVER數據庫中有布爾類型,而ORACLE數據庫中沒有布爾類型,這就需要在設置的時候進行定義,在轉換的時候按定義進行轉換。
1.2.2 日期格式轉換
由于兩個數據庫的日期定義格式不同,在一個數據庫中定義的日期數據格式在另一個數據庫中需要重新定義。所以,在轉換過程中對日期字段需要進行特殊轉換處理。
1.2.3 簡繁轉換
由于《全國報刊索引》平臺包含大量的民國期刊和報紙數據,這些數據有一定的特殊性:題名、作者、出版地等字段檢索既需要提供簡體檢索又需要提供繁體檢索。需對字段進行簡繁轉換處理。
1.3 數據寫入
數據寫入是將轉換過的數據寫入目的數據庫,首先讀取目的數據庫的信息,如目的數據的類型、數據連接的方式、數據庫連接的配置、目的數據庫地址、目的數據庫用戶名及目的數據庫密碼、數據來源類型、數據字段信息。
根據數據庫的連接信息連接目的數據庫,通過數據庫驅動寫入數據到目的數據庫中。寫入方式設計為兩種選擇:一種是只插入數據;另一種是跳過錯誤,最終呈現錯誤清單。
1.4 操作界面
操作界面為用戶提供一個可交互的界面來進行數據轉換的操作。
1.4.1 源數據庫信息主要是記錄源數據庫的一些配置參數及數據來源
源數據的類型、數據連接的方式、數據庫連接的配置、源數據庫地址、源數據庫用戶名及密碼和源數據字段信息。
1.4.2 目的數據庫信息主要是記錄目的數據庫的配置參數
目的數據的類型、數據連接的方式、數據庫連接的配置、目的數據庫地址、目的數據庫用戶名及密碼、目的數據字段信息和寫入方式。
1.4.3 數據規則
數據規則是源數據和目的數據之間的對應關系和轉換規則。轉換設計任務在提取的基礎上讀取Excel數據框架,即源數據庫和目的數據庫建立的映射表得到源數據字段和目的數據字段的轉換對應類型。
1.5 轉換任務管理
版本管理負責轉換任務的管理和保存,轉換任務時,建立版本控制機制,版本控制機制包含版本類型、版本號、描述、啟用狀態、創建時間、創建人、修改時間和修改人。兩種版本類型,即新版本和修改版本。新版本建立時要新創建一個版本號,命名,描述數據處理的任務。修改版本建立時要選擇你要修改的版本號,在原有命名的基礎上,附加命名,描述數據修改的任務。
2 轉換工具的實現
2.1 數據讀取實現
源數據庫的類型是SQL SERVER數據庫。通過JDBC鏈接SQL SERVER和ORACLE。JDBC數據庫連接參數使用字符串的形式,其中包含著數據庫地址、用戶名、密碼、源數據的表名等需要的信息,數據框架中的SQL查詢語句。
2.2 轉換規則實現
源數據和目的數據的轉換對應關系保存在Excel數據框架中,分別是元數據表和規則表Rule。
(1)元數據表中記錄源數據的字段信息主要有表名、字段名、簡繁中文名稱、字段分類、數據類型和數據長度。
(2)規則表中記錄源數據和目的數據的字段對應關系及表達式。
2.3 數據寫入實現
轉換任務中的源數據信息相關字段定義如下:數據庫的連接類型,JDBC連接支持SQL Server和Oracle數據庫之間的連接。目的數據庫的連接字符串,JDBC的數據庫連接參數使用字符串的形式,其中包含著數據庫地址、用戶名、密碼、目的數據庫表名等需要的信息。
2.4 操作界面
數據操作界面,提供一個可交互的界面方便用戶進行數據轉換處理。
(1)填寫平臺URL路徑。
(2)填寫用戶名和密碼。
(3)填寫版本說明,新版本或者版本修訂。新導入數據選擇“新版本”,修改數據選擇“版本修訂”。
(4)選取數據規則和建立數據任務。
選擇數據源的JDBC鏈接,填寫用戶名和密碼,選擇“連通測試”。若JDBC鏈接測試通過,則選取數據規則和轉換任務,進行數據轉換。
3 結語
本研究針對《全國報刊索引》平臺底層的SQL Server數據庫和Oracle數據庫之間的數據轉換進行探討,設計了數據轉換工具,按照數據轉換的需求制定了數據規則,數據處理人員只需根據每次要處理數據集不同來設計數據任務,通過工具實現了數據導入和轉換功能,解決異構數據庫間數據交換問題。
該工具已投入《全國報刊索引》平臺的底層異構數據庫數據處理中使用,運行情況良好,達到了預期的效果。運行結果表明,該工具能實現異構數據庫的數據轉換功能,界面友好,數據轉換準確高效。
參考文獻
[1] 王曉雯,孫承愛,周春露.基于元數據映射機制的異構數據操作[J].軟件導刊,2015(1):146-148.
[2] 余偉,李石君.Web大數據環境下的不一致跨源數據發現[J].計算機研究與發展,2015,52(2):295-308.
[3] 王洪榮,吳寶國.異構數據庫中數據交換工具的設計與實現[J].北京林業大學學報,2009(11):102-104.