時間:2005-09-21 作者:Manu Madhusudhanan R 瀏覽次數(shù): 2683 本文關(guān)鍵字:數(shù)據(jù)服務(wù), sdo, 集成, XML, AquaLogic Data Services Platform, XQuery |
|
摘要
各種分布的信息源為負(fù)責(zé)通過集成和聚集這些源的數(shù)據(jù)而創(chuàng)建和維護(hù)應(yīng)用程序的架構(gòu)師們帶來了許多挑戰(zhàn)。過去,開發(fā)人員必須用每種不同數(shù)據(jù)源可用的API 編寫自定義的代碼。這樣既增加了成本又不穩(wěn)定,改變時需要修改自定義代碼。
所有應(yīng)用程序架構(gòu)師和數(shù)據(jù)專家面臨的挑戰(zhàn)是,在確保為集成、聚集和轉(zhuǎn)換數(shù)據(jù)所做的工作的可復(fù)用性的同時,容易地向應(yīng)用程序傳遞數(shù)據(jù)。企業(yè)信息集成(Enterprise Information Integration,EII)解決方案解決了這個問題。這些解決方案一般提供一個數(shù)據(jù)服務(wù)層 (Data Service Layer),用于從根本上簡化分布數(shù)據(jù)的訪問和集成。
本文探討了一個基于數(shù)據(jù)服務(wù)層的解決方案,以及XQuery 在解決業(yè)務(wù)數(shù)據(jù)集成問題時的作用。同時說明了這類解決方案提供的抽象級別如何使得不同的數(shù)據(jù)源對終端用戶是透明的,從而很容易組合附加服務(wù)。
面向服務(wù)架構(gòu)的方式
面向服務(wù)架構(gòu)(Service Oriented Architecture,SOA)的風(fēng)靡并非毫無根據(jù),而是應(yīng)需而生。SOA 也能應(yīng)用于數(shù)據(jù)集成領(lǐng)域。數(shù)據(jù)服務(wù)層充當(dāng)抽象層,它與底層資源通信,并從應(yīng)用程序去除數(shù)據(jù)位置、類型和管理,留下虛擬數(shù)據(jù)源。對應(yīng)用程序開發(fā)人員而言,虛擬數(shù)據(jù)源意味著集中于手邊的數(shù)據(jù)問題,無需重寫訪問不同數(shù)據(jù)的管道。SOA 的推動力之一是一個松散藕合的系統(tǒng):數(shù)據(jù)分層在數(shù)據(jù)領(lǐng)域提供這一系統(tǒng)。
此外,數(shù)據(jù)服務(wù)(將在稍后解釋)提供一些用戶可能感興趣的公共函數(shù),可把用戶從底層細(xì)節(jié)中解脫出來。
當(dāng)設(shè)計一個數(shù)據(jù)訪問層基礎(chǔ)架構(gòu)時,需要解決許多因素以提供一個有效且可伸縮的解決方案。以下是最為重要的幾個因素:
本文接下來將探討這些想法將如何應(yīng)用于數(shù)據(jù)服務(wù)層。
數(shù)據(jù)服務(wù)層
數(shù)據(jù)服務(wù)層有助于形成一個統(tǒng)一的數(shù)據(jù)編目。有了“數(shù)據(jù)編目”后,根據(jù)應(yīng)用程序的需要,它可以被邏輯分段,每一段表示為一個可被標(biāo)準(zhǔn)API 訪問的“數(shù)據(jù)服務(wù)”。數(shù)據(jù)編目因此成為一個很容易被其他開發(fā)人員和應(yīng)用程序重用的接口。基于數(shù)據(jù)服務(wù)層的解決方案的架構(gòu)如圖1 所示。
具有一個編目會有很多優(yōu)點(diǎn):
數(shù)據(jù)服務(wù)層封裝了應(yīng)用程序的業(yè)務(wù)邏輯。因而數(shù)據(jù)服務(wù)是一個自包含的模塊,其中每個數(shù)據(jù)服務(wù)被認(rèn)為是一個根據(jù) E-R 圖中的實(shí)體建模的基于XML 的類。這些實(shí)體通過函數(shù)相關(guān)聯(lián)。
為使數(shù)據(jù)服務(wù)是自包含的,最理想的情況下它們應(yīng)包含以下信息:
因此,數(shù)據(jù)服務(wù)充當(dāng)?shù)讓訑?shù)據(jù)基礎(chǔ)架構(gòu)的邏輯接口;它可以稱為虛擬視圖。數(shù)據(jù)服務(wù)包含了足夠的信息量,以便為客戶應(yīng)用程序查找、執(zhí)行和轉(zhuǎn)換有用格式的信息。
盡管我們定義了數(shù)據(jù)服務(wù)基礎(chǔ)架構(gòu)的需求,但是還得實(shí)現(xiàn)它,實(shí)現(xiàn)時要考慮前面提到過的設(shè)計因素。一個新興的設(shè)計模式使用XQuery來提供不同數(shù)據(jù)源的統(tǒng)一視圖。
XQuery 是一種強(qiáng)大的語言,受到行業(yè)龍頭們?nèi)鏘BM、BEA 和 Oracle 的支持。這是一個富有表現(xiàn)力的語言,它語法通俗簡單,并與XML 數(shù)據(jù)結(jié)構(gòu)有機(jī)地結(jié)合在一起。數(shù)據(jù)服務(wù)可以利用XQuery 的內(nèi)在能力處理關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫。因此,使用XQuery 可以實(shí)現(xiàn)數(shù)據(jù)服務(wù)中提供的接口函數(shù)。優(yōu)秀的XQuery 引擎和工具的可用性使得 XQuery 成為不同數(shù)據(jù)源的集成語言的自然選擇。XQuery 引擎提供數(shù)據(jù)集成的核心。
由于XML 數(shù)據(jù)能被其他應(yīng)用程序普遍讀取,或者能被XMLBeans 或其他技術(shù)轉(zhuǎn)換為Java 對象,所以客戶能夠使用行業(yè)標(biāo)準(zhǔn)訪問信息。所以它在現(xiàn)代企業(yè)需求中是一個很受歡迎的解決方案。
Aqualogic數(shù)據(jù)服務(wù)平臺
BEA 的 AquaLogic 數(shù)據(jù)服務(wù)平臺就是這種方法。該平臺為底層數(shù)據(jù)源提供一個抽象的數(shù)據(jù)服務(wù)層。這里利用了XQuery 的強(qiáng)大功能。BEA 使用XQuery 來實(shí)現(xiàn)數(shù)據(jù)服務(wù)中提供的接口函數(shù),可以是讀或關(guān)系函數(shù)。關(guān)系函數(shù)用于建立與其他數(shù)據(jù)服務(wù)的關(guān)系。例如,通過getItems() 函數(shù)可以使一個 Orders 數(shù)據(jù)服務(wù)與 Line Items 數(shù)據(jù)服務(wù)相關(guān)聯(lián)。此外,數(shù)據(jù)服務(wù)還可以使用 XPath 與其他數(shù)據(jù)服務(wù)進(jìn)行通信,極大地增加了集成的范圍。
假設(shè)您具有一個與Oracle 數(shù)據(jù)庫通信的Customer 數(shù)據(jù)服務(wù)和一個與Web service 通信的PurchaseOrder 數(shù)據(jù)服務(wù)。Customer 數(shù)據(jù)服務(wù)將會提供諸如getCustomerByID()或getCustomers() 這樣的函數(shù),而 PurchaseOrder 數(shù)據(jù)服務(wù)將有諸如getPOStatus() 這樣的函數(shù)。我們可以使用第三個數(shù)據(jù)服務(wù) —— CustomerSummary,它與Customer 和 PurchaseOrder 數(shù)據(jù)服務(wù)通信以提供集成信息。
圖2 是數(shù)據(jù)服務(wù)的抽象示意圖。這里,函數(shù)的返回類型由模式建模。這里使用pragma來表示元數(shù)據(jù)信息,可能包括數(shù)據(jù)源的連接信息。XQuery 在讀取數(shù)據(jù)時將會用到連接信息。圖中顯示了XQuery 如何用于實(shí)現(xiàn)這些函數(shù)。即使您對XQuery 不熟悉,也應(yīng)該能夠通過閱讀函數(shù)實(shí)現(xiàn)的代碼而理解函數(shù)的實(shí)現(xiàn)。這就是XQuery 的力量。您可以看到如何通過從一個數(shù)據(jù)服務(wù)引用另一個數(shù)據(jù)服務(wù)而建立關(guān)系。
XQuery 可以將抽取的數(shù)據(jù)返回為XML,但這將增加程序員的負(fù)擔(dān),因?yàn)閄ML 可能并非以一種有用的形式存在于用戶的界面上。在BEA 的實(shí)現(xiàn)中,數(shù)據(jù)被返回為Service Data Objects (SDO),它基于BEA 和 IBM 的聯(lián)合規(guī)范(JSR 235)。BEA 的 SDO 實(shí)現(xiàn)是XMLBeans的一個擴(kuò)展。
SDO 是一種編程模型,支持?jǐn)嚅_連接的應(yīng)用程序編程架構(gòu),該架構(gòu)使用數(shù)據(jù)圖來表示持久存儲的數(shù)據(jù)。SDO 封裝由數(shù)據(jù)對象組成的樹型結(jié)構(gòu)的數(shù)據(jù)圖。可以把數(shù)據(jù)圖看成是那些可從數(shù)據(jù)源斷開連接的值對象的集合,當(dāng)重新建立連接時,在介體的幫助下,所做的任何更改都可以被持久存儲。這些斷開連接的數(shù)據(jù)集使得本地更新成為可能。請參考“參考資料”一節(jié),獲得關(guān)于該技術(shù)的更多信息。
結(jié)束語
未來的開發(fā)工作將集中于數(shù)據(jù)集成,因此EII 工具的重要性在不斷提升。本文探討了基于數(shù)據(jù)服務(wù)層的解決方案,以及XQuery 在解決業(yè)務(wù)數(shù)據(jù)集成問題時的作用。我們還說明了這樣的解決方案提供的抽象級別如何使得不同的數(shù)據(jù)源對終端用戶是透明的,從而使得組合附加服務(wù)變得非常簡單。
參考文獻(xiàn)
原文出處
http://dev2dev.bea.com/pub/a/2005/06/data_integration.html
作者簡介 | |
![]() Manu Madhusudhanan R | Manu Madhusudhanan R 是BEA公司Liquid Data團(tuán)隊的成員。他的專長包括設(shè)計和分析企業(yè)應(yīng)用程序。他感興趣的領(lǐng)域包括設(shè)計模式、網(wǎng)格計算和敏捷技術(shù)。 |