1.Overview
數據服務是專門化的Web服務,在Web服務占了很大的地盤。 因此,有企業服務總線(ESB),也會有數據總線,兩者是SOA下的兩大總線,概念與功能上基本能一一對應,都是提供集中、星型的訪問服務。 數據vs信息。數據一般指單體的表,而信息指有業務含義的多個數據表的組合。數據服務的主體一般是"信息"。
2.數據的基本服務接口
通過元數據定義,在一個或多個數據源中,將一個或多個數據表組合為信息視圖,暴露為服務,提供CRUD接口和更新通知機制。
除了讓數據總線直接訪問數據庫外,數據源還可能是業務系統的WebService/EJB等接口,這一點上極具SOA的意義,業務系統下的數據庫極有可能在物理上或邏輯上不允許總線對其直接訪問和更新。 1.CRUDSI操作接口 :
對信息暴露標準的Create,Update,Delete,Retrive,Search與Information接口。 除了最傳統的WebService接口外,還可能有下面的傳輸協議與數據格式:
- REST,輕量級面向資源接口,數據服務似乎是REST最貼切的用武之地--層次式URL定位對象,CRUD操作的HTTP原語。
- JSON/POX(Plain Old XML),盡量簡化的數據傳輸。
- RSS/ATOM Feed,輕量級的信息發布訂閱格式。
- IBM/BEA的SDO規范,雖然看上去很美,但由于數據傳輸的跨平臺要求,沒有MS的加入等于白搭。
- 虛擬JDBC Driver,支持ADO.net的WebService,盡量減少舊系統改造的成本。
2.查詢語言 :
- 直接的SQL92語言。
- 針對XML結果集的XQuery。
- 自設計的面向對象的查詢語言,JPA的JQL、Salesforce的SOQL、Facebook的FQL等,能更好的表達信息視圖中的對象嵌套關系,如post.comments。
- Google Base的簡單按屬性匹配查詢--Fillter模式。
3.數據更新通知機制 :
-
SalesForce的帶時間窗參數(beginTime,endTime)的服務端查詢接口,如id[] getUpdated(objectType,beginTime,endTime)。 優點-
最為簡單;缺點-實時性低,要達到高實時性時資源損耗嚴重; - 客戶自行實現接收通知的Web Service,供服務端調用。 缺點--客戶需要實現Web Service Server,而服務端需要自行實現訂閱,可靠性保障等消息中間件功能。
-
使用
跨平臺的消息中間件
?,客戶通過MOM的客戶端接收消息。而且封裝屏蔽底層消息中間件的存在,只向用戶提供有限的API。 優點-
效率高,且對客戶端要求低。缺點-免費又服眾的跨平臺中間件難覓。
4.接口粒度 :
可以每個業務實體一個接口,下屬SCURDI操作;也可以使用同一個操作接口,如使用REST定位實際對象類型。
REST的"層次式定位"比單純的"數據類型"更適合復雜的數據環境。
無論是最后是采用SOAP還是REST格式,采用RPC風格與強數據類型都會頻繁增加或改動接口。
5.權限規則引擎 :
在表級、列級權限控制的基礎上,還需要靈活的規則引擎來實現可定義的行記錄級的權限控制。
6.業務級封裝
在規范數據接口之上,可以封裝可重用的業務級接口。
3.數據的分散式部署
在上面的基本服務提供了基本的分散數據源的集中統一訪問點(但不支持整合)之后,還可以:
- 分布式實時聯合視圖
數據聯合模式 ,將分散在位置透明的多種數據源(DB,WebService),多個數據表中的數據,聯合成一個更大的有業務意義的信息視圖,支持其即時聯合查詢與有限的更新能力。
- 將數據最終整合存放
數據整合模式 ?,支持連接于數據總線上的數據服務進行縱向的整合。
比如,當多個自治的獨立異構數據源(地域分公司,并購企業)中,都存在核心的業務實體--主數據(如客戶,訂單),可進行疊加轉換后,提供統一的只讀數據集。
整合的方式有兩種,一種是各數據源主動調用總數據集的基本服務接口進行發布。而另一種模式則是數據總線主動對各數據源進行拉取。
4.其他更強悍的需求
- 全文索引:支持相關性排序、模糊搜索,或者多個關鍵字搜索的搜索。
- 數據分析:支持數據挖掘,儀表板報告等。
- ETL。
5. 輕量級的數據服務
- ATOM/APP,GData ? ATOM/APP協議與Google,Microsoft的擴展實現。
- FaceBook的Data Store API Beta版
- snaplogic ? RESTful的python 數據整合框架,支持db,webservice的整合。
6. 其他實現項目
6.1 BEA Data Service Platform
- AquaLogic Data Services Platform
- SOA中的數據,第1部分:將數據轉換成信息(dev2dev)
- 邏輯數據服務 - "SCRUDI"設計模式(dev2dev)
- 使用數據服務進行數據集成(dev2dev)
支持基本服務接口,輸出Web Service,SDO,JDBC(只讀)等操作接口,偏重于基于XQuery的異構數據橫向聯合查詢。
6.2 其他
- JBoss DNA ?( 深入JBoss MetaMatrix ?) ,類似BEA,JBoss收購后還沒發布。
7. 其他參考資料
- 信息服務模式,第1部分:數據聯合模式 ?, 第 2 部分: 數據整合模式 ?, 第 3 部分:數據清理模式 ?(IBM DW)
- 在SOA中整合企業數據(InfoQ)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
