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