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