
| 時(shí)間:2007-08-07 作者:Richard Manning 瀏覽次數: 331 本文關(guān)鍵字:Data Services, Aqualogic Data Services, AquaLogic Data Services Platform, Richard Manning, 數據服務(wù), 數據平臺, 數據集成, aqualogic數據服務(wù), 數據層 |
|

數據和數據管理是幾乎所有企業(yè)軟件解決方案的關(guān)鍵因素。SOA也不例外。有效的數據建模和管理是成功實(shí)現SOA的基礎。要將數據提高一個(gè)層次,需要把數據轉換成信息;要將信息提高一個(gè)層次,需要把信息轉換成知識。
本文是關(guān)于“SOA中的數據:將數據轉換成知識”的兩篇系列文章的第一篇。本文通過(guò)SOA參考架構(SOA RA)的定義介紹了在SOA中從數據到信息的轉換方法,它構成了完整SOA轉換方案的一部分,并且還講述了一個(gè)企業(yè)SOA的實(shí)現。這個(gè)系列的第二部分描述了在SOA中從信息到知識的轉換方法,這是對完整SOA轉換方案的一個(gè)擴展,并且還描述了一個(gè)企業(yè)SOA RA的很有價(jià)值的擴充。
數據是普遍存在的(data是復數;datum是單數,盡管“data”能夠同時(shí)使用單數和復數)。大部分 IT工作的核心就是收集、分發(fā)和管理數據,并且當需要數據的時(shí)候、在需要數據的地方、以要求的方式為需要數據的人(擁有正確的權限)提供數據。有些人可能會(huì )想起在IT(“信息技術(shù)”)這一術(shù)語(yǔ)出現之前,多數的企業(yè)把他們的“計算機部門(mén)”及其工作稱(chēng)為DP或“數據處理”。
在過(guò)去、現在和可預見(jiàn)的將來(lái),數據是所有技術(shù)浪潮中一個(gè)不變的常量。同樣的數據,過(guò)去由(很可能仍然是)大型機處理,現在也很可能已經(jīng)由一個(gè)或多個(gè)的客戶(hù)機-服務(wù)器、CORBA/DCOM、 Java EE、.NET、 Web services、SOA和Web 2.0來(lái)完成。隨著(zhù)時(shí)間的流逝,數據的存儲、格式和傳輸可能已經(jīng)改變,數據的處理方式可能已經(jīng)改變,但是“數據”依然保留(而且還在增加)。其實(shí),所有工業(yè)技術(shù)浪潮有著(zhù)一個(gè)相同點(diǎn):它們都是新的或者改良的數據處理方法。數據就是基礎。如果您您也認為數據是企業(yè)解決方案的基礎,則由此得出結論:數據(以及數據建模/管理)也是SOA(與Web 2.0)的企業(yè)架構需要優(yōu)先考慮的事情。
讓我們先看一下字典中“數據”的定義,然后對其進(jìn)行補充。就本文而言,數據是基本的、最小的,或者擁有一些結構、關(guān)系和狀態(tài)的“信息”片斷的底層集合,但不包括行為。例如,一個(gè)包含街道地址、城市等數據列的地址表是數據。就像一個(gè)用戶(hù)表中的地址定義。數據是結構和狀態(tài),但沒(méi)有行為。數據是構成信息的原始的構建材料。數據是信息的前提。
讓我們再看一下信息的定義,然后對其進(jìn)行補充。就本文而言,信息是數據的集合,是提供附加的形式、基本關(guān)系、語(yǔ)法和語(yǔ)義上下文的基本邏輯——也就是說(shuō),它是狀態(tài)和核心模型行為。例如,確保ZIP碼有效并與城市一致。信息是數據的擴展,它向和域(語(yǔ)法和語(yǔ)義)上下文一致的行為模型提供映射或關(guān)聯(lián)數據、定義邏輯的能力。信息基于數據,需要數據。換句話(huà)說(shuō),信息表示封裝了狀態(tài)(數據)和行為(邏輯)的實(shí)體(主體,對象)??梢哉J為信息類(lèi)似于面向對象編程中的模型類(lèi)的實(shí)例,這個(gè)實(shí)例包含用于保持狀態(tài)的數據成員(實(shí)例變量)和提供(模型)行為的方法。
各種組織對于定義和細化自身SOA參考架構(SOA RA)有著(zhù)不同的動(dòng)機、出發(fā)點(diǎn)和優(yōu)先次序,向SOA轉換時(shí)可能會(huì )發(fā)生變化。規劃設計SOA RA的完整方法應該包括數據服務(wù)(data services)層。本文采用數據服務(wù)層這一術(shù)語(yǔ)包含數據和信息訪(fǎng)問(wèn)服務(wù)。
如果在SOA RA中沒(méi)有企業(yè)數據服務(wù)層,則其后的業(yè)務(wù)項目將被迫開(kāi)發(fā)成特定于每一個(gè)應用程序的專(zhuān)用“點(diǎn)”或者一次性解決方案。幾乎沒(méi)有通用性,幾乎沒(méi)有共享的服務(wù)定義、重用和一致性,規范的數據模型的定義也會(huì )變得難懂。如果認識到SOA的優(yōu)點(diǎn),則會(huì )逐漸認識到它的眾多優(yōu)勢。我們很可能都看到過(guò)這樣的統計信息:企業(yè)應用程序軟件開(kāi)發(fā)的50%到80%的項目資源消耗在數據集成任務(wù)上。這一“事實(shí)”應該足以確定在任何SOA實(shí)現中數據服務(wù)層是必不可少的一部分。企業(yè)軟件解決方案的主要設計目標是數據處理,結合這一概念, SOA 中數據的價(jià)值應該非常明顯。
圖1展示了BEA的SOA參考架構較高層次上的概念,它說(shuō)明了位于上面的幾個(gè)層。注意,數據服務(wù)層位于第一個(gè)區域,這表明它在SOA RA中的重要性。

