文章来源:http://blog.csdn.net/calvinxiu/archive/2007/10/18/1830332.aspx
Tags: J2EEJ2EE | 数据服务数据服务
2007-11-25 9:33:08 | 编辑
数据服务笔记
1.Overview
数据服务是专门化的Web服务,实际上占了Web服务很大的一部分。
但数据服务与业务服务的界限通常并不清晰;接口粒度为特定的数据类型,频繁改动;基础设施的重复建设。
所以,有了专门的数据总线。
数据总线与服务总线是SOA下的两大总线,概念上基本能一一对应,都是提供集中、星型的数据访问服务。同样要注意企业内部的总线模式与企业内外的网关模式之间的变异。
2.数据的基本服务接口
通过元数据定义,将一个或多个数据表组合为信息视图,暴露为服务,提供CRUD接口和更新通知机制。
1.操作接口:
除了最传统的WebService接口外
- REST,轻量级面向资源接口,数据服务似乎是REST最贴切的用武之地--层次式URL定位对象,CRUD操作的HTTP原语。
- JSON/POX(Plain Old XML),尽量简化的数据传输。
- RSS/ATOM Feed,轻量级的信息发布订阅格式。
- IBM/BEA的SDO规范,虽然看上去很美,但由于数据传输的跨平台要求,没有MS的加入等于白搭。
2.查询语言:
- 直接的SQL语言。
- 自设计的面向对象的查询语言,JPA的JQL、Salesforce的SOQL、Facebook的FQL等,能更好的表达信息视图中的对象嵌套关系,如post.comments。
- Google Base的简单按属性匹配查询。
3.数据更新通知机制:
- SalesForce的带时间窗参数(beginTime,endTime)的服务端查询接口,如id[] getUpdated(objectType,beginTime,endTime)。
优点-最为简单;缺点-实时性低,要达到高实时性时资源损耗严重; - 客户自行实现接收通知的Web Service,供服务端调用。
缺点--对客户要求高,服务端需要自行实现订阅,可靠性保障等消息中间件功能。 - 使用跨平台的消息中间件 ,客户通过MOM的客户端接收消息。进行封装屏蔽底层消息中间件的存在,只向用户提供有限的API。
优点-效率高,且对客户端要求低。缺点-免费又服众的跨平台中间件难觅。
4.粗粒度接口:
REST的"层次式定位"比单纯的"数据类型"更适合复杂的数据环境。无论是最后是采用SOAP还是REST格式,都不应采用RPC风格与强数据类型,以免频繁增加或改动接口。
5.权限规则引擎:
在表级、列级权限控制的基础上,还需要灵活的规则引擎来实现行记录级的权限控制。
3.数据的异构联合视图
在提供基本的分散数据源的集中统一访问点之后, 数据联合模式
,将分散在位置透明的多种数据源(DB,WebService),多个数据表中的数据,联合成一个大的有业务意义的信息视图,支持其即时联合查询与有限的更新能力。
Web Service继DB、XML文件之后,正式成为一种数据源具有极大的SOA意义。
4.数据的拉取整合同步
数据整合模式
,支持连接于数据总线上的数据服务进行纵向的整合。
比如,当多个自治的独立异构数据源(地域分公司,并购企业)中,都存在核心的业务实体--主数据(如客户,订单),可进行叠加转换后,提供统一的只读数据集。
因为各异构数据源主数据的不一致性,所以存在有数据抽取转换的过程。
整合的方式有两种,一种是各数据源主动调用总数据集的基本服务接口进行发布。而另一种模式则是数据总线主动对各数据源进行拉取。
5.Google Base
Google Base
是Google的公共数据库服务,大家可以使用公共对象类型或者设定自己的类型,然后使用GData API
对自己存放在GBase里的数据进行增删改查操作。
GData
系列API,可以将Google的各项数据通过RSS/ATOM扩展的数据查询读取(可按属性查询),或通过REST版的Atom Publish Protocol进行增删改。
看看GBase的Demo页面
,一个很REST的简单方案,另外也有Java/C#版的稍嫌冗繁的API。Google中的各项数据,如日志,邮件等,也基于GData协议提供了专有的封装API。
除RSS/ATOM格式外,可以通过URL的参数设置返回JSON格式。
6.参考资料
- SOA中的数据,第1部分:将数据转换成信息(dev2dev)
- 信息服务模式,第1部分:数据联合模式
,第 2 部分: 数据整合模式
,第 3 部分:数据清理模式
(IBM DW) - Incorporating Enterprise Data into SOA(InfoQ)
- BEA的AquaLogic Data Services Platform
, 支持基本服务接口,输出Web Service,EJB,SDO等操作接口,偏重于基于XQuery的异构数据横向联合查询。 - JBoss MetraMatrix
( 深入JBoss MetaMatrix
) ,类似BEA,JBoss收购后还没发布。 - IBM的同类产品,待研究。
- Apatar
,待研究。 - SymmetricDS
,开源数据库同步方案,使用REST传输数据(介绍)
。 - Apache Abdera
ATOM/APP协议的实现 (ROME
希望在2.0中将其整合-- Abdera项目简介(IBM DW)
)