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