使用数据服务进行数据集成
![]() 摘要 各种分布的信息源为负责通过集成和聚集这些源的数据而创建和维护应用程序的架构师们带来了许多挑战。过去,开发人员必须用每种不同数据源可用的API 编写自定义的代码。这样既增加了成本又不稳定,改变时需要修改自定义代码。 所有应用程序架构师和数据专家面临的挑战是,在确保为集成、聚集和转换数据所做的工作的可复用性的同时,容易地向应用程序传递数据。企业信息集成(Enterprise Information Integration,EII)解决方案解决了这个问题。这些解决方案一般提供一个数据服务层 (Data Service Layer),用于从根本上简化分布数据的访问和集成。 本文探讨了一个基于数据服务层的解决方案,以及XQuery 在解决业务数据集成问题时的作用。同时说明了这类解决方案提供的抽象级别如何使得不同的数据源对终端用户是透明的,从而很容易组合附加服务。 面向服务架构的方式 面向服务架构(Service Oriented Architecture,SOA)的风靡并非毫无根据,而是应需而生。SOA 也能应用于数据集成领域。数据服务层充当抽象层,它与底层资源通信,并从应用程序去除数据位置、类型和管理,留下虚拟数据源。对应用程序开发人员而言,虚拟数据源意味着集中于手边的数据问题,无需重写访问不同数据的管道。SOA 的推动力之一是一个松散藕合的系统:数据分层在数据领域提供这一系统。 此外,数据服务(将在稍后解释)提供一些用户可能感兴趣的公共函数,可把用户从底层细节中解脱出来。 当设计一个数据访问层基础架构时,需要解决许多因素以提供一个有效且可伸缩的解决方案。以下是最为重要的几个因素:
本文接下来将探讨这些想法将如何应用于数据服务层。 数据服务层 数据服务层有助于形成一个统一的数据编目。有了“数据编目”后,根据应用程序的需要,它可以被逻辑分段,每一段表示为一个可被标准API 访问的“数据服务”。数据编目因此成为一个很容易被其他开发人员和应用程序重用的接口。基于数据服务层的解决方案的架构如图1 所示。 具有一个编目会有很多优点:
数据服务层封装了应用程序的业务逻辑。因而数据服务是一个自包含的模块,其中每个数据服务被认为是一个根据 E-R 图中的实体建模的基于XML 的类。这些实体通过函数相关联。 为使数据服务是自包含的,最理想的情况下它们应包含以下信息:
因此,数据服务充当底层数据基础架构的逻辑接口;它可以称为虚拟视图。数据服务包含了足够的信息量,以便为客户应用程序查找、执行和转换有用格式的信息。 尽管我们定义了数据服务基础架构的需求,但是还得实现它,实现时要考虑前面提到过的设计因素。一个新兴的设计模式使用XQuery来提供不同数据源的统一视图。 XQuery 是一种强大的语言,受到行业龙头们如IBM、BEA 和 Oracle 的支持。这是一个富有表现力的语言,它语法通俗简单,并与XML 数据结构有机地结合在一起。数据服务可以利用XQuery 的内在能力处理关系数据库和非关系数据库。因此,使用XQuery 可以实现数据服务中提供的接口函数。优秀的XQuery 引擎和工具的可用性使得 XQuery 成为不同数据源的集成语言的自然选择。XQuery 引擎提供数据集成的核心。 由于XML 数据能被其他应用程序普遍读取,或者能被XMLBeans 或其他技术转换为Java 对象,所以客户能够使用行业标准访问信息。所以它在现代企业需求中是一个很受欢迎的解决方案。 Aqualogic数据服务平台 BEA 的 AquaLogic 数据服务平台就是这种方法。该平台为底层数据源提供一个抽象的数据服务层。这里利用了XQuery 的强大功能。BEA 使用XQuery 来实现数据服务中提供的接口函数,可以是读或关系函数。关系函数用于建立与其他数据服务的关系。例如,通过getItems() 函数可以使一个 Orders 数据服务与 Line Items 数据服务相关联。此外,数据服务还可以使用 XPath 与其他数据服务进行通信,极大地增加了集成的范围。 假设您具有一个与Oracle 数据库通信的Customer 数据服务和一个与Web service 通信的PurchaseOrder 数据服务。Customer 数据服务将会提供诸如getCustomerByID()或getCustomers() 这样的函数,而 PurchaseOrder 数据服务将有诸如getPOStatus() 这样的函数。我们可以使用第三个数据服务 —— CustomerSummary,它与Customer 和 PurchaseOrder 数据服务通信以提供集成信息。 图2 是数据服务的抽象示意图。这里,函数的返回类型由模式建模。这里使用pragma来表示元数据信息,可能包括数据源的连接信息。XQuery 在读取数据时将会用到连接信息。图中显示了XQuery 如何用于实现这些函数。即使您对XQuery 不熟悉,也应该能够通过阅读函数实现的代码而理解函数的实现。这就是XQuery 的力量。您可以看到如何通过从一个数据服务引用另一个数据服务而建立关系。
XQuery 可以将抽取的数据返回为XML,但这将增加程序员的负担,因为XML 可能并非以一种有用的形式存在于用户的界面上。在BEA 的实现中,数据被返回为Service Data Objects (SDO),它基于BEA 和 IBM 的联合规范(JSR 235)。BEA 的 SDO 实现是XMLBeans的一个扩展。 SDO 是一种编程模型,支持断开连接的应用程序编程架构,该架构使用数据图来表示持久存储的数据。SDO 封装由数据对象组成的树型结构的数据图。可以把数据图看成是那些可从数据源断开连接的值对象的集合,当重新建立连接时,在介体的帮助下,所做的任何更改都可以被持久存储。这些断开连接的数据集使得本地更新成为可能。请参考“参考资料”一节,获得关于该技术的更多信息。 结束语 未来的开发工作将集中于数据集成,因此EII 工具的重要性在不断提升。本文探讨了基于数据服务层的解决方案,以及XQuery 在解决业务数据集成问题时的作用。我们还说明了这样的解决方案提供的抽象级别如何使得不同的数据源对终端用户是透明的,从而使得组合附加服务变得非常简单。 参考文献 原文出处 http://dev2dev./pub/a/2005/06/data_integration.html ![]()
|
|
来自: jianjun0921 > 《SOA》