[摘要] 各大商場為了在劇烈的競爭中降低成本,提高管理水平,因而強烈要求利用現代信息技術研發適合自身的信息系統,實現商場運營的信息化。然而由于信息系統開發的階段性,商場各部門中存在著許多完全獨立的異構數據庫應用系統。提出基于Java和XML的中間件來集成這些異構數據庫,具有平臺無關性,從而實現了商場信息化的資源共享與集成等。
[關鍵詞] 商場信息化 異構數據庫 Java XML 中間件
一、引言
隨著城市里大商場的不斷涌現,伴隨而來的是劇烈的競爭。各大商場為了在劇烈的競爭中求得生存和發展,紛紛出招,減員增效,降低成本,提高管理水平,因而強烈要求利用現代信息技術研發適合自身運營模式的信息系統,實現商場運營的信息化。然而由于信息化過程是逐步實現的,因此商場各部門中存在著許多獨立的異構數據庫系統如Access,MS SQL Server,Oracle。為了滿足商場之間或者商場內各部門協同合作的需要,應該實現各個異構數據庫之間的資源共享,從而有效利用資源,提高整個商場的性能。
目前存在的數據集成方法有四種:建立用戶交互接口,建立聯邦數據庫,中間件,建立數據倉庫。其中利用中間件集成各種異構數據庫時,不用改變原始數據的存儲和管理方式,可集中為異構數據源提供一個高層檢索服務,是實現異構數據繼承的理想解決方案。
二、異構數據庫集成中間件
異構數據庫系統是一個邏輯上完整而又具有站點自治性,物理上分布著若干臺互相連接著的計算機機上的、具有相同或不同數據模型的數據庫系統。異構數據庫集成中間件的使用以最小的代價,使各種異構數據庫之間實現數據的互訪及共享,并對用戶實現數據的透明訪問。通過基于XML與JAVA的異構數據集成中間件的設計不僅滿足上述要求,而且具有跨平臺、跨語言和跨領域的特性,實現了平臺無關性。
1.XML全局模式。當選用了中間件作為商場信息化中異構數據集成的解決方案后,必須選擇一種全局的數據模式來統一異構的源數據模式。一般來說,全局模式必須滿足:(1)能夠描述各種數據格式,無論其是結構化的還是半結構化的,無論其是否支持所有的查詢語言還是簡單文本查詢;(2)易于發布和進行數據交換,集成后的數據可以方便地以多種格式發布和便于應用交換數據。
隨著XML及其相關技術和應用的發展,XML成為了應用間交換數據的一種標準,它提供了一種可編輯、易解析信息交換模式,并且可表示為任何類型的結構或半結構化信息。目前,XML已有多方支持,并且XML的強適應性,使其可以實現對資源的快速包裝和集成發布,因此,采用XML作為中間件系統的全局模式,能更好地適應于開放、發展環境中的異構數據集成。圖1為異構數據集成交換框架參考模型,XML文檔描述了共享數據的屬性同時描述了各異構數據源的相關信息,它實際存儲在中心數據庫中。在中心數據庫中的業務數據結構和各異構源中的數據結構保持一致,各業務模塊通過接口層調用中心數據庫業務數據,異構數據之間的差異被屏蔽。
2.JAVA與XML。JAVA以其平臺無關性、移植性強、安全性高、穩定性好、分布式、面向對象等優點而成為分布式應用系統開發的首選語言。JAVA語言一直都被認為是最適合進行XML編程的語言之一,與平臺無關的語言加上與平臺無關的數據XML,能夠完成最為復雜且彈性最好的分布式應用包括中間件。另外,JAVA與JDBC(數據庫接口規范)是支持基本功能的一個通用的應用程序編程接口,為不同的數據庫功能模塊的層次上提供了一個統一的用戶界面,使異構數據庫間進行通信。因此,使用JAVA來實現異構數據庫的集成是很有優勢的。
三、基于JAVA和XML的異構數據庫集成中間件的設計
如圖2所示,利用異構數據庫集成中間件,并不需要改變原始數據的存儲和管理方式。中間件位于異構數據庫系統(數據層)和應用層之間,向下協調各數據庫系統,向上為訪問集成數據的應用提供統一數據模式和數據訪問的通用接口。各數據庫的應用仍然完成它們的任務,中間件系統負責異構數據源的數據訪問、查詢和協調數據源之間的信息,集中為異構數據源提供一個高層次檢索服務。目的是集成異構數據源的信息,為數據共享、發布和應用對集成信息的訪問提供支持。
1.系統結構。異構數據庫中間件主要由包裝器、中介器兩部分組成。包裝器負責與異構數據庫的交互,完成數據轉化的功能。中介器由調度單元、服務單元和查詢處理器組成,調度單元根據傳遞的不同消息調用服務層所提供的服務,生成對應的中間件全局模式和查詢條件(兩者是異步的)。這樣查詢處理器就根據查詢條件通過包裝器提取異構數據源的數據,嵌入到相應的全局模式中,將數據結果返回給客戶端。
2.實現過程。系統的基本思想是通過用戶輸入異構數據庫查詢條件,通過中間件的處理,將查詢到的數據以XML文檔表達。基本的流程(如圖3所示)如下:
(1)中間件將用戶的標準查詢轉化成異構數據庫的訪問序列。
(2)將查詢條件轉化成參數,并訪問數據庫。
(3)獲取異構數據庫返回的SQL查詢結果并轉為XML文檔。
(4)對各個數據庫提供的查詢XML文檔作集成處理。
3.中間件的設計。
(1)包裝器。對異構數據源而言,包裝器就是關系模式的翻譯器,以XML作為包裝器的數據交換格式,并實現對于不同數據源的本地模式到全局模式的視圖變換和管理。通常,包裝器是提取數據并進行轉化的一段程序,負責接收中介器發送過來的子查詢語句再通過標準接口JDBC傳送給數據源執行,取得查詢數據并將這些數據按照查詢結構組織成以XML結構表達的結果文件。基于以上要求,包裝器應該達到如下基本的目標:
包裝器應該能夠訪問一定類型的數據庫系統,并能夠容易升級其所支持的范圍,包裝器不應該是針對某種數據庫而專門設計的接口,它應該是一個結構較柔性的功能體,允許一定范圍的配置:
包裝器的數據轉換應該是基于模式的帶約束完整性轉化,即能夠盡量反映源數據的原貌,并且包括這些數據間的關系;
包裝器應該提供相應的結構,包裝器需要和中介器通信,良好的接口是實現二者交互的前提;包裝器應該支持事務處理,以增強容錯性能。
因此,包裝器主要由數據庫模塊和 SQL結果生成XML文檔模塊兩個組件構成。數據庫管理模塊主要負責對后臺數據庫的連接管理,包括數據庫連接的初始化、連接的分配、連接的關閉等功能,以及對于數據庫基本操作的封裝。包裝器使用JDBC來連接數據庫,封裝在DBConnectionManager類中,將對數據庫的操作封裝在DBManager類中。
SQL結果創建XML文檔模塊負責把SQL查詢的結果轉換成XML文檔,完成異構數據源數據模式(關系模式)到XML模式的初步轉換。XML作為全局模式,需把關系數據結構轉化成XML文檔,封裝在JDBCUtil類中,將ResultSet結果轉化成XML文檔。
(2)中介器。中介器為客戶端提供一個統一的接口對數據源進行查詢,負責接收來自瀏覽器的全局查詢請求,再根據相應的集成信息,將全局查詢請求分解為多個局部查詢請求傳遞給包裝器,最后將包裝器返回的結果進行處理后傳回給瀏覽器,同時還要維護集成信息,保證全局事務執行的正確性和一致性。
調度單元包括查詢調度和集成調度,集成調度單元調度模式集成服務對包裝器的轉換結果進一步的模式集成,最終實現到中間件全局模式映射。查詢調度單元調用查詢處理器來處理瀏覽器端客戶的查詢請求。
查詢處理器主要是數據庫查詢請求的處理。它包括查詢分解、SQL子查詢請求隊列、請求調度策略三個子模塊。查詢調度調用查詢分解服務將用戶的標準查詢分解成對后臺數據庫的sql子查詢,sql子查詢存放于隊列中。設計一個JavaBean來獲取子查詢語句,接收從瀏覽器端的查詢參數,并根據中間件全局模式,來構造對數據庫的多個子查詢語句,以Vector類返回。
SQL子查詢請求隊列用來存放sql子查詢,定義SqlQueue類來封裝隊列,并使用Vector類來完成隊列的存儲和任意刪減。
請求調度策略模塊調用隊列中的sql子查詢請求進行調度,進入相應的包裝器中執行。
中間件全局模式,由于異構數據庫的數據可能存在差別,采用XML Schema定義了異構模式間的轉換規則及與數據庫相對應的XML元素。
四、結束語
為了應對未來競爭日益激烈的局面,商場的信息化建設是必行的。然而,商場信息化建設是逐步實現的。文中采用基于XML的中間件來集成異構數據庫,通過JAVA實現了關系數據庫到XML數據的轉換、集成,從而為數據共享、發布和應用對集成信息訪問提代了解決方案,避免了資源的重復建設。因此,中間件是解決商場信息化建設中異構數據庫集成問題的較優解決方案。
參考文獻:
[1]黎小紅田富鵬:異構數據庫中數據集成技術研究.西北民族大學學報(自然科學版),2006,27(64),61-63
[2]丁月華楊敏:基于XML的異構數據源集成與交換的實現.2006,23(10),134-136
[3]楊曉強陳冰:用基于XML的中間件訪問異構數據庫.2004,6,205-206
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。