引言
企業根據生產發展的需要,往往在不同時期引進了不同的信息系統。這些信息系統運行的軟硬件平臺各異,數據模型各異,從而使各數據源間的互操作變得困難,使它們成為信息孤島。為了解決異構系統間的數據集成問題,人們提出了許多異構數據集成方案,總的可以歸納為三類:模式集成、數據復制和基于SOA的數據集成。模式集成是將各數據源的數據視圖集成為全局模式,使用戶能夠按照全局模式透明地訪問各數據源的數據。典型的模式集成方法有聯邦數據庫技術、基于本體的技術等;數據復制是將各個數據源的數據復制到與其相關的其它數據源上,并維護數據源整體上的數據一致性,提高信息共享利用的效率。典型的數據復制方法是數據倉庫技術;基于SOA的數據集成是在SOA的框架下對每個數據源都為其創建一個服務,然后使用WSDL描述服務,并向UDDI注冊中心注冊服務。模式集成和數據復制側重于怎樣把現有的不同數據整合到一起,因此對數據需求的變更難以做出快速的響應。
中間件是一種處于操作系統、網絡和數據庫之上,應用軟件之下的獨立的系統軟件或服務程序。相連接的不同系統,即使具有不同的接口,但通過中間件相互之間仍能交換信息。本文針對企業信息環境中出現的異構數據及遺留數據問題,結合中間件技術和SOA思想,提出了一種異構數據集成方法,給出了一個面向SOA的異構數據集成架構。利用該架構能有效地應對業務的快速變更,降低異構數據集成組件的內部耦合度,提高數據集成組件的復用性和可擴展性。
2 基于SOA異構數據集成架構
2.1 數據集成架構
數據集成是指把不同來源、格式、特性的異構數據資源進行統一的表示、存儲和管理,實現分布的、異構的、自治的數據資源整合,形成統一的信息源,為用戶提供統一的結構化信息。通過數據資源集成技術可以屏蔽各種異構數據資源間的差異,使用戶以一致的方式方便快捷地進行數據交換和數據共享。基于sOA的數據集成采用面向服務的設計思想,將數據集成的主要功能按其特點進行分離、抽象,并且封裝成符合標準的服務形式。圖1為基于SOA的數據集成架構圖。
2.2 架構分層說明
基于SOA的數據集成架構采用SOA的層次結構,分為表示層、業務層、服務總線、服務層和數據層五個層次。這樣的層次劃分,降低了數據集成中間件的開發難度,同時將數據集成中間件的主要功能封裝成具有統一標準的服務,提高了擴展能力和業務敏捷性。
圖1 基于SOA數據集成架構
1)表示層:這是用戶與異構數據集成中問件進行交互的界面,用戶可以通過表示層根據需要進行相關的數據操作,如數據的添加、刪除、修改和查詢等,或者進行與中間件相關的配置、管理等工作。
2)業務層:用戶根據服務注冊庫提供的服務制定不同的業務規則,并對提供的服務進行組裝從而完成不同的用戶需求。
3)服務總線:服務總線是架構的核心部分,它通過開放的技術標準(如SOAP、UDDI、WSDI 和XMI 等)完成服務的注冊、查詢、綁定、調用、協同,以及對組合服務的編排工作;同時它還完成服務之間的信息交互。
4)服務層:服務層包含由各種功能實體和服務封裝描述組成的服務,異構數據集成中間件的主要功能都是由這些服務或這些服務組成的組合服務來完成的。服務層內包含了兩種不同粒度的服務:原子服務和組合服務,這些服務共同構成數據集成中間件的功能基礎。
5)數據層:數據層是各種異構系統的數據存儲中心,不同的異構系統采用不同的方式存儲相關數據,如文本形式、層次數據庫、關系數據庫等。在數據集成架構中它們作為數據源對外提供用戶需要的數據。
3 核心模塊的設計
數據集成中間件包含了安全管理模塊、存儲管理模塊、數據引擎模塊、數據源適配器模塊等功能模塊,這些功能模塊由多個不同的服務組成。其中安全管理模塊主要是為數據集成提供安全保障,包括權限認證、加密解密和服務控制三個方面的內容;存儲管理模塊主要是完成對xML文檔的讀取和存儲管理;數據引擎模塊是數據集成中間件的核心模塊,主要負責對用戶的查詢請求進行優化處理,按計劃對數據操作進行分解,再將這些分解后的操作存入操作隊列,按操作隊列調用數據源適配器,執行最終的數據操作;數據源適配器模塊主要負責與底層數據源進行連接,執行數據操作,并將操作結果從數據源的本地格式轉化為統一的標準格式。
3.1 安全管理模塊
安全管理模塊中權限認證是關鍵,在數據集成過程中要規劃好用戶類型并且分配相應的權限,因為用戶可能會對數據源中的數據進行變更操作。因此服務請求者為了執行數據集成中間件提供的服務或操作必須經過身份權限認證。在中間件中采用用戶名/密碼的身份權限認證方式,并把用戶名/密碼存放在XML文件中,每個用戶的密碼經過加密解密模塊加密后保存到XML文件的password節點中;當需要把用戶密碼取出來認證時再用加密解密模塊進行解密。用于存放用戶信息的XMI 文件內容格式如下:
在authority節點中規定相應用戶的權限,如INSERT、DEI ETE、UPDATE、SELECT和ALI ,對于有多種權限的用戶,可以并列幾個權限,中間用逗號分隔。
3.2 數據引擎模塊
數據引擎模塊完成操作語句的優化、分解和調度,主要包括操作語句的檢查、操作分解、操作調度等具體功能。操作語句檢查功能完成對模塊傳人的SQL語句正確性進行判斷,如果傳人的SQL語句是錯誤的,則直接返回出錯信息給用戶,不再把SQL語句傳給后續的工作模塊;如果傳人的SQL語句是正確的,則把SQL語句傳給后續的工作模塊繼續執行。操作語句檢查功能通過先檢查sQI操作語句的關鍵字如INSERT、WHERE等,然后再檢查操作對象的數據庫表名、列名的正確性來最終判斷SQL操作語句的正確性。對于操作語句檢查功能可設計成具體的類,在類中完成對SQL操作語句關鍵字的檢查,對數據庫表名的檢查,對數據庫列名的檢查等操作。
操作分解功能完成對需要進行跨庫操作的SQL操作語句進行分解。對于只涉及到一個數據源的SQL操作語句不用進行分解,只需直接轉發給相應的適配器即可。實現操作分解可按照如下方法進行:
1)判斷SQL操作語句是否需要進行分解,這主要根據SQL操作語句中的FROM子句和WHERE子句中是否存在多個數據庫表名。如果存在多個數據庫表名則對該語句進行分解,而只存在一個數據庫表名則無需分解。
2)把需要分解的SQL操作語句按照關鍵字FROM和WHERE進行分割并存放在字符串對象中。對字符串的操作可利用.Net或JAVA中的String對象。
3)根據FROM子句中存在的數據庫名的個數組合相應的字符串,使每條SQL操作子語句只包含單個數據庫名,并根據嵌套情況對SQL操作子語句的優先級進行判斷。
操作調度功能完成對分解后的SQL操作子語句分配執行順序,并轉發給相應的適配器。對于有嵌套查詢等操作的語句,操作調度功能要保證SQL操作語句的順序,這可根據SQL操作子語句的優先級來判斷。
3.3 數據源適配器模塊
數據源適配器模塊主要是對傳人的SQL操作子語句進行執行。在對SQL操作子語句進行執行的過程中,要完成相關參數的加載、構建數據庫連接字符串、加載數據庫驅動程序等工作。由于后端數據源的不同,使用不同的連接方式將影響與數據庫的連接質量和連接效率,因此應針對不同的數據源采用不同的連接方式。在適配器模塊根據連接對象的不同加載相關的參數,如provider、dbname、username和password。相關參數的加載可與構建數據庫連接字符串一起實現,因為在數據庫連接字符串中要包含所加載的參數。構建數據庫連接字符串可采用ConstructDB—ConnStr()方法來實現。以下是ConstructDBConnStr()方法的說明:
函數原型:public string ConstructDBConnStr(stringdbname)
參數:string dbname為要訪問的數據庫的名稱
返回值:string類型,為最后訪問該數據庫的連接字符串
因為在數據源注冊模塊中把可以訪問的數據源相關信息存儲在XML文檔中,因此ConstructDBConnStr()方法可以在XML文檔中直接通過數據庫名稱dbname來獲取該數據源的相關信息,包括該數據庫的類型、數據庫的地址、訪問該數據庫的名稱和密碼等,把這些信息進行組合從而構建完整的連接字符串。
4 結語
目前,針對數據集成已有許多研究,也出現了許多成熟的技術。盡管它們都在某種程度上解決了數據集成問題,但仍存在諸多不足,特別是在考慮開放環境下數據資源的時候。因此,需要更多自治的、協作的和靈活的方法以構造可互操作、開放的和平臺獨立的數據集成系統。基于SOA的數據集成中間件以面向服務的設計思想對數據集成過程中的主要業務流程進行了劃分,將業務流程邏輯分離為松耦合的、自治的、可復用的功能實體,并將其封裝為具有統一描述標準的服務,提高了數據集成中間件的可復用性和擴展性。本文結合中間件技術和SOA思想,給出了一個面向SOA的異構數據集成架構及其主要核心模塊的開發方法,對于計劃利用SOA思想開發數據集成中間件的讀者具有一定的幫助。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/