喬 楊
(鄭州輕工業(yè)學(xué)院圖書館,河南 鄭州 450002)
計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的飛速發(fā)展加快了傳統(tǒng)參考咨詢向虛擬參考咨詢服務(wù)模式的變革。虛擬參考咨詢服務(wù)(Virtual Reference Services,VRS)充分利用網(wǎng)絡(luò)和數(shù)字資源的優(yōu)勢,使用戶能夠快捷、方便和低成本地獲得圖書館的優(yōu)質(zhì)服務(wù)[1-2],構(gòu)建虛擬參考咨詢體系成為目前各圖書館提高服務(wù)水平的必然選擇。
鄭州輕工業(yè)學(xué)院圖書館建于1978年,虛擬參考咨詢體系的構(gòu)建尚處于初級階段,先后已建立《藝術(shù)系優(yōu)秀學(xué)生作品數(shù)據(jù)庫》、《民俗文化研究專題數(shù)字圖書數(shù)據(jù)庫》、《煙草專題數(shù)字圖書數(shù)據(jù)庫》、《非紙質(zhì)資源數(shù)據(jù)庫》、《輕院教師論文全文數(shù)據(jù)庫》、《輕院碩士論文數(shù)據(jù)庫》等16個專題數(shù)據(jù)庫。筆者從對傳統(tǒng)數(shù)據(jù)整合方案對比和鄭州輕工業(yè)學(xué)院館藏?cái)?shù)據(jù)資源結(jié)構(gòu)研究入手,設(shè)計(jì)了基于ESB(Enterprise Service Bus)的數(shù)據(jù)資源整合策略,給出了數(shù)據(jù)整合的主要技術(shù)和方法,以期對各類異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)整合應(yīng)用提供參考和借鑒。
數(shù)據(jù)整合指將某一范圍內(nèi)離散的、多元的、異構(gòu)的、分布的信息,通過邏輯的或物理的方式,組織為一個整體,使之有利于管理、利用和服務(wù)[3]。目前主要的數(shù)據(jù)整合技術(shù)有:
①以聯(lián)合數(shù)據(jù)庫系統(tǒng)(FDS)為主的多數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)整合,該方法在已存在的局部數(shù)據(jù)庫(Local Database System,LDS)之上為用戶提供統(tǒng)一的存取數(shù)據(jù)環(huán)境,由一組獨(dú)立的LDS組成,實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)間部分?jǐn)?shù)據(jù)的共享[4]。
②以數(shù)據(jù)倉庫(Data Warehouse,DW)為主的整合方案。通過對相關(guān)數(shù)據(jù)庫的鏈接,抽取數(shù)據(jù)記錄,復(fù)制需要的字段,將異構(gòu)或同構(gòu)數(shù)據(jù)源相關(guān)數(shù)據(jù)復(fù)制到特定數(shù)據(jù)源上達(dá)到整合目的,該方案具有訪問效率高的特點(diǎn),但需要重復(fù)存儲數(shù)據(jù),造成數(shù)據(jù)冗余和實(shí)時(shí)更新性差等問題[5]。
③中間件(Middleware)[6]是一種獨(dú)立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借此在不同的技術(shù)之間共享資源,處于C/S的操作系統(tǒng)之上,管理計(jì)算機(jī)資源和網(wǎng)絡(luò)通訊,是連接兩個獨(dú)立應(yīng)用程序或獨(dú)立系統(tǒng)的軟件。相連接的系統(tǒng)通過中間件系統(tǒng)交換信息,關(guān)鍵途徑是信息傳遞方式。由于中間件技術(shù)可以方便地對系統(tǒng)進(jìn)行擴(kuò)展,是目前實(shí)現(xiàn)數(shù)據(jù)資源整合的主流方式。
ESB架構(gòu)給出了一種便利的中間件數(shù)據(jù)整合解決方案,結(jié)合了中間件與XML、Web服務(wù)等技術(shù),包含一系列的功能服務(wù),實(shí)現(xiàn)了通信轉(zhuǎn)換,跨平臺和通信安全的標(biāo)準(zhǔn)接口平臺,能夠?qū)崿F(xiàn)和支持SOA(Service-oriented Architecture)的一組技術(shù)架構(gòu)[7-8]。通過面向消息的中間件協(xié)議接口和Web Server標(biāo)準(zhǔn),解決應(yīng)用程序間實(shí)現(xiàn)技術(shù)的不同,達(dá)到不同應(yīng)用服務(wù)器協(xié)同運(yùn)行的目的,通過連接異構(gòu)MOM服務(wù)接口、在傳輸層上通過使用SOAP來實(shí)現(xiàn)服務(wù)模塊間的通信與協(xié)同操作,主要有數(shù)據(jù)格式轉(zhuǎn)換、路由、信息擴(kuò)展、服務(wù)監(jiān)聽、安全傳輸服務(wù)等功能,其架構(gòu)如圖1所示。
該架構(gòu)消除了同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)了不同服務(wù)之間的通信與調(diào)用。從功能上看,ESB提供了事件驅(qū)動和文檔導(dǎo)向的處理模式,以及分布式的運(yùn)行管理機(jī)制,它支持基于內(nèi)容的路由和過濾,具備了傳輸復(fù)雜數(shù)據(jù)的能力,并可以提供一系列的標(biāo)準(zhǔn)接口,如:
連接功能:消息路由、尋址模式、消息封裝(SOAP)等;
整合服務(wù):數(shù)據(jù)庫接入、應(yīng)用適配器選擇、EAI中間件協(xié)議接口;
服務(wù)定義:服務(wù)接口定義(WSDL)、服務(wù)注冊和版本支持。
鄭州輕工業(yè)學(xué)院圖書館館藏?cái)?shù)據(jù)庫資源的系統(tǒng)構(gòu)成和采用的存儲技術(shù)存在很大差異,在設(shè)計(jì)開發(fā)時(shí)并沒有考慮到當(dāng)前的數(shù)據(jù)集成需求,如:
①數(shù)據(jù)存儲結(jié)構(gòu)不同:數(shù)據(jù)庫采用了順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)等不同的存儲結(jié)構(gòu);
②文件命名問題:文件名的大小寫、編號等;
③其他如屬性特征、命名習(xí)慣、度量單位等方面存在較大差別。
對原有異構(gòu)數(shù)據(jù)庫的整合,制定數(shù)據(jù)項(xiàng)的規(guī)范正則表達(dá)式,利用該正則表達(dá)式驗(yàn)證輸入數(shù)據(jù)的完整性和合法性。經(jīng)過數(shù)據(jù)映射、數(shù)據(jù)轉(zhuǎn)換等工作,來規(guī)范數(shù)據(jù)的表達(dá),保證數(shù)據(jù)的質(zhì)量。
整合體系結(jié)構(gòu)設(shè)計(jì)采用基于ESB的架構(gòu),面向服務(wù)的理念(SOA),通過調(diào)用不同的功能服務(wù)來完成相應(yīng)的功能模塊,實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換、整合、交換等功能,總體架構(gòu)如圖2所示。
系統(tǒng)架構(gòu)從功能層次上分為數(shù)據(jù)訪問層、服務(wù)管理層、數(shù)據(jù)處理層、數(shù)據(jù)存儲層。數(shù)據(jù)訪問層用于提取不同館藏專題數(shù)據(jù)庫資源;數(shù)據(jù)處理層實(shí)現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換和映射等工作,提供整合和交換傳輸接口;數(shù)據(jù)服務(wù)管理層處理基于SOA的服務(wù)調(diào)度、數(shù)據(jù)傳送策略和傳輸安全控制功能。
實(shí)現(xiàn)ESB的服務(wù)包括服務(wù)監(jiān)聽、服務(wù)調(diào)用、服務(wù)注冊、數(shù)據(jù)提取和轉(zhuǎn)換、數(shù)據(jù)交換標(biāo)準(zhǔn)規(guī)范、數(shù)據(jù)安全SOAP引擎等服務(wù)。通過不同服務(wù)的組合和調(diào)用來完成系統(tǒng)功能,圖3給出了數(shù)據(jù)整合的典型工作流程。
①首先服務(wù)監(jiān)聽獲取數(shù)據(jù)整合請求,將請求信息傳送到服務(wù)注冊中心;
②服務(wù)注冊中心在已經(jīng)注冊的服務(wù)模塊查找所需服務(wù),執(zhí)行數(shù)據(jù)調(diào)用模塊;
③服務(wù)調(diào)用與信息系統(tǒng)建立連接,執(zhí)行數(shù)據(jù)抽取服務(wù),完成數(shù)據(jù)獲??;
④數(shù)據(jù)規(guī)范服務(wù)調(diào)用函數(shù)對抽取的數(shù)據(jù)進(jìn)行規(guī)范檢查,調(diào)用數(shù)據(jù)轉(zhuǎn)換服務(wù)對抽取數(shù)據(jù)進(jìn)行XML格式轉(zhuǎn)換,轉(zhuǎn)換為規(guī)定數(shù)據(jù)格式。轉(zhuǎn)換后描述信息發(fā)送到服務(wù)注冊中心,等待服務(wù)請求者調(diào)用;
⑤調(diào)度服務(wù)按服務(wù)需求反饋數(shù)據(jù)交換和整合信息。
異構(gòu)數(shù)據(jù)庫數(shù)據(jù)映射和轉(zhuǎn)換是數(shù)據(jù)整合的主要工作,轉(zhuǎn)換后的統(tǒng)一數(shù)據(jù)格式可以被各系統(tǒng)理解(本設(shè)計(jì)統(tǒng)一采用XML文件格式),便于數(shù)據(jù)的共享和整合。當(dāng)用戶請求服務(wù)時(shí),首先由數(shù)據(jù)抽取服務(wù)完成從異構(gòu)數(shù)據(jù)源的數(shù)據(jù)抽取,然后轉(zhuǎn)換,建立全局和局部的數(shù)據(jù)視圖映射關(guān)系,返回標(biāo)準(zhǔn)數(shù)據(jù)給用戶,圖4給出了數(shù)據(jù)映射和轉(zhuǎn)換模型。
數(shù)據(jù)映射和轉(zhuǎn)換模型主要由3部分組成:XML數(shù)據(jù)服務(wù)接口(XML data service interface)、數(shù)據(jù)轉(zhuǎn)換規(guī)則(data conversion service)、XSLT(Extensible Style sheet Language)數(shù)據(jù)轉(zhuǎn)換處理(XSLT processor)。XML數(shù)據(jù)服務(wù)接口負(fù)責(zé)連接信息系統(tǒng)的源數(shù)據(jù)和轉(zhuǎn)換服務(wù),數(shù)據(jù)轉(zhuǎn)換處理負(fù)責(zé)按照預(yù)先制定的XSLT映射規(guī)則(XSLTMapping Rules)對數(shù)據(jù)類型、字段名字和值域等進(jìn)行相應(yīng)的轉(zhuǎn)換。
數(shù)據(jù)源的抽取過程通過數(shù)據(jù)庫的內(nèi)建連接方法進(jìn)行連接,使用SQL命令語句建立與遠(yuǎn)程數(shù)據(jù)庫的連接,通過建表語句CREATE從源數(shù)據(jù)庫抽取所需數(shù)據(jù)字段映射到本地空間,查找需要轉(zhuǎn)換的字段,調(diào)用轉(zhuǎn)換過程XSLT Processor進(jìn)行格式轉(zhuǎn)換,不同數(shù)據(jù)源數(shù)據(jù)的抽取和XML文件格式的轉(zhuǎn)換,使用的接口和策略也不同,如關(guān)系型數(shù)據(jù)庫是主要的數(shù)據(jù)來源,主流的關(guān)系型數(shù)據(jù)庫本身提供了良好的XML接口,可以直接進(jìn)行數(shù)據(jù)的提取。表1顯示了不同的數(shù)據(jù)處理過程需要調(diào)用的服務(wù)組件情況。
表1 不同數(shù)據(jù)源對應(yīng)的服務(wù)組件
例如,Oracle通過數(shù)據(jù)庫的XML DB組件實(shí)現(xiàn)了XML的抽取操作,該組件是企業(yè)版和標(biāo)準(zhǔn)版的標(biāo)準(zhǔn)特性。Oracle數(shù)據(jù)庫引入了一個新數(shù)據(jù)類型XML格式,它允許在SQL中訪問數(shù)據(jù)庫中的XML文檔,同時(shí)允許XML開發(fā)人員在文檔中使用XML標(biāo)準(zhǔn),用戶以使用XML查詢語句,創(chuàng)建XML文檔,提取XML標(biāo)簽、字段等,串聯(lián)和聚合等操作[11-12]。除關(guān)系型數(shù)據(jù)庫,還存在自定義和非主流等數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)格式,這就需要開發(fā)相應(yīng)轉(zhuǎn)換過程完成XML文件格式的轉(zhuǎn)換。
按照數(shù)據(jù)轉(zhuǎn)換和映射規(guī)則,將提取的異構(gòu)數(shù)據(jù)源數(shù)據(jù)加以合并、拆分、轉(zhuǎn)換、映射等處理,使得異構(gòu)的數(shù)據(jù)格式得到統(tǒng)一。
XSLT技術(shù)提供一套規(guī)則,用于將一組元素描述的數(shù)據(jù)轉(zhuǎn)換為另一組數(shù)據(jù)描述的XML文檔,或者是將該數(shù)據(jù)轉(zhuǎn)換為一種自定義的數(shù)據(jù)格式,包括內(nèi)容結(jié)構(gòu)轉(zhuǎn)換和格式化輸出(XSL-FO)。XSLT應(yīng)用涉及到兩個數(shù)據(jù)文檔:包含源數(shù)據(jù)的文檔和用來轉(zhuǎn)換該文檔的XSLT轉(zhuǎn)換規(guī)則文檔。將XML源數(shù)據(jù)輸入,XSLT Processor按照用戶配置的映射規(guī)則進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將源數(shù)據(jù)轉(zhuǎn)化為目標(biāo)數(shù)據(jù)。在XML文檔的轉(zhuǎn)換過程中,具體需要考慮數(shù)據(jù)格式、數(shù)據(jù)類型、日期、值域等轉(zhuǎn)換問題。
XSLT用模板將同樣的格式應(yīng)用于XML文檔的重復(fù)元素,不同的功能模塊完成不同的文檔格式轉(zhuǎn)換。采用預(yù)先定義的數(shù)據(jù)交換標(biāo)準(zhǔn)和格式來交換數(shù)據(jù),xsl:template標(biāo)記定義了用于進(jìn)行轉(zhuǎn)換的結(jié)點(diǎn)內(nèi)容,其使用語法如下:(這里match值的內(nèi)容是一個正則表達(dá)式,pattern表示為屬性)
①數(shù)據(jù)類型格式轉(zhuǎn)換
不同的存儲環(huán)境有著不同的數(shù)據(jù)類型,但不論數(shù)據(jù)類型在各個環(huán)境中如何變化,其功能都滿足用戶數(shù)據(jù)處理的基本要求如數(shù)值型,包括整型、實(shí)型等。在XML中數(shù)據(jù)的類型可以用Schema來限定。下面以時(shí)間日期格式轉(zhuǎn)換為例來說明利用XSLT進(jìn)行轉(zhuǎn)換的過程。如把“2010-05-01”轉(zhuǎn)換成“01/05/2001”,即格式Y(jié)YYY-MM-DD,利用XSLT將其轉(zhuǎn)換成DD/MM/YYYY。這里模板“DateType”作為應(yīng)用函數(shù),參數(shù)Datetime作為程序調(diào)用的入口參數(shù),調(diào)用方法如下:
②值域轉(zhuǎn)換
值域轉(zhuǎn)換是將一個字段的全部或部分取值映射到另一個字段的全部或部分取值。例如:某一數(shù)據(jù)庫系統(tǒng)中,某項(xiàng)數(shù)據(jù)編號的取值分為5位數(shù)字,而整合后的數(shù)據(jù)庫系統(tǒng)需要8位的數(shù)字和字符組合,這就需要將原有的5位數(shù)字值域映射到8位的數(shù)字加字符值域上去。
③其他
代碼轉(zhuǎn)換可以看成是一類特殊的值域轉(zhuǎn)換。對于XML中的數(shù)據(jù)字段,必須使用統(tǒng)一的術(shù)語,不統(tǒng)一的必須轉(zhuǎn)換成平臺規(guī)范中定義的統(tǒng)一詞匯,如shuming?BookName的轉(zhuǎn)換。
ESB軟件架構(gòu)消除了不同應(yīng)用系統(tǒng)間的技術(shù)差異,實(shí)現(xiàn)了不同數(shù)據(jù)庫服務(wù)之間的通信與整合。采用統(tǒng)一的XML文件格式可為整合后的數(shù)據(jù)提供良好的共享和交換基礎(chǔ)。在開源的ESB ServiceMix編碼操作環(huán)境下采用該方案整合數(shù)據(jù),保證了數(shù)據(jù)的有效性、完整性和一致性。方案的實(shí)施為鄭州輕工業(yè)學(xué)院圖書館虛擬參考咨詢體系的建設(shè)提供有效的后臺數(shù)據(jù)支持,如何對校外數(shù)據(jù)庫數(shù)據(jù)資源進(jìn)行接入、交換和整合也是下步的研究重點(diǎn)。
[1] 初景利.圖書館數(shù)字參考咨詢服務(wù)研究[M].北京:北京圖書館出版社,2004(6):19-20.
[2] 蔡紅.虛擬參考咨詢及其宣傳推廣模式探討[J].情報(bào)探索,2009(8):30-32.
[3] 王永霞.基于SOA的交通信息整合系統(tǒng)研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2010(4):70-72.
[4] Horsburgh JS,Tarboton DG,PiaseckiM,etal.An integrated system for publishing environmental observations data[J].Environmental Modelling&Software,2009(8):879-888.
[5] 潘衛(wèi)明,郝平.基于SOA和工作流的數(shù)據(jù)倉庫更新系統(tǒng)[J].計(jì)算機(jī)應(yīng)用與軟件,2010(2):206-208.
[6] Perumal T,Ram li A R,Leong C Y,et al.Middleware for heterogeneous subsystems interoperability in intelligent buildings[J].Automation in Construction,2010(2):160-168.
[7] Liu Y,Gorton I,Lee V K.The architecture of an event correlation service for adaptive middleware-based applications[J].Journal of Systems and Software,2008(12):2134-2145.
[8] 張啟文,徐琪.基于SOA和ESB的供應(yīng)鏈快速響應(yīng)系統(tǒng)集成研究[J].計(jì)算機(jī)應(yīng)用,2009(9):2523-2526.
[9] 彭樹青,陳德運(yùn).一種基于ESB的異構(gòu)系統(tǒng)數(shù)據(jù)集成方法[J].東北林業(yè)大學(xué)學(xué)報(bào),2009(2):108-109.
[10] Foetsch D,Pulvermueller E.A conceptand implementation of higher-level XML transformation languages[J].Knowledge-Based Systems,2009(3):186-194.
[11] 周德軍.用JSP實(shí)現(xiàn)XML文件到Oracle數(shù)據(jù)庫的導(dǎo)入和導(dǎo)出[J].科技信息,2010(2):273-275.
[12] 蘭小機(jī),任金銅.對Oracle XML DB的XML存儲技術(shù)的研究[J].大地測量與地球動力學(xué),2009(6):139-143.