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