| 時(shí)間:2005-09-21 作者:Manu Madhusudhanan R 瀏覽次數: 2683 本文關(guān)鍵字:數據服務(wù), sdo, 集成, XML, AquaLogic Data Services Platform, XQuery |
|

摘要
各種分布的信息源為負責通過(guò)集成和聚集這些源的數據而創(chuàng )建和維護應用程序的架構師們帶來(lái)了許多挑戰。過(guò)去,開(kāi)發(fā)人員必須用每種不同數據源可用的API 編寫(xiě)自定義的代碼。這樣既增加了成本又不穩定,改變時(shí)需要修改自定義代碼。
所有應用程序架構師和數據專(zhuān)家面臨的挑戰是,在確保為集成、聚集和轉換數據所做的工作的可復用性的同時(shí),容易地向應用程序傳遞數據。企業(yè)信息集成(Enterprise Information Integration,EII)解決方案解決了這個(gè)問(wèn)題。這些解決方案一般提供一個(gè)數據服務(wù)層 (Data Service Layer),用于從根本上簡(jiǎn)化分布數據的訪(fǎng)問(wèn)和集成。
本文探討了一個(gè)基于數據服務(wù)層的解決方案,以及XQuery 在解決業(yè)務(wù)數據集成問(wèn)題時(shí)的作用。同時(shí)說(shuō)明了這類(lèi)解決方案提供的抽象級別如何使得不同的數據源對終端用戶(hù)是透明的,從而很容易組合附加服務(wù)。
面向服務(wù)架構的方式
面向服務(wù)架構(Service Oriented Architecture,SOA)的風(fēng)靡并非毫無(wú)根據,而是應需而生。SOA 也能應用于數據集成領(lǐng)域。數據服務(wù)層充當抽象層,它與底層資源通信,并從應用程序去除數據位置、類(lèi)型和管理,留下虛擬數據源。對應用程序開(kāi)發(fā)人員而言,虛擬數據源意味著(zhù)集中于手邊的數據問(wèn)題,無(wú)需重寫(xiě)訪(fǎng)問(wèn)不同數據的管道。SOA 的推動(dòng)力之一是一個(gè)松散藕合的系統:數據分層在數據領(lǐng)域提供這一系統。
此外,數據服務(wù)(將在稍后解釋?zhuān)┨峁┮恍┯脩?hù)可能感興趣的公共函數,可把用戶(hù)從底層細節中解脫出來(lái)。
當設計一個(gè)數據訪(fǎng)問(wèn)層基礎架構時(shí),需要解決許多因素以提供一個(gè)有效且可伸縮的解決方案。以下是最為重要的幾個(gè)因素:
本文接下來(lái)將探討這些想法將如何應用于數據服務(wù)層。
數據服務(wù)層
數據服務(wù)層有助于形成一個(gè)統一的數據編目。有了“數據編目”后,根據應用程序的需要,它可以被邏輯分段,每一段表示為一個(gè)可被標準API 訪(fǎng)問(wèn)的“數據服務(wù)”。數據編目因此成為一個(gè)很容易被其他開(kāi)發(fā)人員和應用程序重用的接口?;跀祿?wù)層的解決方案的架構如圖1 所示。
具有一個(gè)編目會(huì )有很多優(yōu)點(diǎn):

