引言
在國際金融危機肆虐、國際競爭日益激烈、產品需求日益精細化的背景下,企業要擺脫困境、做大做強,并購重組成為一種重要的發展戰略。
在企業完成并購后,作為企業運營管理載體的信息系統的整合成為了必然的需求,如何有效地把這些分布的、異構的、運行在不同軟硬件平臺上的信息集成,連通“信息孤島”,共享數據,為集團企業提供一個完整統一的數據視圖以充分利用現有數據資源,成為了企業界日益關注的新問題。
1 異構數據源集成概述
異構數據集成目的就是提供統一查詢接口,屏蔽底層數據源的異構性,使用戶不必考慮底層數據模式與分布位置的不同等問題,能夠通過一個統一的查詢界面實現對異構數據源的透明訪問。其中的關鍵是如何以一種統一的數據模式描述各異構數據源中的數據,屏蔽它們的平臺、數據結構等異構性,實現數據的無縫集成。
近年來,多種數據集成模式被提出,其中比較有代表性的有以下幾種模式:
1) 點對點模式。
在兩種不同數據源之間建立相互轉化模式,該方法在異構數據源很少的情況下,實現技術比較簡單,但對異構數據源較多的情況下,實現起來極不方便,因為對于一個包含N 個異構數據源的系統,需要建立的轉化模式總和為: T = N( N - 1) ,相應的交互復雜度為:O( n2 ) 。采用該模式,系統每增加一個新的數據源,都必須為這個新數據源建立起與已有數據源的多種訪問模式,這就大大降低了系統的可擴展性,該方法正被新的數據集成方式逐步取代。
2) 集中復制數據模式。
數據倉庫是這一方法的典型代表,通過對異構數據源的分析與轉換,將每個異構數據源中的數據復制到一個統一的數據倉庫中,該模式的優點是: 不破壞原有系統,可集成多種數據源和商業規則,實現了數據的集中式管理,數據集成質量好。缺點是: 無法實時反映數據的變化,只能定期進行數據更新,每當有新的數據源加入時,全局模式必須重新生成,系統可擴展性較差。
3) 中間件模式。
隨著分布對象技術的興起,中間件技術也被廣泛地應用到數據集成中,其中比較有代表性的有微軟的DCOM 和OMG 的CORBA 等,他們都采用包裝的思想,以統一的接口提供調用服務,屏蔽了數據的異構性,實現了數據的透明性訪問。中間件技術在數據源的自治性、查詢的實時性、配置的靈活性等方面,優點比較明顯,是目前采用比較廣泛的集成模式之一。
4) 基于XML 技術模式。
XML(eXtensible Markup Language,可擴展標記語言) 是一種在Web 上表示信息的標準文本格式。XML憑借其良好的可伸縮性和靈活性,不僅能夠提供對資源內容的表示,也可提供對資源所具有的結構信息的表示,其正被廣泛地應用到許多領域,也是近年來數據集成領域研究熱點之一。
文中在對這些集成方法分析的基礎上,提出了一種采用SOA 架構及通過Web Service 技術封裝數據源的軟件架構。并針對目前Web 服務選取主要集中于UUDI 層,基本是通過關鍵字匹配或者基于框架的方法實現,引入語義Web技術,來解決原方法查準率極其低下的不足。在語義Web 中,描述服務的信息均被賦予特定的語義,能被計算機理解和處理,這使得基于語義的Web 服務的發現成為可能,極大地提高了查準率。
2 基于SOA的系統集成架構設計
面向服務架構( Service Oriented Architecture,SOA)的概念是GartnerGroup,于1996 年提出。關于SOA,目前尚未有一個統一的、業界廣泛接受的定義。一般認為: SOA,面向服務架構是一個組件模型,它將應用程序的不同功能單元( 稱為服務) ,通過服務間定義良好的接口和契約聯系起來。接口采用中立的方式定義,獨立于具體實現服務的硬件平臺、操作系統和編程語言,使得構建在這樣的系統中的服務可以使用統一和標準的方式進行通信。
Web Service 是一種與平臺無關的“自包含的、自描述的、組件化的應用程序”,是一種在Internet 上使用的全新的分布式計算技術。
系統首先按照Web Services 標準把數據封裝,以解決平臺異構、結構異構與分布性等問題,本體服務層及語義層進一步把數據解析與重組,最后以虛擬視圖或視圖集合的形式,提供給應用層。其特點是能夠解決各種異構性問題,且中間過程中不存儲任何異構數據庫中的實際數據,實現了數據的實時異構集成。整個系統架構如圖1 所示,主要包括以下5 個層次:
圖1 基于SOA 的異構數據集成框架圖
1) 應用層。
提供統一的查詢接口,用戶可以透明地訪問底層數據,而不必知道數據的物理位置與數據的異構性,對用戶而言,就像訪問單數據源一樣簡單。
2) 語義層。
將語義查詢結果與語義信息結合包裝為語義形式的結果集,并以服務的形式提供給應用層調用。
3) 本體服務層。
本體服務包括領域本體服務與系統本體服務兩部分。領域本體是數據模式的統一表達模型和領域術語標準。領域本體由領域專家定義,數據提供者需要把自己的數據集與領域本體進行映射形成系統本體。系統本體與系統的多個角色存在著相互聯系,是整個系統語義集成的核心。
4) 數據資源服務層。
維護所有與數據資源相關的信息。所有直接與數據資源有關的操作都由這個組件提供支持。這些操作包括數據資源的動態發布、加入、退出、信息維護、信息查詢、數據的導入和查詢等。實際上,這個核心組件為各種不同類型的數據資源提供了統一的接口,使得查詢能夠跨越不同的數據資源類型。系統平臺在分析用戶的查詢請求時,正是從這個數據資源服務中獲取數據資源的相應信息,進而生成查詢計劃,并把查詢分派到各個數據資源。
5) 資源層。
企業遺留及新建的各種數據資源。
3 關鍵模塊的設計
3.1 本體庫
起初本體是哲學范疇上的一個概念,Studer等通過研究認為“本體( ontology) 是共享概念模型的明確的形式化規范說明”,其包含4 層含義: 概念模型、明確、形式化和共享。本體是對一個客觀存在系統的解釋或說明,描述的是一個客觀系統的抽象本質。正是由于本體對客觀現實的強大描述能力,本體這一概念被廣泛地引入計算機領域,用來解決一些與現實世界相關的,需要對現實事物進行抽象描述的領域。在數據集成過程中,人們需要對大量的數據進行邏輯描述,以揭示其中的相互關系,消除語義的異構性等問題,本體的出現正好解決了這一問題。在數據集成領域中,通過對數據的嚴格定義和建立數據之間的關系,揭示數據之間共同認可的、可共享的知識,達到解決語義異構性問題的目的。
這里,借用描述邏輯( DL,Description Logic) 中對TBox 和ABox 的定義形式,來構建本體庫。
1) 集合C: 概念集,領域知識中最基本最一般的概念形成最初的概念集C;
2) 集合R: 關系集,概念之間一些最基本的關系形成關系集R;
3) 把1) 中形成的概念集C 和2) 中生成的關系集R,通過邏輯關系運算,生成新的概念,并把新生成的概念添加到集合C;
4) 重復第三步,直到集合C 足夠覆蓋應用中的領域知識,集合C 就是所要的TBox;
5) 用實例集來填充概念集C 中的概念和關系集R中的關系,這時用于表示填充式子的全體就形成Abox。
這里TBox 與ABox 就是本系統中要用到的領域本體與系統本體。
下面說明一下本體的創建過程,現有倉庫A 與倉庫B,其結構如圖2 所示。
圖2 倉庫A 與倉庫B
其涉及到的基本概念及他們之間的關系,用MyoMyo Naing 提出采用六元組法可表示為{ C,AC,H} ,其中:
倉庫A:
C = { 倉庫、減速器、庫管員、蝸桿減速器}
AC = { 管理( 庫管員,減速器) ,存放地點( 減速器,倉庫) ,工作地點( 庫管員,倉庫) }
H = { ( 蝸桿減速器,減速器) ,減速器…}倉庫B:
C = { 倉庫、減速機、管理員、蝸桿減速器、齒輪減速器}
AC = { 管理( 管理員,減速機) ,存放地點( 減速機,倉庫) ,工作地點( 管理員,倉庫) }
H = { ( 蝸桿減速器,減速機) ,( 齒輪減速器,減速機) ,減速機…}
通過調研及與企業相關專家勾通,可得到基于圖3 表示的領域本體。
圖3 領域本體
用Myo Myo Naing 提出采用六元組法可表示為{ C,AC,H} ,其中:
C = { 倉庫、減速器、管理員、蝸桿減速器、齒輪減速器}
AC = { 管理( 管理員,減速器) ,存放地點( 減速器,倉庫) ,工作地點( 管理員,倉庫) }
H = { ( 蝸桿減速器,減速器) ,( 齒輪減速器,減速器) ,減速器…}
用倉庫A 與倉庫B 中的概念集CA、CB去填充領域本體概念集C 中的概念,用倉庫A 與倉庫B 中的關系集RA、RB去填充領域本體中的關系集R,并清除多余概念與關系,就得到系統本體,如圖4 所示。
圖4 全局本體
用OWL 語言可表示為:
< owl: Class rdf: ID = " 倉庫" > < /owl: Class >
< owl: Class rdf: ID = " 減速器" > < /owl: Class >
< owl: Class rdf: ID = " 管理員" > < /owl: Class >
< owl: Class rdf: ID = " 蝸桿減速器" >
< rdfs: subClass >
< owl: Class rdf: about = " #減速器" / > < /owl: Class >
< /rdfs: subClass >
< /owl: Class >
< owl: Class rdf: ID = " 齒輪減速器" >
< rdfs: subClass >
< owl: Class rdf: about = " #減速器" / >
< /owl: Class >
< /rdfs: subClass >
< /owl: Class >
< owl: OProperty rdf: ID = " 管理" >
< rdfs: domain rdf: resource = " #管理員" / >
< rdfs: range rdf: resource = " #減速器" / >
< /owl: OProperty >
< owl: OProperty rdf: ID = " 存放地點" >
< rdfs: domain rdf: resource = " #減速器" / >
< rdfs: range rdf: resource = " #倉庫" / >
< /owl: OProperty >
< owl: OProperty rdf: ID = " 工作地點" >
< rdfs: domain rdf: resource = " #庫管員" / >
< rdfs: range rdf: resource = " #倉庫" / >
< /owl: OProperty >
3.2 查詢模塊
查詢模塊是直接面向數據使用者的接口,負責將用戶提交的查詢分解成針對各分布數據的子查詢,并提交給相應的數據源服務模塊。語義查詢服務是整個系統的關鍵部件之一,其結構如圖5 所示,它又可再細分為:
圖5 查詢模塊系統結構
1) 查詢生成模塊。
查詢生成模塊主要負責查詢預處理。接收用戶提交的各種查詢請求,并進行必要的驗證處理,包括驗證本體的有效性、驗證數據資源的可用性、驗證查詢的合法性和完整性等一系列工作,最后根據全局本體的定義將用戶請求轉化為統一的、可識別的全局查詢語句。
2) 查詢解析模塊。
負責分析語義查詢并進行分解工作。將從查詢生成模塊接收到的語義查詢語句,根據全局本體或局部本體中定義的本體信息生成相應的查詢語句。這些查詢語句描述了所要查詢的數據來自哪些數據資源、具體的表名、數據列、查詢條件、各個數據表之間的連接關系以及各條查詢計劃之間的執行依賴關系。
3) 查詢執行模塊。
其具體包括隊列管理和調度管理兩個子模塊,首先接收來自查詢解析模塊中的查詢語句,行成一個隊列,然后調度管理模塊基于FIFO( 先進先出) 調度策略,分析其屬性參數,并送往相應的數據源服務模塊執行具體操作。
3.3 數據融合模塊
將原子查詢計劃的執行結果進行融合,得到符合用戶要求的最終查詢結果集。由數據源服務模塊返回的結果集,包含了各個不同數據源的查詢結果,這些查詢結果由一些數據行組成,對這些數據行必須進行相應的判斷融合,才能得到所需結果,數據融合主要有以下三種情況:
1) 重復數據行,合并過濾,返回唯一值;
2) 數據行行數據的融合。要查詢減速器的庫存情況,分廠1 與分廠2 返回的結果分圖如表1、2 所示,則最后數據融合后的結果如表3 所示;
表1 分廠1 返回結果
表2 分廠2 返回結果
表3 數據融合后的結果
3) 數據行列數據的融合。如果2 行數據除關鍵屬性組外的屬性取值不同,根據需要則要把一行數據中的不相同屬性值連接到另一行數據的末尾成為同一行數據輸出。
4 結束語
隨著信息化發展及企業規模的不斷擴大,“信息孤島”問題已經成為阻礙企業信息化進程的主要因素,數據集成是解決“信息孤島”問題的根本方法。文中通過對比已有數據集成方法,結合現代企業的具體應用需求,提出了一種基于SOA 架構和本體技術的數據集成框架。系統將異構數據源以Web Service 的形式進行封裝,同時引入本體技術,利用本體描述領域概念的優勢,較好解決了數據集成中數據的異構性問題,實現了數據訪問的透明性。
下一步的主要工作是: 改進本體的生成規則,減少人工干預,提高本體生成的自動化程度。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.hanmeixuan.com/
本文標題:基于SOA的異構數據集成軟件架構研究