圖1:SOA參考架構的層次
數據、數據模型和數據管理是SOA成功的基礎。實(shí)際上,BEA對數據服務(wù)如此高度地重視,以至于我們不僅提供 AquaLogic Data Services Platform 產(chǎn)品,還把數據服務(wù)當作許多 BEA Consulting 服務(wù)產(chǎn)品的基礎,其中包括一個(gè)Data Services Consulting Service,該服務(wù)著(zhù)重于SOA數據和信息層的規劃、設計和開(kāi)發(fā)。
訪(fǎng)問(wèn)數據資源的數據訪(fǎng)問(wèn)服務(wù)通常被總稱(chēng)為企業(yè)信息系統(EIS),也叫數據庫和文件系統。它們可以是遺留系統、記錄系統,包裝好的商業(yè)應用程序、用戶(hù)、伙伴、第三方應用程序和服務(wù),以及Web services。它們的共同之處是向其他應用程序提供數據和/或信息(在本文中的意思是行為)。因此,這些應用程序在通過(guò)數據訪(fǎng)問(wèn)層被訪(fǎng)問(wèn)時(shí)就是數據的另一種形式或另一個(gè)數據源。在一個(gè)更高的抽象層上,數據服務(wù)與消費應用程序看上去一樣,這是SOA RA的數據服務(wù)層的主要目標(標準化/一致性)之一。公開(kāi)的接口與一個(gè)或多個(gè)數據庫、表、后臺、遺留系統、快速收縮的系統和/或外部系統交互,這是數據服務(wù)層封裝的一個(gè)實(shí)現細節。
連通性服務(wù)以基于標準的方式將應用程序和數據庫公開(kāi)為應用程序服務(wù)。
假設您的組織正計劃向 SOA轉換。 SOA RA的所有層和所有方面(見(jiàn)圖1)的研究和規劃已經(jīng)開(kāi)始,您的任務(wù)是數據服務(wù)層的實(shí)現?,F在該怎么辦?想想下面的幾個(gè)步驟:
圖2是SOA RA數據服務(wù)的一組可能的內部抽象層示例,這里將采用我們的9個(gè)步驟來(lái)映射這些需求和性能。