數據服務(wù)層封裝了應用程序的業(yè)務(wù)邏輯。因而數據服務(wù)是一個(gè)自包含的模塊,其中每個(gè)數據服務(wù)被認為是一個(gè)根據 E-R 圖中的實(shí)體建模的基于XML 的類(lèi)。這些實(shí)體通過(guò)函數相關(guān)聯(lián)。
為使數據服務(wù)是自包含的,最理想的情況下它們應包含以下信息:
因此,數據服務(wù)充當底層數據基礎架構的邏輯接口;它可以稱(chēng)為虛擬視圖。數據服務(wù)包含了足夠的信息量,以便為客戶(hù)應用程序查找、執行和轉換有用格式的信息。
盡管我們定義了數據服務(wù)基礎架構的需求,但是還得實(shí)現它,實(shí)現時(shí)要考慮前面提到過(guò)的設計因素。一個(gè)新興的設計模式使用XQuery來(lái)提供不同數據源的統一視圖。
XQuery 是一種強大的語(yǔ)言,受到行業(yè)龍頭們如IBM、BEA 和 Oracle 的支持。這是一個(gè)富有表現力的語(yǔ)言,它語(yǔ)法通俗簡(jiǎn)單,并與XML 數據結構有機地結合在一起。數據服務(wù)可以利用XQuery 的內在能力處理關(guān)系數據庫和非關(guān)系數據庫。因此,使用XQuery 可以實(shí)現數據服務(wù)中提供的接口函數。優(yōu)秀的XQuery 引擎和工具的可用性使得 XQuery 成為不同數據源的集成語(yǔ)言的自然選擇。XQuery 引擎提供數據集成的核心。
由于XML 數據能被其他應用程序普遍讀取,或者能被XMLBeans 或其他技術(shù)轉換為Java 對象,所以客戶(hù)能夠使用行業(yè)標準訪(fǎng)問(wèn)信息。所以它在現代企業(yè)需求中是一個(gè)很受歡迎的解決方案。
Aqualogic數據服務(wù)平臺
BEA 的 AquaLogic 數據服務(wù)平臺就是這種方法。該平臺為底層數據源提供一個(gè)抽象的數據服務(wù)層。這里利用了XQuery 的強大功能。BEA 使用XQuery 來(lái)實(shí)現數據服務(wù)中提供的接口函數,可以是讀或關(guān)系函數。關(guān)系函數用于建立與其他數據服務(wù)的關(guān)系。例如,通過(guò)getItems() 函數可以使一個(gè) Orders 數據服務(wù)與 Line Items 數據服務(wù)相關(guān)聯(lián)。此外,數據服務(wù)還可以使用 XPath 與其他數據服務(wù)進(jìn)行通信,極大地增加了集成的范圍。
假設您具有一個(gè)與Oracle 數據庫通信的Customer 數據服務(wù)和一個(gè)與Web service 通信的PurchaseOrder 數據服務(wù)。Customer 數據服務(wù)將會(huì )提供諸如getCustomerByID()或getCustomers() 這樣的函數,而 PurchaseOrder 數據服務(wù)將有諸如getPOStatus() 這樣的函數。我們可以使用第三個(gè)數據服務(wù) —— CustomerSummary,它與Customer 和 PurchaseOrder 數據服務(wù)通信以提供集成信息。
圖2 是數據服務(wù)的抽象示意圖。這里,函數的返回類(lèi)型由模式建模。這里使用pragma來(lái)表示元數據信息,可能包括數據源的連接信息。XQuery 在讀取數據時(shí)將會(huì )用到連接信息。圖中顯示了XQuery 如何用于實(shí)現這些函數。即使您對XQuery 不熟悉,也應該能夠通過(guò)閱讀函數實(shí)現的代碼而理解函數的實(shí)現。這就是XQuery 的力量。您可以看到如何通過(guò)從一個(gè)數據服務(wù)引用另一個(gè)數據服務(wù)而建立關(guān)系。

XQuery 可以將抽取的數據返回為XML,但這將增加程序員的負擔,因為XML 可能并非以一種有用的形式存在于用戶(hù)的界面上。在BEA 的實(shí)現中,數據被返回為Service Data Objects (SDO),它基于BEA 和 IBM 的聯(lián)合規范(JSR 235)。BEA 的 SDO 實(shí)現是XMLBeans的一個(gè)擴展。
SDO 是一種編程模型,支持斷開(kāi)連接的應用程序編程架構,該架構使用數據圖來(lái)表示持久存儲的數據。SDO 封裝由數據對象組成的樹(shù)型結構的數據圖??梢园褦祿D看成是那些可從數據源斷開(kāi)連接的值對象的集合,當重新建立連接時(shí),在介體的幫助下,所做的任何更改都可以被持久存儲。這些斷開(kāi)連接的數據集使得本地更新成為可能。請參考“參考資料”一節,獲得關(guān)于該技術(shù)的更多信息。
結束語(yǔ)
未來(lái)的開(kāi)發(fā)工作將集中于數據集成,因此EII 工具的重要性在不斷提升。本文探討了基于數據服務(wù)層的解決方案,以及XQuery 在解決業(yè)務(wù)數據集成問(wèn)題時(shí)的作用。我們還說(shuō)明了這樣的解決方案提供的抽象級別如何使得不同的數據源對終端用戶(hù)是透明的,從而使得組合附加服務(wù)變得非常簡(jiǎn)單。
參考文獻
原文出處
http://dev2dev.bea.com/pub/a/2005/06/data_integration.html

| 作者簡(jiǎn)介 | |
![]() Manu Madhusudhanan R | Manu Madhusudhanan R 是BEA公司Liquid Data團隊的成員。他的專(zhuān)長(cháng)包括設計和分析企業(yè)應用程序。他感興趣的領(lǐng)域包括設計模式、網(wǎng)格計算和敏捷技術(shù)。 |
聯(lián)系客服