你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:技术专栏 / 数据库开发
首选数据源模式的深入研究(一)
 
在本文中,作者对首选数据源模式 (Preferred Data Source Pattern) 进行了深入研究,这是一种面向服务的体系结构 (SOA) 模式,它允许客户端从一组信息源检索信息,而无需了解(至少在较高的抽象级别上)多个源的存在……

  价值主张和背景

  首选数据源模式、或者首选源模式,是用于进行服务聚合的一种微流模式。该模式允许客户端从一组信息源检索信息,而无需了解(至少在较高的抽象级别上)多个源的存在。

  考虑下面的情况,其中多个数据源必须作为一个数据源出现:

  某个公司有多个信息源,访问其中的某些信息源比访问其他的信息源(例如,本地局部数据库和远程局部数据库)需要付出更大的代价。

  公司可以升级它的 IT 系统,并且在升级的过程中,将会引入新的信息源,而这些新的信息源必须与旧的信息源(例如,客户信息源)协同使用。

  一个或者多个类似的业务可以进行合并,并且所有的业务在表现相同的实体(如客户)时,可能会存在一些不同的数据。

  任何单独的实体都有某个企业唯一的标识符,该标识符(例如,客户编号或者 SKU)是记录的一部分。

  在 SOA Web 服务环境中,假定在信息管理环境中综合了以上的场景。

  问题

  客户端如何从一组不同的信息源中检索信息,而无需了解多个源的存在呢?

  解决方案

  首选数据源模式将这些数据源中的一个识别为首选数据源,而其他的则作为备用数据源,并且仅当首选数据源不能提供所需的信息时,才使用这些备用数据源。图 1 显示了 facade 和适配器之间的关系。

  图 1. facade 和适配器的关系

  

该模式假定从任何源所获得的信息都以描述实体的记录 的形式出现,如客户或零部件。此外,它还假定任何单独的实体都具有某个企业唯一的标识符,该标识符(例如,客户的编号或者 SKU)是记录的一部分。

  该模式包含一个 facade,而这个 facade 中隐藏了多个信息源存在的事实,客户端只需要与这个 facade 进行交互。这个 facade 接口与首选源的接口相匹配,并且首选的接口中包含一个或多个操作,这些操作允许客户端查找(读取)匹配各种标准的信息。查找操作将返回匹配标准的 0 到 n 条记录。

  值得注意的是,无论由哪个信息源提供信息,返回的信息中可能没有一条是所需的记录。可以考虑这样的场景,在该场景中,一个商店职员在全国范围的公司数据库中搜索名叫 John Smith 的客户。这项查找操作可能返回 20 个 John Smiths,但是其中可能没有任何一条记录对应于正站在这个职员前面的 John Smith。客户端必须依靠与用户之间的附加交互,以确定返回的这些记录中是否有所需的记录。

  首选源模式假定一个信息源有一个或者多个查找操作,这些查找操作返回零个或多个实体记录的实例,或者可能是实体记录的一个子集。信息源可能有一个或者多个写操作,这些写操作允许客户端创建和更新实体记录。

  查找操作

  图 2 显示了该模式中查找操作的序列关系图。客户端调用 facade,然后 facade 调用首选的信息源。如果这个源不提供任何匹配的结果,那么 facade 将按照预定义的顺序调用其他备用的信息源,直到找到匹配的结果、或者直到它查找完所有可供选择的信息源。在它找到一个匹配结果或者查找完所有的信息源后,facade 会将结果返回到客户端。注意:为了清楚地进行描述,我们没有显示同步返回。

图 2. 查找操作

  

  在最简单的形式中,首选源及其对应的模式仅支持查找(读取)操作。虚拟目录功能可以利用这种只读的模式,因为它不需要(或者可能没有能力)更新首选信息源。

  对最简单形式的描述必须包括 Web 服务描述语言(WSDL)文档,该文档描述了首选信息源和所有备用信息源。facade 和所有备用源都使用首选源的接口(端口类型)。如果一个备用源没有在本地公开相同的接口,那么您可以对这个源应用转换模式,然而对这个模式的讨论超出了本文的范围。备用源的 WSDL 必须区别于首选源,至少在端点地址上有所区别,它在绑定方面需要进行更多的工作,这一点也不相同。该接口使用了描述实体记录的模式和任何其他的参数。注意:WSDL 文档将定义或导入该模式。

  如前所示,假定实体记录包括唯一的 ID。您可以为将要应用这个模式的查找操作创建标识。将所有其他的操作作为传递(pass-through)操作处理。然后创建一个显示调用备用源顺序的列表。当然,对于这些服务,可以有单独的 WSDL 文档的列表;该列表中的第一项是首选源。

  在更为一般的情况下,首选源接口可能包含附加的操作,这些操作允许客户端创建、更新、或者删除(在某些情况下,删除操作可能是无效的)。很明显,模式 facade 也必须支持这些附加的操作。

  当读取操作的结果信息不是来自首选源时,您可能需要将该信息添加到首选源。该模式应该支持对首选源的高效更新,但是这可能会带来问题。可以考虑这样的客户信息场景:如果首选源(本地存储数据库)中没有所需的客户记录,那么它可能位于商店的某个遗留数据库中,或者在企业中没有对其进行定义,而您必须使用一个外部的信息源,如 Acxiom,它可以根据电话号码查找相应的信息。

(编辑:aniston)

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089