圖2:數據服務(wù)層——內部層抽象
基于現在和將來(lái)的需要,您可以為一組不同的抽象層定義需求。至少,您應該分離物理層和邏輯層,并相應地分配規則類(lèi)型。
現在,讓我們更具體地看一下每一個(gè)步驟。
1)盤(pán)點(diǎn)現有的數據和系統訪(fǎng)問(wèn)資源
第一步是確定數據內容,即您您當前的數據和信息系統訪(fǎng)問(wèn)資源。您您的組織擁有哪些數據和信息資源(本文后面,簡(jiǎn)稱(chēng)為“資源”)?例如,數據庫、信息資源和應用程序(指遺留系統、記錄系統)。對于每一個(gè)資源,您需要了解支撐元數據,如文檔、歷史、技術(shù)/工具/產(chǎn)品/平臺、版本、所有權/管理部門(mén)、位置、安全性和訪(fǎng)問(wèn)機制。根據資源及其元數據的數量,您可能想考慮某些元數據目錄或者儲存庫,也可能是一個(gè)或一組標準模板,能夠以一致的方式獲取元信息并允許進(jìn)行檢索。
2)確定依賴(lài)關(guān)系矩陣
一旦您已經(jīng)開(kāi)始創(chuàng )建資源目錄,第二步就是確定依賴(lài)關(guān)系矩陣。依賴(lài)關(guān)系矩陣也是資源元信息的一部分,它獲取關(guān)于資源的使用者、使用時(shí)間、使用頻率、使用目的(例如,CRUD)和使用地點(diǎn)(即,訪(fǎng)問(wèn)類(lèi)型——成批的、在線(xiàn)的、實(shí)時(shí)的或報告式的)的信息。了解用戶(hù)為何使用某個(gè)特殊的資源也是很重要的,這將有助于任務(wù)優(yōu)化,而且為新的數據模型提出要求。
一旦您得到了使用某個(gè)資源的每個(gè)已知用戶(hù)的情況——“使用者、使用內容、使用地點(diǎn)、使用時(shí)間、如何使用以及為什么使用”,您就可以開(kāi)始分析和形成所有資源用戶(hù)的概括。這樣做的目的是要找到在現有資源向SOA構建塊轉換的過(guò)程中進(jìn)行簡(jiǎn)化和重用的可能。它們包括,但不限于,那些面向服務(wù)的、自描述的和可發(fā)現的資源,這些資源能夠便捷地應用于采用開(kāi)放的、公共的、行業(yè)和/或企業(yè)標準的SOA生態(tài)系統。
在這組SOA構建塊中包含的一個(gè)定義是您的服務(wù)定義。要使用什么樣的標準、規格和版本呢?例如,可能會(huì )要求 WSDL、SOAP、UDDI、WS-Security、WS-I Basic Profile、WS-Addressing、XML和XSD之中的某一個(gè)的特定版本,而其它的則可以是可選項/推薦項。數據和信息訪(fǎng)問(wèn)資源很可能會(huì )采用與基本SOA構建塊定義(即服務(wù))一致的格式。(使用您喜歡的搜索引擎搜索“Service Identification”和“Service Definition”這兩個(gè)主題可以找到這方面的內容。)
建立基線(xiàn)度量/SLA
由于每個(gè)編目好的資源已經(jīng)以某種方式存在,所以應該具有預測的或者實(shí)際的產(chǎn)品使用統計信息,包括事務(wù)規模、模式、并發(fā)用戶(hù)、可靠性、可用性、可伸縮性和性能(RASP)等方面的信息。
使用信息也很好地表明了業(yè)務(wù)和IT的價(jià)值和優(yōu)先權。這個(gè)基線(xiàn)信息用來(lái)定義一組度量,這組度量將構成服務(wù)級別協(xié)議(SLA)并允許目標定義和歷史跟蹤。為了支持 SOA的數據服務(wù)層,要規劃軟硬件的大小和容量,在這一過(guò)程中,度量和當前產(chǎn)品信息的價(jià)值是無(wú)法估量的。確定您的SLA是雙向的,即服務(wù)提供者針對每個(gè)用戶(hù)定義SLA術(shù)語(yǔ)、條件和處罰;用戶(hù)應該遵守這個(gè)協(xié)議。
例如,一個(gè)協(xié)議聲明用戶(hù)A每天(這里指一天24小時(shí),從午夜GMT12:00開(kāi)始計算)可以在DataServiceXYZ(資源/服務(wù)的提供者)上執行最多100個(gè)get()請求,而每個(gè)請求的響應時(shí)間將≤2秒。如果用戶(hù)A發(fā)出了超過(guò)協(xié)議規定的最大數量的get()請求,那么服務(wù)提供者能夠根據協(xié)議規定對其處罰。對服務(wù)提供者也有相應的要求。如果用戶(hù)A的請求數量不大于規定的最大值,則服務(wù)提供者必須提供≤2秒的響應時(shí)間,否則就要面對協(xié)議規定的相應的處罰。
度量和SLA定義約定的要求和規則,這些要求和規則影響每個(gè)資源的價(jià)值、目標和規模的基礎。跟蹤并重用您的基線(xiàn)度量、SLA,建立一個(gè)成本和效益模型。
有了上述的一定程度的一組已獲取信息,應該可以在所有其它的編目好的資源上下文中開(kāi)始評價(jià)每個(gè)資源——即,指定每個(gè)資源的優(yōu)先權。一個(gè)好的策略是擁有最少3個(gè)、最多10個(gè)優(yōu)先權級別(過(guò)多了);小于3個(gè)不夠,多于10個(gè)難于管理。
優(yōu)先權分配的目的是幫助識別在應用上最重要的資源和所支持的業(yè)務(wù)功能的價(jià)值。您應該設計一組度量(包括第三步中的那些)和定義來(lái)根據經(jīng)驗比較和評價(jià)每個(gè)資源,以確定其優(yōu)先級。分配資源優(yōu)先級將有助于確定項目的合理起點(diǎn)、潛在的∵業(yè)務(wù)/IT贊助和相關(guān)的業(yè)務(wù)價(jià)值。
當這些資源向SOA構建塊轉換時(shí),使用上述的所有信息能夠建立、記錄和跟蹤每個(gè)資源的“當前使用”快照。對于剩下的幾個(gè)步驟,應該在所有編目好的資源中選擇那些被指定為最高優(yōu)先級的資源。實(shí)際數量的選擇要根據您的風(fēng)險評估、優(yōu)先權評價(jià)、業(yè)務(wù)/IT目標、資源以及其它類(lèi)似的因素來(lái)進(jìn)行。
5)數據建模
從第一個(gè)選定的資源開(kāi)始(我建議您首先端到端地制作一個(gè)資源,也許不是最高優(yōu)先級的那個(gè),這允許您使用控制度更高并且便于管理的方式實(shí)現數據管理和數據服務(wù)層的SDLC過(guò)程),對現有的物理方面進(jìn)行檢查。對于數據庫或者一組表,考慮來(lái)自用戶(hù)的各種查詢(xún)、數據庫的邏輯存儲過(guò)程及其觸發(fā)器、各種具有副作用的操作。這構成了物理數據資源定義和描述。對于信息訪(fǎng)問(wèn),要使用什么呢?MOM、第三方適配器、專(zhuān)有的集成或者點(diǎn)對點(diǎn)的定制集成?這構成了物理信息資源定義和描述。
由于數據服務(wù)層是完整的SOA參考架構的一部分,所以應該規定SOA構建塊的定義和要求。您的資源的當前狀態(tài)與SOA RA構建塊的目標狀態(tài)之間很可能存在差距。業(yè)務(wù)的第一步是引導當前的物理狀態(tài)盡可能地接近您的SOA構建塊目標狀態(tài)標準。您可能會(huì )想起前面討論的關(guān)于SOA參考架構中“服務(wù)”的定義和描述。為簡(jiǎn)單起見(jiàn),假設您的服務(wù)定義要求包含WSDL、SOAP和用XSD定義的文檔樣式。其它推薦的規范包括 WS-Addressing和XQuery/XPath。有了這個(gè)定義,我們需要考慮怎樣把關(guān)系數據庫、XML數據和/或信息訪(fǎng)問(wèn)系統中的表轉換或者映射到一組滿(mǎn)足構建塊服務(wù)定義準則的服務(wù)上。
有許多不同的工具和技術(shù)可以映射現有的數據和信息訪(fǎng)問(wèn)資源到圖2所示的物理數據層,定義與您的特殊要求和服務(wù)定義一致的邏輯服務(wù)模型。BEA的 AquaLogic Data Services Platform(ALDSP)是我們的從數據/信息訪(fǎng)問(wèn)資源向SOA構建塊(數據服務(wù))轉換的實(shí)現技術(shù),它為您的SOA參考架構提供了基于標準的、面向服務(wù)的數據服務(wù)層。
一旦您導入了您的物理資源(不考慮它們的接口和實(shí)現),您就有了物理的數據服務(wù)層(參見(jiàn)圖2)。物理的數據服務(wù)層中的服務(wù)有著(zhù)一致的外觀(guān)和表示——即底層的實(shí)現細節和通信協(xié)議被抽象化和封裝,并且從視圖中移除(必要時(shí),您仍然可以訪(fǎng)問(wèn)底層),只提供了資源定義(服務(wù)定義)和操作的信息。 既然您有了自己的“數據”,下面該定義您的邏輯模型。
6)邏輯建模
邏輯建模的目標是抽象、集成、規范和管理一個(gè)或多個(gè)物理數據服務(wù)的集合,可以將這些操作抽象到兩個(gè)層上:邏輯數據標準化層和邏輯數據集成層,如圖2所示,它們也有一組可用的規則:管理規則、數據規則、集成規則和業(yè)務(wù)規則。
在進(jìn)一步討論之前,需要注意: ALDSP允許支持您的邏輯抽象設計要求所需的任何邏輯層。這些邏輯層只是面向設計時(shí)的,其作用是允許設計和開(kāi)發(fā)人員有效地分離和分層邏輯模型和內容。這些邏輯層不是運行時(shí)部署的一部分——也就是說(shuō),即使設計時(shí)可以有若干邏輯層,但它們并沒(méi)有對應于運行時(shí)的一組間接層。通過(guò)平展和優(yōu)化,它們成為一個(gè)運行時(shí)層。開(kāi)發(fā)和操作人員能夠察看這些運行時(shí)工件和優(yōu)化,并且在認為必要時(shí)進(jìn)行調整。
您可以規定一組不同的準則和因素作為邏輯模型層的基礎,而不是我在這里所使用的。例如,可以有單獨一個(gè)層來(lái)包含所有的邏輯抽象,也可以有若干個(gè)邏輯層。經(jīng)證明,邏輯層太少可能有限制作用并可能隨時(shí)間增加了復雜性。至少,您應該規定一組準則來(lái)確定邏輯抽象層和它們所包含的內容。
例如,您可以有一個(gè)邏輯抽象來(lái)執行標準化,如圖2所示。邏輯數據標準化層允許您“清除”和簡(jiǎn)化任何復雜的或混亂的信息。改變那些您不直接擁有或負責的現有數據庫或者其他系統的物理結構通常也是困難的,或者任何程度的改變都是不可行的。邏輯數據標準化層讓您可以重新構建而不必強制改變物理數據層。(如果您需要關(guān)于“數據標準化”的更多信息,我建議您用“數據標準化”進(jìn)行Web搜索,會(huì )了解到更多的相關(guān)內容和要求。)這個(gè)邏輯層提供一個(gè)模型設計,當更新或退出直接使用這些數據資源的系統時(shí),它可以用作未來(lái)物理數據和信息的模型。邏輯數據服務(wù)的目標是提供一個(gè)高級共享服務(wù)和消費應用程序更加易于使用的、更加易懂的和更加可重用的服務(wù)模型。
第五步和第六步可以顛倒次序。關(guān)鍵是確保邏輯模型不受當前物理資源的過(guò)度約束。換句話(huà)說(shuō),在邏輯模型將要利用物理數據服務(wù)的時(shí)候,不要讓當前那些物理資源的局限性限制它們,或者對您的整個(gè)數據服務(wù)層設計施加過(guò)度的影響。物理資源是起點(diǎn),接著(zhù)是建立更豐富的更多表示形式的模型。
7)信息規則
規則和規則的處理決定了數據是怎樣變成信息的。它們在數據服務(wù)層提供了關(guān)系、語(yǔ)義和行為。如圖2所示,規則分為幾類(lèi):
8)應用程序專(zhuān)門(mén)化
一旦完成了邏輯模型,您就有效地定義了一個(gè)規范的信息模型。這個(gè)模型的定義將完成您的信息模型的初始設計,就意味著(zhù)您已經(jīng)有效地開(kāi)始將數據變成信息。還有最后一步,就是進(jìn)一步改進(jìn)您的信息模型:應用程序規范。
不是所有的消費應用程序將會(huì )直接使用規范的信息模型。應用程序規范為消費應用程序提供一個(gè)抽象層來(lái)定義它們自己的特定于其自身需求的邏輯模型。
應用程序規范封裝了消費應用程序需要的額外的信息模型狀態(tài)和行為,簡(jiǎn)化了消費應用程序對規范的信息模型資源的使用。由于每個(gè)消費應用程序或者一組關(guān)聯(lián)的業(yè)務(wù)應用程序的應用程序規范都是惟一的,所以不需要在規范的信息模型中包括它們。如果應用程序規范包含更大范圍(例如,跨部門(mén)或者跨企業(yè)),那么它應該成為規范的信息模型的一部分。
結束語(yǔ)
為SOA參考架構創(chuàng )建數據服務(wù)層和為組織定義規范的信息模型是困難的,這些任務(wù)實(shí)現起來(lái)都非常困難,而具有挑戰性的任務(wù)又很少能贏(yíng)得什么榮譽(yù):實(shí)現起來(lái)非常困難,很少能夠做到最好。本文所述的方法應該能給您足夠的信息去規劃、評估和開(kāi)始設計數據層的SOA轉換,并將組織的數據變成信息。在實(shí)際當中,SOA參考架構的數據服務(wù)層的規劃、設計和開(kāi)發(fā)依賴(lài)于許多特殊的因素,這些因素特定于您的組織或狀況,它們已經(jīng)超出了本文所討論的范圍。
既然我們已經(jīng)開(kāi)始在SOA系統中把我們的數據變成信息,那么我們可以考慮把這些信息變成知識。本系列的第二篇也是最后一篇文章“SOA中的數據,第二部分:將信息轉換成知識”將介紹這一過(guò)程。

| 作者簡(jiǎn)介 | |
| Richard Scott Manning 是美國南部地區BEA專(zhuān)業(yè)服務(wù)部的企業(yè)級架構負責人。主要關(guān)注的領(lǐng)域有:企業(yè)級架構,SOA,BPM,組織與管理,信息與知識建模,Web 2.0,語(yǔ)義網(wǎng)與人工智能 。 | |
聯(lián)系客服