分布式异构数据

2024-09-24

分布式异构数据(通用8篇)

分布式异构数据 篇1

1 异构数据库间的数据交换

1.1 数据交换技术的方法

目前, 异构分布式数据库进行交换数据的主要方法有: (1) 中间件方法;主要是指构建中间数据库, 再此基础上结合字段的含义和对应关系在中间数据库和其他数据库之间设定一个中间件, 以交换两个数据库之间的数据信息。该方法虽说所需的中间媒介较少, 扩展性也很强, 但是转换过程很费时, 实现完全转换有一定的难度。 (2) 双向中间件;主要是通过建立中间件与两个异构数据库之间, 但是这种方法成本费用很高。

1.2 数据交换技术的研究

本研究为了更好的实现异构分布式数据库之间的数据交换将XML作为中间件来传递, 由于XML是一种比较简单的基于SGML的元语言, 有很多优点, 比如有良好的自我描述性、可扩展性较高、网络传输方便、有良好的储存数据的格式等, 这是有了这些优势才使XML实现跨平台、针对非结构化的数据和半结构化的数据进行描述, 逐渐成为各数据库间数据交换的基础和标准。因此, 数据交换技术的实现是离不开XML的。

(1) XML。它是一种可扩展的标记语言, 在描述相关数据的时候能够突出结构方面的描述, 展现数据之间的各种联系, 具有可扩展、简单方便、开放等特点。XML可以帮助公司、个人等设定属于自己的标定语言, 这些设定后的语言可以在不同的特定领域运用以实现数据的交换, 如无线通讯领域所采用的WML。此外XML也是文件格式, 用来描述数据库中数据的结构, 当然是文本形式的描述, 因此比较适合跨平台的交换, 这些文件都是由数个元素组成, 这些元素都是用标记来进行描述的。这种标记可以在数据的交换过程中保持其原本的结构和含义, 进而保持各异构数据库之间数据交换的准确性和灵活性。

(2) XML数据的转换。虽然XML拥有很多优点, 但是它不可能完全替代传统的数据转换技术, 从另一方面来看, XML只是一种文档, 其中包含了数据信息, 如果不借助相关的软件来处理它就仅仅是个文本文件。因此, 如果想要发挥出其最大的功能, 就必须利用相应的数据模型和转换数据的机制, 在交换异构分布式数据库中的数据时, 作为中介的XML就会从A数据库中提取相关数据存储在自己的文档里, 处理这些数据之后, 再把结果传递到B数据库, 因此这种转换实质上就是XML数据模型与各数据库之间的数据转换的过程。

2 异构分布式数据库间数据交换的具体实现

主要的运行系统的过程有以下几个, 首先需要建立一些用于监听的组件, 利用socket在网络服务器的端口位置建立, 如果收到来自客户端的请求, 就可以通过确认来建立相应的连接;其次相应的客户端把这个请求发送到网络服务器上, 其在进行ADO相应的数据查询操作, 将结果转化为XML形式, 利用SOCKET在转发给客户端。最后客户端对所接收到的XML信息进行分析以获取信息。

2.1 开发服务器的端口

这个部分的开发主要涉及到三个功能, 即监听功能、对数据库准确查询相关数据的功能、将结果转化为XML转发给客户的功能。下面我们对这些功能展开具体性的描述:

2.1.1 监听功能

(1) Local Port;Bindssckserver;Sckserver与本地客户端口进行绑定;

(2) 如果监听到由客户端发送过来的连接请求, sckserver中的事件“connection request”就会被触发, 相应的处理代码就会生成新的实例, 如Winsock, 以连接刚刚发出请求的客户端, 但是原先的实例也在继续监听。

如果是监听到客户端发来的是数据, 就会有事件“Data Arrival”被触发, 相应的代码就会在数据库中进行的查询工作。

2.1.2 将结果转化为XML转发给客户

结果是转换成xml格式, 转换之后就需要利用MSXML对这个文件进行解析。那么首先就需要建立一个对象变量即“XMLDOC”, 在此基础上再建立一个“XML ROOT”这样的根节点。这些关于结果的记录都会被存放在文档“XMLDOC”中, 在转发数据信息给有需求的客户端的时候, 就需要在“XMLDOC”的“XML”中去找到相关的文本资料, 进而利用实例winsock转发给发出请求的客户端。

2.2 开发客户端

这个部分的开发主要涉及到三个功能, 即连接服务器端口、发出所需服务的请求、接收查询结果。下面我们对这些功能展开具体性的描述:

(1) 建立与服务器相应的连接。主要是通过Winsock来建立与服务器之间的连接, 主要是连接起监听的组件。

(2) 发送自己需要的查询请求。用户们可以在端口制定自己所需的查询请求, 待相应的程序将请求生成为SQL言语时, 在连接监听组件的时候将其发送到服务端口。

(3) 接收查询结果。从服务端口转换回来的请求数据都是XML文本格式的, 这些数据在传送回来的时候会处罚到“DATA ARRIVAL”这个事件, 通过这个事件, 客户端的用户们就可以对发送回来的数据进行处理

摘要:随着科技的不断发展, 如今网络计算机技术也广泛的运用到社会的各个领域, 对于集团性企业来说, 各个部门之间的使用的数据库系统是不同的, 经常会出现异构数据库的情况。因此, 我们结合网络环境, 利用相关技术以实现在网络上执行数据的处理、交换任务, 这样也可以在一定程度上增加访问异构数据库中的数据的透明度, 用户也可以将该系统视为普通的数据库系统。

关键词:异构分布式,数据库,数据交换技术

参考文献

[1]李志坚.基于XML的异构数据交换技术[J].乐山师范学院学报, 2012 (12) .

[2]黄学彬, 赵春, 郑伟.异构数据库高效数据交换引擎设计[J].西南师范大学学报, 2014 (09) .

[3]杨帆.基于XML和MQ的异构数据库数据交换技术[J].计算机与现代化, 2013 (06) .

[4]罗雅过.一种基于XML的高效数据库中心异构数据交换模型[J].电子设计工程, 2014 (04) .

分布式异构数据 篇2

Splitter: 作业切分模块,将一个大任务与分解成多个可以并发的小任务.

Sub-job: 数据同步作业切分后的小任务

Reader(Loader): 数据读入模块,负责运行切分后的小任务,将数据从源头装载入DataX

Storage: Reader和Writer通过Storage交换数据

Writer(Dumper): 数据写出模块,负责将数据从DataX导入至目的数据地

DataX框架内部通过双缓冲队列、线程池封装等技术,集中处理了高速数据交换遇到的问题,提供简单的接口与插件交互,插件分为Reader和 Writer两类,基于框架提供的插件接口,可以十分便捷的开发出需要的插件,

电脑资料

比如想要从oracle导出数据到mysql,那么需要做的就是开发出 OracleReader和MysqlWriter插件,装配到框架上即可。并且这样的插件一般情况下在其他数据交换场合是可以通用的。更大的惊喜是我们 已经开发了如下插件:

Reader插件

hdfsreader : 支持从hdfs文件系统获取数据。

mysqlreader: 支持从mysql数据库获取数据。

sqlserverreader: 支持从sqlserver数据库获取数据。

oraclereader : 支持从oracle数据库获取数据。

streamreader: 支持从stream流获取数据(常用于测试)

httpreader : 支持从http URL获取数据。

Writer插件

hdfswriter:支持向hdbf写入数据。

mysqlwriter:支持向mysql写入数据。

oraclewriter:支持向oracle写入数据。

streamwriter:支持向stream流写入数据。(常用于测试)

异构分布式数据查询系统设计分析 篇3

从对LDAP目录服务的分析可知, 它具有开放性、分布性、可伸缩性和跨平台等特性。LDAP目录的分布性使得它易于组织、存储分布式环境中的信息, 其复制特性使得LDAP服务在分布式环境中具有很强的容错性和抗毁能力;同时, 用目录服务器存储异构信息环境中的信息相比于关系数据库的查询, 速度要快很多, 用户的大量查询需求, 依靠LDAP目录服务的查询速度和良好性能, 会大大增强异构信息环境中的信息检索能力。

2 系统模型

信息资源的检索定位是在信息组织与索引的基础上完成信息的查询处理, 它向上接收用户以高级语言形式提交的复杂查询, 向下根据数据模型选择并定位到具体信息源形成查询规划, 然后从各个信息源提取信息经转换、合并等处理后形成查询结果返回给用户。本文采用LDAP目录技术组织和管理全局索引信息, 设计出了基于LDAP的分布式异构数据查询模型。模型分为3层:用户界面层、中间层和数据层。

(1) 用户界面层。即信息查询的目标信息输入层和查询结果的输出层。它可以采用网络浏览器作为用户的交互界面。该层负责与用户的交互, 用来接收来自用户的信息请求或向用户返回请求的响应结果, 该层实现了信息资源的异构性分布性对用户的透明。

(2) 中间层。这层是系统的核心部分, 主要包括查询分解与查询结果整合、LDAP目录服务、资源中心信息管理与服务。用户输入的查询信息经过Web服务器转化为标准的请求, 接着再传给LDAP目录服务器, 接到目录服务查询请求后, LDAP服务器首先确定信息所在的资源中心位置, 然后将请求转发到资源中心执行, 如果能在资源中心的本地信息仓储中查找到所需信息, 就将查询结果返回给用户;否则根据资源中心提供的有关具体信息源的位置, 将查询请求分解至各信息源执行。LDAP目录服务用来对全局索引信息进行组织和管理, 它能够对物理上分布的索引信息通过LDAP的数据同步功能来进行统一管理, 同时保持这些索引信息在逻辑上的一致性和完整性。LDAP目录服务器之间采用层次式的组织方式。在此过程中涉及到各个LDAP目录服务器的数据同步问题, 由于各LDAP服务器在地理上呈分布性放置, 并且所在环境和系统结构不尽相同, 这给数据的查询检索带来了一定的复杂度, 数据同步很好地解决了这个问题, 数据同步将各个分散性地LDAP服务器的数据同步统一, 数据检索查询变相性地将分布式数据查询转化为集中式查询, 并且很好地解决了几个层次的异构性问题。

(3) 数据层。该层由分布在整个信息空间中的各种分布性信息资源组成, 包括文本信息、超文本信息、音/视频信息、空间信息等。各种信息资源写入其所在地的LDAP服务器进行存储。这些信息资源是以数据库管理系统作为存储媒介进行组织和管理, 当前普遍用来进行数据存储的数据库包括SQL Server、ORACLE、MYSQL等关系型数据库和BDB等层次型数据库。各数据库中的信息由于结构不同, 因此需要通过LDAP与各数据库的集成整合来实现信息的写入。

2.1 系统查询模块的实现细节

基于LDAP的目录访问模块主要对目录系统进行浏览、搜索、添加和删除等操作。查询模块通过HTTP协议把用户所需要的目录服务请求, 通过参数传递给Java Servlet程序, 将请求页面信息转化为相应文件, 然后解释程序通过JNDI对LDAP目录服务器发出请求, 接着LDAP服务器将请求信息提取出来通过DAP送到DSA。DSA根据请求对目录库进行操作, 并把结果返回给LDAP服务器, 返回结果经过转化后, 最终返回到界面层供用户浏览。因此, 系统的查询模块由客户端、转换器、适配器和LDAP服务器5个部分组成。

2.2 LDAP目录服务器的组织设计

LDAP目录服务器所维护的全局索引信息按照信息条目DN构成一个目录信息树, 在异构信息空间环境中, 分布式目录服务由多台LDAP服务器组成, 每个LDAP服务器负责维护目录信息树中一颗子树信息。每棵目录信息子树的信息都由一台LDAP目录服务器来维护。目录服务器之间的连接就是要将各个分散的子树合成一个统一的树型结构。由于目录服务器也采用了层次式的组织方式, 因此上一级目录服务器除了含有自身的资源属性信息外, 还有两种特殊类型的信息:上级引荐和下级引荐。上级引荐是用来指向父亲服务器的指针, 它指向该LDAP服务器所维护的子树的父亲节点所在的LDAP服务器;下级引荐是用来指向孩子服务器的指针, 它指向该服务器所维护的子树中更小的某棵子树所在的LDAP服务器。LDAP服务器之间的互连就是通过两种引荐实现的。另外, 任何一个目录服务器都可以通过LDAP的复制功能将自身的部分或全部信息进行备份, 并且通过备份信息实现容错、负载平衡等功能, 提高目录访问的效率和性能。当一台服务器接收到一个用户查询请求时, 首先查找本地的信息, 如果没有, 则根据用户的查询条件向父LDAP服务器或子LDAP服务器转发请求;各LDAP服务器都按照这个协议进行请求处理, 直到该请求得到满足。

2.3 异构分布式数据查询的工作流程

异构分布式数据查询的工作流程为: (1) 界面层接收用户查询请求, 将JSP页面请求传给Web服务器, 经过转化后通过JNDI来操作LDAP服务器中的数据; (2) LDAP目录服务器收到查询请求后进行查询, 返回所需信息所在的资源中心位置。此查询过程是一个分布式的查询过程, 查询首先向本地服务器发出查询请求, 本地服务器视情况进行本地查询或将查询重定向到其他目录服务器, 查询结果为资源中心的位置及描述信息等; (3) 根据目录服务器返回的结果向资源中心发出查询请求。在查询过程中, 如果发现本地信息中有满足用户需求的信息, 则将此信息直接返回给用户;否则, 返回所需信息所在的具体信息源的位置及有关的访问信息。依据所返回的信息源的位置及相关信息, 将查询分解至各有关信息源; (4) 各信息源返回查询结果进行整合处理, 经Web服务器对文档进行转化, 最终以JSP页面的形式返回到界面层呈现给用户。

3 LDAP与异构数据库的集成

异构数据库的集成就是要将不同数据库系统、不同操作系统、不同计算机平台或者不同的底层网络进行屏蔽, 使得用户通过一个检索平台可以同时对多个数据库进行检索, 用户访问异构数据库集成系统如同访问一个数据库系统一样。

目前, 对于异构数据库集成, 主要有以下4种方法: (1) 利用中间数据库的转换; (2) 分布式计算技术; (3) 使用中间件; (4) 多数据库系统。

对于分布式存储的异构数据源来说, 通过LDAP与各数据库的集成能够更好地提高系统的效率, 而且能够很好地解决数据源的异构性问题。然而, 由于LDAP本身提供数据库的支持, 因此需要通过不同的配置转换来完成与各种数据库进行集成。LDAP通常带有固定的后台数据库, 例如Openldap通常采用Berkeley DB (BDB) 为后台数据库, 数据普遍存储在SQL、Oracle、My SQL等数据库当中, 因此, 我们以ORACLE数据库为例讲述与Openldap的集成方法。

3.1 openldap与oracle数据库

将Oracle数据库作为Openldap的后台数据库进行访问需要通过oracle ODBC驱动桥。Oracle ODBC让ODBC嵌入式应用访问Oracle数据库, Openldap通过Oracle ODBC来访问Oracle数据库中的数据并将其作为后台数据库和采用SQL作后台数据库的步骤相似。

3.2 关系型数据表映射实现树型结构信息存储

Openldap通常访问树型结构数据, 那么对于象Oracle中的关系型数据就要经过转化才能让Openldap访问, 通常我们可以借鉴数据结构中树结点存储的有关知识, 利用关系表之间的数据映射来实现关系表对树型结构信息的存储。

参考文献

[1]甄玉刚, 刘璐莹, 康建初.基于XML的异构数据库集成系统构架与开发[J].计算机工程, 2006 (2) .

分布式异构数据 篇4

针对异构问题,人们采用了多种方法,如日志法、触发器法、API法[1]等。但是这些方法各有优缺点,单一的使用此方法难以满足用户多方面的需求。为此,本文提出了触发器、控制表和时间戳法相结合的变化捕捉方法,并且采用XML技术实现异构数据库数据同步。采用触发器捕获变更数据,并对触发器算法进行优化,为需要同步的数据库创建一个控制表,控制表中设置时间戳,当触发器捕获到变更数据后,将数据存放到控制表中。然后将捕获的变更数据转化成XML文档,通过Web分发到各个数据库中。在传送同步数据前,删除重复无用数据,传送最小的数据,从而降低传送时间,减少占用带宽。

1 分布式异构数据库与XML技术

分布式异构数据库是数据库技术与网络技术相结合的产物,是由多个数据库系统组合而成的,可以实现异构数据的传送、共享和透明访问。这些数据库系统在加入之前是独立的数据库,能够实现数据库系统的管理。

由于不同的数据库系统的数据类型、数据结构等的定义可能不同,在转换前,需解决的是两种模型之间存在的各种冲突[2]。XML简单易懂,具有自描述性,可以采用XML文档描述存放的是什么数据,如何存放这些数据。XML具有可扩展性和平台无关性,并且是纯文本文件等特点,能够有效地解决在异构数据库同步时出现的冲突,在数据交换中经常被使用。

XML文档与关系数据库之间的映射有两种方法:基于模板驱动的映射和基于模型驱动的映射[3]。其中基于模板驱动的映射是在XML文档中嵌套SQL语句,执行得到的结果。这是一种浅层的映射,只能从关系数据库到XML文档的映射。基于模型驱动的映射,是一种深层的映射。数据在数据库与XML文档之间进行转换时,不仅仅是在XML文档中嵌入SQL语句,而是用一个具体的模型实现的[4]。

2 系统设计

本系统目标是对于异构数据库数据同步的关键技术进行研究,在实验环境下进行数据同步系统的设计和实现,对系统进行调试和试运行。主要研究数据源数据的一致性的解决方案和降低数据传输时间和提高同步效率。

系统基于B/S模式设计,采用ADO.net技术访问数据库,提供了Connection、Command、Data Adapter、Data Reader、Data Set和Data Table等。允许程序员将SQL命令通过驱动程序发送给数据库,数据库执行后返回数据处理结果。本系统的同步传输模型如图1所示。

图1基于Web Services的数据同步传输模型

2.1 主数据库选取

主数据库是整个系统的中心,在更新操作中,将所有的更新数据传送到主数据库中,主数据库负责对数据的分析和处理。由于主数据库需要处理的任务很大,当不能在短时间内完成更新时,可能会得到过期的数据;并且当主数据库因故障不能够进行数据更新时,系统将无法正常进行,因此采用的是优化的中心数据库的方法,先选取异构数据库中的一个数据库作为主数据库,当主数据库发生故障时,在从数据库中选择一个数据相对完整的数据库作为主数据库继续处理数据。

2.2 数据库表设计

为了解决命名冲突设计了数据源表、全局表、数据源表和全局表映射表。

1)数据源信息表

该表中存放了异构数据库中的各个数据库的信息,主要用于异构数据库注册。系统的首要任务是管理可以进行数据同步的各个局部数据库的数据表,为此,需要将各个节点的数据库中用户关心的连接信息和数据库表的信息集成到全局数据库,全局数据库将这些信息存放全局数据库信息表中,实现局部的异构数据库注册。数据源信息表结构如表1所示。

2)全局表

由于各异构数据库的数据模式是不同的,如果同一个数据分别存储在不同数据库中,那么它的表现形式会不同。所以把各个节点数据库集成到同步系统中,通过建立全局数据库模式,用户可以有这样一种感觉,就是使用一个单一的数据库。全局表如表2所示。

3)映射表

映射表存储的是全局数据库与局部数据库之间的对应关系。如表3 所示。将全局数据库与从数据库中的数据通过表进行对应。

2.3 变更数据捕获

不同的数据库支持不同的变更数据捕获方法。触发器[5]是数据库内部的一种机制,它的概念比较明了,对于导致数据库内容发生变化的事件(增加、删除或者修改),都可以自动采取相关的动作,通过触发器可以直接获取变更数据并且操作简单,而且现如今常用的数据库都支持触发器机制,使用效率很高;控制表法不需要对原有的系统表结构进行修改,但是要为每一个需要同步的表都要创建一个控制表,对于存在大量需要同步的数据表的数据库应用来说,会占用大量的内存空间;时间戳的方法需要在每个进行同步的表上添加一个时间戳,用来记录修改的时间,以便同步的时候判断是否为最新数据[6]。该方法虽然不会影响应用的运行效率,但是需要对原有的系统做非常大的调整,而且只能捕获到应用程序造成的数据的变化。因此,在触发器和控制表方法的设计思想的基础上,提出了一种改进的用于异构数据库同步的变更数据捕获方法——触发器法、时间戳法和控制表法相结合的方法。

该方法需要为每一个系统中的数据库创建一个控制表,控制表中存放的是控制字段,包括数据发生变化的时间、变更数据所在的表名、变更数据的主键值、同步标志等信息,然后对需要进行同步的表创建相应操作的触发器,当对表进行DML操作时,触发器被触发,将控制信息存放到控制表中。本系统设计的捕获数据的流程图如图2所示。

2.3.1 控制表结构设计

为了方便提取变更数据,在整个数据库中为所有需要进行同步的源数据库表只创建了一个控制表Change,用来存放控制信息。当执行增删改等DML操作时,触发器监测到发生的变化后,将变更数据保存到Change表中。

以SQL Server2008为例,Change表的字段如表4所示。

2.3.2 触发器捕获技术

不同的数据库系统对于触发器的定义是不同的,支持的触发器的类型也不相同[7]。其中以SQL server和Oracle的触发器为代表。

以SQL Server2008 为例,为用户表User Infor创建新增触发器代码如下。

上述代码是Insert触发器的执行过程,说明如下:

1)第一行说明要创建的触发器名称为tri_Insert User Infor,源表名称为User Infor。

2)第二行说明在执行insert插入操作时触发器触发。

3)第四行到第五行定义了触发器触发时的SQL语句。首先是将数据插入到Change表中,对应的值分别为当前时间、字段、发生变化的表名、发生变化的主键值、操作的类型和未同步标识。由于Change表中的主键是自增字段,在执行insert语句时,不需要指定主键。Getdate()是获取当前系统的时间,将修改的时间存储到Change表中,实现时间戳的概念。

有一张用户表,其字段信息如表5所示。

当执行Insert语句后,tri_Insert User Infor捕获到插入语句,将数据存放到Change表中。

Insert语句代码如下:insert into userinfor values(newid() ,'张春芳','1987-01-10','女','15175500011','河北省唐山市路南区')

Change表中增加一条数据如图3所示。

图3执行insert后change表中新增的数据

2.4 数据转换

由于异构数据库间的功能属性和结构不同,可能采用了不同的数据结构、数据类型等。因此,在数据捕获后,需要针对这些差异,对数据进行转换。针对这些差异性,基于XML技术,声明源数据库与目标数据库之间的异构[8],以便实现数据转换。

2.4.1 关系数据库到XML文档的转换

实现关系数据库到XML文档映射的过程分为两步:一是对数据库中的数据的提取;二是通过XML Schema编写函数,将提取的数据通过写入文档的函数方法写入XML文档中。

1)提取数据库的数据

异构数据库同步对变更数据的操作是根据控制表中的C_Operate字段的值来确定的,在实际的应用中,对需同步的表的操作可能存在插入、删除、更新三种情况,这三种对应的SQL语句结构都不相同。实现控制表中的控制信息的提取,文中概括了三种情况。

1 插入操作

在执行插入操作时,需要所有的字段对应值,因此在生成XML文档时需要将每个数据都插入。因为控制表中只存放控制信息,没有数据,需要将控制表与源表联立,获取数据信息。

提取同步数据代码如下:select a.* from user Infor a, change b where a.U_ID = b.C_Key and b.C_Operate='insert'

通过联立User Infor表和Change表,将用户信息表中的每个字段作为一个节点名称,每个字段对应的值作为节点值,再从Change表中获取四个控制节点记录信息,控制节点的作用是根据源表信息在文件中找到对应的目标表的信息,从而达到同步的效果。其中一条插入数据操作最终生成的XML文档如下:

其中<row>标签表示每一行数据。<row>中主要字段作用如下:

Username、Birthday、Gender、Telephone、Address分别对应同步数据表中相应的字段,保存变化的数据。

C_Operate用来记录本次数据变化的操作类型,如insert、delete和update。

C_Table用来记录本次操作的表名。

DBName用来记录操作的数据库名。

DBType用来记录操作的数据库类型。

2 更新操作

更新操作与插入操作类似。更新包括主键更新和非主键更新。上面介绍的控制表中有个字段C_Field,该字段的作用是存放主键更新操作时的更新前的主键值。

3 删除操作

删除操作很简单,通常一条删除语句可以通过主键的唯一性即可删除一条记录,所以在设计XML文档时,可以直接将Change表中读取C_Key字段,不再需要和源表User Infor关联。

2)将关系模式映射为XML Schema

将关系数据库中的关系模式映射为对应的XML Schema,为XML文档提供描述标准。程序中关系模式映射为XML Schema的主要代码[9]如下:

2.4.2 XML文档到关系数据库的转换

该模块的功能是将源数据库中发来的XML文档解析成SQL语句,然后在目标数据库中执行,采用Linq to XML操作XML文件。通过XElement类读取XML文件,使用XElement类中提供的Element和Elements方法定位到某个或某些元素,XAttribute类中提供的Attribute和Attributes方法定位到某个或某些属性,将XML中的元素和属性提取出来,还原SQL语句,连接目标数据库后执行,将变化数据反映到目标数据库当中。

3 结论

系统采用改进的基于触发器、控制表和时间戳的变更数据捕获方法和基于XML框架解决了多个异构数据库数据同步的问题,通过测试和使用,该方案的可靠性和稳定性得到了证明。该方案实用性强,实现了数据的共享和交换功能。

摘要:在分布式异构数据库中,存在的最大的问题就是异构数据库之间的一致性的问题,针对该问题,设计了一种基于XML的异构数据库同步系统,该系统以C#/XML为基础,结合触发器法、控制表法和时间戳法获取变更数据,并对触发器和控制表进行改进,采用XML技术,将得到的变更数据转化成XML文档,通过Web界面实现异构数据库之间的同步。

分布式异构数据 篇5

随着信息化和网络技术的飞速发展,政府及各企事业单位建立了多个不同的信息系统。但是各个系统按照自身需求采用了不同的数据模型,选用了不同的存储方式乃至不同的数据库,数据共享困难,容易形成信息孤岛。为了保证各层次共享数据的一致性,实现信息共享,快速支持业务过程变更,帮助决策者能够从全局把握目前状态和发展趋势,必须实现分布式异构数据同步集成。

XML技术以其松散、灵活、易于跨软硬件平台等优点,已成为Web服务的技术基础。本文提出了一种基于XML/JAVA的分布式数据交换构架,以XML为数据交换的载体,利用Java技术作为中间件实现平台,构建了一种跨平台的异构数据集成中间件平台,对各个系统的数据做实时同步处理,快速构建数据同步集成。

1 系统架构设计

中间件协调各数据库系统,监控数据流动,在数据库系统之间提供统一的数据模式和数据访问接口。利用中间件集成异构数据库,并不需要改变原始数据的存储和管理方式。

该系统模型分为两层:适配器层和系统边界层,系统架构如图1所示。

1) 适配器层:

提供数据抽取、清洗、打包、路由、传输、验证、解析等核心功能。以XML文件作为信息传输的载体,FTP传递数据包文件、WebService服务传递指令信息,调用远端应用完成系统功能。每一个适配器在整个系统中有一个唯一的ID,在启动配置中,这个ID与IP地址(端口号)一一对应。

2) 系统边界层:

包括业务系统、数据库和文件系统等。针对遗留的业务系统,数据库中建立触发器,提供有效的、可及时更新的数据。而对于新业务系统,业务端开发方按照同步集成的要求提供数据同步接口或在数据库系统中维护同步集成的数据库表,将同步集成逻辑加入业务系统中。

2 关键技术

2.1 数据描述

数据同步集成框架包括抽取打包、验证解析,分别表示数据库到XML的映射和XML到数据库的映射。在这两个过程中形成XML数据传递包,描述了需要同步的业务数据、监控表及字段之间的映射。

数据传递包包体文件格式[1,2]:

< xml version=″1.0″ encoding=″UTF-8″?>

<TABLE>

//表结构字段,只在测试系统的时候和第一次启动数据同步的时候传递

<T N=″DEMOTABLE″ C=″DEMOTABLE″>

<F N=″DEMODID″ T=″VARCHAR2″ L=″20″ P=″Y″ F=″N″ />

<F N=″EMAIL″ T=″VARCHAR2″ L=″400″ P=″N″ F=″Y″ />

</T>

//N-NAME,C-CONNAME,T表示一个表

//F-FIELD表示一个字段,N-NAME表示字段名称

//T-TYPE表示类型,L-LENGTH表示长度

//P-PRIMARYKEY表示是否主键, F-FILE表示是否文件字段

</TABLE>

<DATA>

<T NAME=″DEMOTABLE″>

<ROW F=″I″>

//F-FLAG表示操作标志

<DEMODID>MTIzNDU2</DEMODID>

<EMAILFileName PATH=″/upload″

NAME=″03160000000800520100420000085213.doc″>

NjM1NTI2ODQuZG9j//63552684.doc

</EMAILFileName>

</ROW>

</T>

</DATA>

首先是元数据部分(元数据是关于数据的内容、质量、状况和其他特性的信息),初始化的时候进行传输,因为元数据只是在软件初始化时验证配置文件使用的。后面的数据部分是对数据库表变动的差异进行传输,操作标志I表示这是一条插入数据,根据元数据部分“DEMODID”是主键字段,“EMAILFileName”为储存文件字段,储存的是数据库表中的文件名,PATH表示文件的相对路径,NAME表示实际的文件名。表字段的值统一使用Base64编码方式进行编码。

2.2 适配器核心模块

适配器核心模块架构分为两层:核心处理器和边缘节点(Node),如图2所示。

边缘节点分为三种类型:读节点(ReadNode)、数据过滤处理节点(ProcessNode)和写节点(WriteNode)。这三类节点分别由对应的三类连接器转换而来。针对不同的应用如JMS、WebService、HTTP等开发不同的连接器,由连接器(Reader,Writer)负责与应用系统直接交互。定义不同的规则,采用抽象方法的方式在节点层中屏蔽底层的规则。这样针对新的模式只需开发对应的连接器即可满足系统升级的需要。

连接器(Reader,Processor,Writer)的对应关系通过配置文件的方式在系统初始化的时候传入核心处理器。连接器转换为对应节点(Node)的装配关系保存在HashMap中。ReaderNode与ProcessorNode、WriterNode为一对多的关系,ProcessorNode可以连接ProcessorNode或者WriterNode,WriterNode为传输过程的终点。核心处理器负责调配整个系统的运行过程,每当有数据需要传递时,核心处理器分配给ReadNode一个线程,ReadNode启动线程并发起数据传递,将数据封装成Message通过装配关系查找下一节点,然后交给后续节点(ProcessNode或WriteNode),ProcessNode过滤清洗数据,最终数据下发到对应的各个WriteNode,WriteNode调用(Writer)写入到目的端。Message携带数据源节点信息、目的节点信息、元数据信息和事务管理信息。不同的Message携带统一的事务管理信息来保证所有WriteNode节点的事务统一提交。

3 流程实现

3.1 遗留的业务系统

在文档和系统源代码可能不全或非Java构建的系统的情况下,对其数据库和文件系统存储结构进行分析,对数据库和文件系统进行监控,感知数据库和文件系统的变化,从而捕捉变化的数据分发给其他业务系统的方式来进行处理。

1) 针对数据库变化的数据的捕捉[3],对每一个需要同步的表建立监控表(表1)并使用触发器或者影子表来感知数据的变化,并将数据的变化记录在控制表中,同时加入时间戳来确定数据变化的顺序。主表监控表只记录变动的数据的主键,通过变动的数据的主键与待同步的表进行联合操作获取变化的数据。操作标志有三种即插入、更新、删除。更新时间记录数据发生变化的时间。数据包ID用于记录由哪个XML数据传递包来处理这条变化的数据,初始为空值。处理标志记录该条记录的处理状态。

核心处理器定时扫描主表监控表,发现数据变化后,使用Reader连接器通过表连接的方式获取未处理的变化的数据,将变化的数据通过Writer连接器以XML的格式写入到XML数据传递包文件中。

将大字段提取成临时文件,而文件则直接拷贝到临时文件中,与XML数据传递包一起打包压缩加密。

2) 建立发送控制表(表2)来监控数据的传递过程,数据包ID和目的ID构成联合主键。数据写入到XML数据传递包,根据系统配置压缩加密,以FTP的方式自动发送到目的端,同时使用WebService通知目的端进行数据解析操作,将发送信息写入到发送控制表作为发送异常、超时后重新发送的依据。数据的一致性与冲突则通过制定一系列规则进行处理。针对反复重新发送仍不能成功接收到回执包的数据需要通过人工干预的方式进行处理。回执标志分为传输成功和解析成功两种。

3) 建立接收控制表(表3)监控数据的传递和解析过程,数据包ID和源ID构成联合主键。源发送端调用目的接收端的WebService服务向接收控制表中填入数据,并启动核心处理器进行数据解析操作,首先验证数据包的完整与正常,然后将源发送端发送控制表中相应回执标志更改为传输成功。核心处理器通过Reader连接器读入XML数据传递包文件,通过数据过滤筛选,使用Write连接器将数据写到目的数据库中,完成同步操作。正常写操作结束后,将源发送端发送控制表中相应回执标志更改为解析成功,完成整个操作过程。

3.2 新开发业务系统

针对新开发的业务系统需要数据集成,在业务系统中对外提供SOA接口,提供数据交互的方法[4]。两个同步系统的一方提供数据写入接口,比如WebService、JMS和FTP等等,另一方在业务系统中将核心处理器嵌入到业务系统内部,采用一定的规则间隔触发核心处理器,核心处理器使用Reader连接器从系统中用某种方式如JDBC等读出数据,经过抽取、过滤形成Message格式数据,通过Writer连接器写入到另一个系统中完成数据集成需求。

4 应用实例

根据前面的框架结构,开发核心处理器模块,作为某高校校园管理平台主要的支撑工具,在教务成绩系统和高校管理平台之间进行双向实时的成绩信息同步,共享成绩数据资源,达到一点输入全局数据共享的目的。

从教务系统方向看,系统首次启动教务管理系统中数据集成模块,核心处理器启动JDBC读连接器获取教务系统全部数据,经过数据过滤节点过滤错误格式数据编码加密,使用XML写连接器将正确数据写入到数据包中压缩,调用FTP服务将数据发送到目的端,同时使用WebService服务通知校园平台端核心处理器,校园平台端核心处理器解压启动XML读连接器读入数据,解密解码,经过数据过滤去验证数据正确性,使用JDBC写连接器将数据写入校园平台端数据库,完成启动数据同步。

经实验,在校园网环境中,首次启动教务管理系统中数据集成模块共传输数据20627条,传输时间32291ms。实现了某学院一届学生(250人左右)四年的全部成绩的导入功能。

系统运行期间,需要同步数据的规模比较小,JDBC读连接器读出数据,以“字段名->字段值”的方式存储在内存中。核心处理模块直接使用高校管理平台的WebService模块(基于CXF的数据接口)直接写入到高校管理平台的数据库中。

教务处系统进行导入等操作的时候,突发的数据量比较大时(每次传输数据300条以上),这种情况下先将数据写入到XML数据包中,调用FTP服务发送到校园管理平台端,通知校园平台端核心处理器,验证后写入数据库中。

在广域网环境中,系统会受到更多的环境因素的影响,经实验网络性能瓶颈主要在数据包的传输过程中,目前所采用的FTP的方式是比较合理与高效的,同时系统即插即拔的组件化、可扩展的设计,也支持使用其他方式进行数据传递。

5 结 语

本文构造了一种基于Java/XML的松耦合的数据同步集成关系,以XML作为数据交换集成的载体,允许用少量的或非常规的编程进行快速的商业系统集成,具有开放性、可伸缩性、可移植性、灵活性。此集成框架结构为企业信息化集成提供了一种有效的方法,使不同信息系统的整合变得简单,使不同系统间的数据分享变的更容易,实现了分布异构数据的无障碍交互。

参考文献

[1]沈敏,许华虎,季永华,等.基于XML的分布式异构数据库数据同步系统的研究[J].计算机工程与应用,2005,41(5):184-186.

[2]陶以政,唐定勇,何铁宁,等.基于Java和XML技术的异构信息系统数据集成框架应用研究[J].计算机应用研究,2004,21(5):38-40.

[3]者敬.开放式异构数据库复制框架的研究与实现[D].北京:中国科学院软件研究所,2002.

分布式异构数据 篇6

在控制系统复杂性越来越增强的情况下,各个控制领域也不断地引进分布式控制系统,例如飞行控制系统,武器防御系统, 工业控制系统等等,但在控制器数量变多的同时,系统出现问题的几率也在变大。各个任务在控制系统中都被紧促的时间制约着,也称为“时限”,一旦控制器有问题让一些任务不能在规定的时间内做完,这样造成损失的可能性会很大。为避免此类问题, 分布式控制系统中还需增强容错能力,以提高在一些控制器出现问题的情况下完成任务的效率,进而保证控制系统的可靠性能。

容错调度算法是用软件工具处理在分布式控制系统中有容错故障的,而不是用其他硬件的一种有用的办法。迄今为止, 在分布式系统中采用的容错技术是:分布式投票技术,反转恢复技术和基/副版本技术,但是这些都没有考虑有关任务的一些实时性问题。现今的实时容错技术一般是以基/副版本为蓝本而实施起来的,按照等待处理的实时任务的性能,进而发展出了RM算法、RMFF算法、PB-Overloading算法、SS算法、RB算法、HFTS算法等。其中,RM算法、RMFF算法属于处理周期任务,PB-Overloading算法属于非处理周期任务,SS算法、 RB算法、HFTS算法属于处理混合任务。

调度算法在处理混合任务的调度过程中,对非周期任务实行预留时间,预留时间指的是原本属于任务周期的部分,现在被分到非周期任务中去,然而人们为使周期任务可以调度,所以在选择固定时间内处理机上的周期任务时,把运行完后所留下的时间当做预留的时间。因为在周期任务被完成最坏的情形下,才能产生预留时间,所以非周期任务不能得到回应在一个周期频频来临的时候。

对于以上的一些问题,该篇文章按照处理机数目的多少把周期任务集分成周期任务子集,周期任务子集在处理机上的调度不同,因为周期任务在各个处理机上所运行的不一样,所以运算的预留时间也不尽一样。因为周期任务频频来到而当时无法应对的时候,能够把一些任务调度到没有那么多周期任务的处理机上去实行。如果这样,不仅使周期任务的调度得到有力的保证,而且也能应对周期任务所提出的需求,进而增强控制系统容错调度的力度。

1实时系统的动态容错调度模型

现在很多以实时系统为基础的容错调度模式和算法也相应地产生了。一般的容错技术有:分布式投票技术、反转恢复技术和主/副版本技术。由于这些不能完成实时系统的需求,因此有人又提供了一种不完善的,算法也不准确的容错技术。更有甚者,根据主/副版技术使实时调度中的容错能力得到提高,以此为准,探讨了混合型的容错调度,然而这样的算法没有顾虑到容错技术出现问题的情况,也没有思考错综复杂的网络环境。 本文主要通过引进面向方面的办法,结合Cyber Physical网络环境对实时系统的容错调度算法做一些探索和分析。针对系统出现问题仍能有充足的时间来面向方面与扩展UML框架,在使实时系统的容错调度能满意的前提下,不仅考虑可调度性,还考虑到可靠性能,在多变的Cyber Physical网络环境下,进一步分析时间和容错的方面。然而,由于刚刚归纳了Cyber一physical Systems的定义,所以其他的理论分析和基本工作还有待完善,缺乏更加准确统一的国际化概念和内涵,因此这个课题没有更进一步的探索,而是按照Cyber Physical网络环境的特点,运用面向方面,分析出能在错综复杂的Cyber Physical网络环境下以实时系统为基础的容错调度和算法。这样,对于发展cyber一Physicalsystems和容错技术都有着很大的作用。

2容错技术

容错技术的一般定义是系统能够在其出现故障并让结果不发生变化时自行进行处理。它的一般内涵是为不受故障的影响, 而运用外界资源的冗余方法来实现的,进而自行完善系统或者是安全的停机,让系统进入到可以控制的情况下。它的设计理念一般有模块耦合性,模块独立性,冗余,维修等。设计故障、操作故障、环境故障、硬件故障是容错技术所要关注的四种故障类型。

方法一:把那些有容错要求的实时任务拷贝到不一样的处理机节点上,一旦执行任务时发生错误,那个拷贝的样本就会在其他好的处理机上正常的被实行,此类方法只能在时间能满足的情况下才能完成任务,才能提高任务的实时性,就是运用时间冗余来得到可靠性能。此种方法通常只适合没有时间限制的系统,而且在目前的系统没有出现问题时,容错算法为容错保留的实行任务的时间都无用了,这样让中央处理器的利用效率大大降低了。

方法二:在不一样的处理机上同时运行一个任务的多个拷贝的样本,截取正确的运行结果。迄今为止,有两种一般的方法 : 主备份p B ( primary Baekup ) 和三模冗 余TMR (Triple Modular Redundancy),TMR方法的运行步骤是在不一样的处理机上同时运行三个样本,然后对这三个结果进行筛选, 然而此类办法的花费代价较高,而且调度算法在实时性能需求比较大的系统中的关系处理得不好,也不能完善调度算法,进一步保证系统的实时性能。

3系统模型描述

考虑一个由多台处理机构成的分布式控制系统,该系统需要处理多个周期任务和非周期任务,其形式化描述如下:

(1)一组周期任务

其中,N代表周期任务数;Ci代表任务ti在一个周期内的最大执行时间;Ti代表任务ti的最小执行间隔—即周期。设任务的截止时限等于其周期。

(2)一组非周期任务

其中,K代表某一时刻存在于系统中的非周期任务数;ai是非周期任务随机到达系统的时间;ci为任务ji最大执行时间; D为任务ji相对截止时限。

4结果验证

我们在T= 0.2,U= 0.9周期任务数为100个时随机选择一个处理器进行仿真.假设被选择处理器不出现故障,系统中每间隔 Δt= 1000ms系统就有一个处理器出现故障且故障持续时间为符合[100,200 ](ms)上均匀分布的随机数。假设被选择的处理器为:8号处理器;该处理器的执行速度d8= 1.207776。我们可以得到:每一个有容错任务的基版本和副版本的最大响应时间都小于任务时限的1/ 2,即小于这些版本的时限;同时无容错任务的时限也小于它们的时限.这就说明无论系统中是否有处理器出现故障,所有任务都能满足它们的时限,不存在时限丢失问题.这说明本算法是有效的。

5结束语

分布式异构数据 篇7

在异构环境中,传统的中间件技术(例如 CORBA,COM或EJB)实现了一种通用的分布式计算方法,然而这些技术并没有得到完全的应用。一方面,这些技术基于面向对象架构的,并要求在使用中技术必须统一,同时要求硬件底层必须创建连接。目前因特网的不断发展为中间件的发展提供了一个良好的平台,其中主要还是由于在异构分布式环境中web服务技术为应用程序的整合提供了一种解决方法,这些Web服务可能提供各种计算服务,他们之间在进行通信和数据交换时通常使用标准的因特网协议和数据格式,例如Http协议和XML技术。但是,没有一个标准的程序能够让这些服务很好的协调工作。为了这些Web服务更好的协同,必须考虑互联网两个方面的问题,首先从技术方面来看,通过Http协议进行通信通常是同步的,但是在分布式环境中异步并发计算依然需要。其次如何处理因特网的真实行为:如何保证互联网通信的可靠性和安全性。

在本文中,提出了一种基于Web服务来解决分布式异构环境中存在的Web服务协同问题。我们的目标是采用互联网作为分布式计算平台,考虑到不同语言开发的应用系统中语义协同,甚至不同编程方式。我们主要通过一种协调处理模型,这种模型扮演一种“信息收集者”的角色,将每个分散的组件信息集中到一起。目前应用比较广泛的Linda模型[1],他由两种抽象元素组成:元组和元组空间,元组空间中进行模式匹配处理后得到元组,我们提出的方法也是基于这种处理方式的基础上,如果将Linda模型中简单的匹配策略换成复杂的策略,那么一般情况下各种组件协同都可以实现。为了实现这个目标,我们将Linda模型中的元组采用键值对描述的方式,类似于XML文件中的数据定义。我们将通过在Linda模型中使用这种XML上下文,实现网络中组件的协同、通信和合作的功能。

在Linda模型中,使用XML实现结构化和语义匹配功能,目前已经可以处理Web服务的协同,我们主要采用JavaSpace技术,方便我们重写元组和使用元组空间。在JavaSpace的基础上,我们开发了一种基于Web的协同处理服务,主要实现以下几个目标:

(1)协同操作主要通过HTTP服务接口,使用XML数据格式描述交换消息;

(2)采用统一方法处理复杂模式匹配(包括语义模式和结构化模式);

(3)使用pushlet技术,实现一种基于事件的异步通信处理方式;

(4)通过创建内部的代理来代替外部的Web服务,并实现他们之间的协同。

2 Web服务协同处理模型

Web服务是一种独立的,模块化的应用程序,他可以被描述、发布和发现,并可以通过网络进行调用[2]。基于Web服务的协同处理模型必须包括以下几个必要元素:

(1)组件接口必须是基于Web的,并提供了信息收集的接口,该组件可以发布到网络中并可以被其他程序调用;

(2)必须提供一个统一的中间件用来处理数据交换,并保证互操作性;

(3)协同服务模型充当了信息收集的角色,将不同的组件信息收集起来。由于分布式应用程序环境的特殊性,必然需要创建一个服务来获取不同应用程序提供服务组件的相关信息。

在分布式计算环境中,每个Web服务可以看作一个独立的实体,他需要与其他Web服务进行通信和同步,或者通过互联网收集用户的请求信息[3]。许多Web服务使用不同的程序语言创建,并且运行在不用的环境中。但是,我们提出的基于Web服务的协同处理模型必须要面对这样的运行环境。

3 基于Web的协同服务模型(WCS)

我们采用一个基于Web的协同服务来实现Web服务的协同。基于Web的协同服务是一个基于互联网访问的应用软件,他提供一系列服务用来实现异构环境中Web服务之间的通信和同步,并提供了低耦合的Web服务个体或者一组通信服务。每个分布式应用程序,不管服务运行的硬件平台还是运行的操作系统、不同编程语言使用的编码方式还是中间件自身,必须保证在他们中间能够协同访问这些服务。我们采用互联网通用协议HTTP协议,并使用标准的数据传输格式XML文件。

基于Web协同服务主要分由3部分组成,如图1所示,它们分别担任的角色如下:

XML处理空间:这个组件基于JavaSpace技术开发,并封装在收集许多处理XML文档方法的交互空间中,通过提供的接口这个组件可以协同处理XML文档。除此之外,这些XML文档可以在执行时定义,我们扩展了Linda架构中结构化元组概念,将XML文档中创建一系列的键值对。这些XML文档作为一个Java对象存储在交互空间中。XML处理空间提供了比JavaSpace更灵活的处理方法。

Java协同组件:这个组件是基于Web的协同服务的核心,他提供了许多协同操作,他被分成两个不同接口:基础协同接口和高级协同接口。基础协同接口提供一系列简单的通信和同步操作,在阻塞调用的操作时必须等到操作完成或者同步环境已经实现。对于高级协同接口可以创建一些特定类型的事件,可以将这些事件发布出去并接受特定类型事件。

HTTP协同组件:这个组件充当了Web访问接口的角色,并分成两类不同的接口,HTTP基本协同接口和HTTP高级接口,与Java协同组件一样收集协同操作信息。这些描述协同操作的接口都是基于Web访问协议和通用数据格式来实现的。

4 模式匹配和语义消歧

根据Linda模型,执行in(X?)操作时,试图在元组空间内匹配元组X?,如果匹配成功,元组将从元组空间中分离出来,否则直到合适的元组出现[4]。对于in()操作的参数可以是一个带通配符的查询元组,像in[“zhang”, ??]。我们在这种方法基础上,如果将简单的匹配策略替换成一种复杂匹配,那么一般情况下各种协同处理都可以实现。为了实现这个目标,我们将Linda模型中的元组采用键值对的方式来描述,如[(author,”zhangsan”),(year,2007)]。尽管这里没有具体的类型设置,但是如果在不同约定下调用in()操作,有的“author”项并没有使用,使用了“creator”,如果在各个实体间提供合适的映射,那么请求[(creator, ??),(year,2007)]仍然可以成功调用。我们通过互联网和XML技术实现了语义匹配功能。

为了实现语义模式匹配,我们必须解决语境中的歧义,这可能是词汇中自然语言处理面临最大的问题,并可以应用于信息检索、机器翻译、语言组织和模式匹配。消除歧义问题的关键在于引起歧义单词在特殊环境下所处的语境,语境的变化取决于环境的变化。

目前有一些可用的解决方法主要依靠提供的歧义词汇,每个歧义词汇都会根据它所处的上下文环境提供了相应的注解。在此基础上,建立一个分类器能够正确的对词汇进行分类。另外,对于无监督多义词的方法,主要依赖于词汇资源或电子词典。

我们消除歧义的方法采用基于WordNet分层结构下无监督的消除歧义方法,WordNet根据词条的意义将它们分组,每一个具有相同意义的字条组称为一个同义词组,类似于投票系统,我们将采用从词库中取词,这些词汇按照树形节点组织,并保持了和其词义相近的词汇之间的关系,并在当前分支中确定一个和当前上下文中语境最接近的词汇。

基于XML的空间组件采用了JavaSpace技术,它提供了保存这些XML元组的控件,不需要重新开发一个新的XML元组空间[5]。然而,JavaSpaces匹配的规则不能采用这种结构化的对象,只是对象完全匹配,并不能匹配对象内具体的信息。这主要是由于对象序列化存储到空间,在进行比较时只是对对象值进行了相等运算。如果存在结构化的字段,那么它的值就是序列化后的对象。一般情况下,java对象被编码为使用XML元组节点来存储XML元组的结构字段,这个通用对象有两个结构化的字段来存储XML元组的键值。

因此,有必要增加JavaSpace的规则,允许匹配带结构字段的内容。为了解决规则的限制,将操作分成两个步骤:首先在使用原始模板时,将模板复制一份,并将复制的模板中元素对应的值设为空值,当JavaSpace接口使用这个模板执行一个读操作时,返回一个具有相同XML模式的XML元组对象作为模板,因为只通过标签名称字段进行匹配。其次,JavaSpace 接口调用一个特定的匹配方法检索对象,使用原始模板作为一个实参,这个方法检查模板中每个非空组件的值字段是否和返回对象中的值字段具有相同的值。如果相同,返回对象将匹配使用XML元组匹配规则的模板,检索的对象使用具有相同的XMLSchema 为模板,但它不匹配通过第二个匹配规则的XML 元组的模板。然后,再由第一步,直到通过XML的元组匹配规则检索到匹配对象。

如果标签名称字段或者标签值字段已经从词库中提取出来,将在第二个步骤中执行匹配操作,充分使用词汇和语义资源,如图2所示。像WordNet和我们提出的消除歧义方法,我们可以通过语义模式匹配丰富XML空间组件,重新检索基于结构化和语义相近的XML文档。

5 实例研究

我们将采用基于Web的协同服务来解决一些经典问题。我们将采用并行计算来解决经典的哲学家问题,如图3所示。

在我们的方法中,多个分布式的哲学家采用不同的编程语言,通过Http和XML技术在互联网上实现协同工作。当一个哲学家A加入时,此时进行请求的操作如:

http://.../CoordinationServlet?Request=

< xmlversion="1.0" > <CoordinationService>

<function>out</function>

<tuple>

<examplePhilosopher>

<chopstick>A</chopstick>

</examplePhilosopher>

</tuple>

</CoordinationService>

同时,将介绍他左边和右边对应的一些关系,当加入新的哲学家时他们都将使用新的关系代替原来的邻里关系,这个操作使用元组[(Left, ??),(Right, ??)]来实现。例如,关系[(Left,E),(Right,B)]。在恢复关系时,使用元组来描述,A在 E的左边,在E的右边,通过这些工具很容易描述整个过程。

此外,WCS的模式已经为解决现实问题提供了概念基础,基于位置的服务(LBS)的框架,其功能可以通过互联网被整合到任何终端中使用,像ERP和CRM。LBS框架需要整合地理信息服务,定位服务和通讯服务。要求服务必须符合Web的服务方式,并提供标准的规定和公开的接口,以确保互操作性[6]。

6 结束语

本文中我们提出了一种基于Web的协同服务,运行在创新通信模型的基础上的分布式环境中,并使用了Java技术和互联网技术,像HTTP和XML,并可以在独立的分布式中间件和面向服务架构的模型中。服务协同功能保证了时间和空间的低耦合,并实现了实体间的语义匹配。

参考文献

[1]N.Busi,R.Gorrieri,G.Zavattaro.Proccess Calculi for Coordination:Frame Linda to JavaSpaces[J].Lectures Notes in ComputerScience 1816(2000)198-212

[2]江红.XML在Web服务中的应用[D].武汉:武汉理工大学.2006

[3]汪维华,汪维富.基于Web服务的分布式计算模型研究[J].计算机工程与设计,20081,7

[4]E.MataJ,.A.BanaresJ,.Guti'errez,P.R.Muro-MedranoJ,.Rubio.Semantic disambiguation of thesaurus as a mechanism to fa-cilitate multilingual and thematic interoperability of geographical information catalogues[J.]in Proceedings 5th AGILE Conferenceon Geographic Information Science,Universitat Illes Balears(2002)61-66

[5]朱文华,王茜.基于JavaSpaces的分布式计算技术研究[J].2005-02

分布式异构数据 篇8

关键词:重用,遗产软件,软件工程

1 遗产系统重用

目前重用遗产软件的方法主要可以分为打包(Wrapping)和移植(Migration)两类。

根据打包的内容,打包方法一般可以分为基于用户界面的打包、基于数据的打包和基于功能的打包3种方法。基于用户界面的打包方法是根据遗产系统中的用户界面映射为新系统的用户界面。基于数据的打包方法是在遗产系统的数据结构的基础上来开发的,从而使得原有的数据可以应用到新的系统当中来。基于功能的打包方法在利用原有数据的同时还考虑了遗产系统中业务逻辑。

移植方法基本上可以分成基于组件的移植方法和基于系统的移植方法。前者是先把大型的遗产系统分解成独立的组件然后对组件进行个别地移植。在整个过程中必然有遗产系统与新的系统并存的一个过度时期,对待这个问题一般有两种策略即协同操作和并行运行。这两种策略都需要数据的共享,可以通过数据库网关、复制或者将独立的域划分成小的片段来逐渐移植等方式来实现,后者则是把整个遗产系统及数据移植到新的系统作为一个步骤。

国内外研究人员针对遗产软件重用进行了大量的研究,但这些研究工作往往针对某一特定领域,其应用范围也局限于特定的领域,各种方法体系之间难以统一,难以通用化,也难以形成适合企业各业务领域的一般性重用模型,更难适合分布异构环境下的遗产系统。同时,现有方法都没能提供一种以实现系统化的转换和集成分布异构遗产软件成为一个基于构件的系统的过程、技术和方法,同时多数方法都不能支持体系结构的演化。

2 Agent-Component(AC)

2.1 AC组合

Martin L.Griss在2001年撰写的两篇综述性论文中首先提出了Agent Component(AC)的概念,并且他认为AC能成为柔性、智能、基于Web的企业应用系统的基础,利用AC能加速软件开发并将成为下一代软件构件。近几年的研究表明,利用构件来开发Agent系统或MAS确实能提高AOSE的性能、质量和效率。但是最初的应用开发仅仅是将构件作为MAS中的一个模块或部件而已,没有形成系统化的方法和理论去指导更多的应用实践,更不能做到系统的动态、持续开发。为此,国外许多学者都提出了自己组合AC的理念和实践。

他们本质上都是针对如何加快软件Agent开发的问题,并没有从根本上解决Agent开发的效率和如何适应复杂软件系统开发的问题。同时大部分方法中都是通过打包或封装将Agent和构件合成一个整体,可能会破坏构件的内聚特性,从而影响构件的可重用性,而且现有AC组合方法根本不适宜于分布异构遗产软件的重用。此外,尽管基于Agent的软件开发已有许多成熟的开发模型和框架,但基于Agent的开发毕竟还缺乏成熟的开发工具的支持,现有组合AC方法把应用开发的主要任务放在基于Agent的开发上显然是不合适的。所以如何增加软件开发的柔性、动态性、适应性等仍是复杂软件开发关注的焦点问题。为此,2004年,Mercedes Amor等人在总结其他一些Agent与构件组合思想的基础上,大胆提出了通过连接子来实现Agent与构件的优势互补。该AC组合方法是基于构件的软件开发技术和关注点分离的思想,将A-gent分离为独立的实体,增强Agent实体对环境的适应能力及敏捷反映性,简化了开发Agent的复杂度,而Agent的功能由构件来提供。通过构件建模技术产生出一个新的实体———连接子。连接子依据通讯规则与协议协调构件与Agent之间的交互与协作。每一个Agent有可能同时参与多个会话,每一个会话将由连接子来控制与协调。这个连接子只需要一个包括描述状态机制、有效消息、交互动作的XML文档来实现。该方法还支持运行时的构件更新和替换,对我们遗产系统的重用有很强的指导意义。

2.2 AC组合实现

在基于构件组装风格的体系结构设计思想的指导下,充分发挥和利用构件和Agent各自的优势,并将其合理组合为Agent Component(AC)。Agent技术和构件技术有许多相似之处,组合Agent技术和构件技术各自的优势去创建未来更具柔性、可重用性和可定制性的AC能有效解决分布异构遗产软件的重用及大型复杂系统的开发问题。

采用Agent连接子来隐藏构件的特征信息,其作用类似于为每个构件建立一个专门的适配器(Adapter),而该适配器是由Agent来实现的,从而最大限度保持了原有构件的完整性和独立性,并做到语言中立和平台无关。而这样的Agent可以由Java虚拟机(JVM)技术来实现。不可否认,在对分布异构遗产软件重用时难免会对原系统的功能做适度的扩充(如智能性、自主性等),功能扩充可以通过新设计一个Agent或从现有标准构件或COTS构件来实现并通过Agent连接子进行连接。这样原构件的功能就表现为AC所具备的一种服务能力。再采用合适的Multi-Agent结构和方法将各Agent连接子组合成相应的MAS或Agents联邦,且各联邦成员实现区域自治。如此组合的AC从逻辑上看是联合一体的,而从形式上看则是游离的。这样的AC同时具备了Agent和构件的双重特征,具体表现在系统设计部署、组装时以构件为起点,而在实现及运行时则以Agent为起点。如此组合的AC能够克服现有方法中的诸多缺陷,真正做到柔性、自适应、动态、可扩展。而且,当我们将这样的AC发布到一个Internet环境中时,可以有效提高构件的重用、共享程度。

基于AC的分布异构遗产软件重用方法包括下面4个基本过程:

(1)对非构件化的分布异构遗产软件实施类似于标准构件或COTS构件的构件化处理,从而为基于构件的组装打下基础。

(2)通过一个连接子(Agent连接子)将一个构件和一个Agent合理组合为一个AC。并通过Agent连接子来隐藏构件的外部接口、内部规约及接入点等信息,取而代之的是该AC所具备的服务能力及通信能力。从而使构件和连接子既有逻辑上的对应关系,又有形式上的分离。

(3)对由(2)中生成的AC进行系统部署、组装,其组装方法类同于(2),所不同的是此时的Agent连接子连接的可能是一组具有某种服务功能的AC组合,而不再是单个的构件和Agent。

(4)各Agent连接子自然构成Multi-Agent的工作环境,并可形成相应的MAS,必要时也可形成Agents联邦,来实现分布异构环境(如Internet)下遗产软件的重用。

2.3 小结

目前的多数软件系统是由具有不同特征的构件装配而来,所以软件体系结构(SA)通常被公认为软件系统设计的一个至关重要的部分。SA是设计解答的支柱,它有功能需求,同时也有质量需求。SA的应用实现也是基于构件的思想,它从系统的总体结构入手,将系统分解为构件和构件之间的交互关系,可以在高层抽象上指导和验证构件组装过程,提供一种自顶向下、基于构件的复用途径。所以,基于AC的分布异构遗产软件重用方法具有若干好处:(1)部署和设计重用遗产系统可以由选择和装配合适的遗产构件来实现;(2)遗产构件组装和各Agent之间的交互,标准的构件部件技术和支持协议都有了保证;(3)开发者可以不熟悉Agent的概念和符号。通过选择合适的AC来满足他们应用功能的描述,这将使得Agent技术更容易被吸收到当今的软件工程实践中。

3 应用实例

图1给出了一个教务系统中选课子系统重用的AC模型,该子系统主要包括学生选课(Course Choosing)、课程安排(Course Scheduling)以及教师测评(Teacher Evaluation)3大模块。

从所示模型可以清楚的看出,分布异构遗产软件的重用过程实际上是一个不断组合生成AC的过程,而这样组合而成的AC是松散耦合的,且具有构件和Agent的双重特征。其组合过程中无需对原有构件做任何更改。这样组合的AC是能同时提供服务描述及服务的构件,是可被重用和定制,是语言中立、独立实现的软件服务包,提交在一个封装的可替换的容器内,经由一个或多个发布接口来存取,并且不受平台的约束和应用的限制,AC具有自治性、反应性、主动性和社会能力。

4 结束语

本文提出了基于AC的分布异构遗产软件重用的系统化的方法、过程和实现思想,并将其应用范围自然扩展到Internet环境下的分布异构遗产软件。对软件工程及遗产软件的重用具有重要的学术研究和应用实践价值。Agent技术和构件技术有许多相似之处,组合Agent技术和构件技术各自的优势,创建未来更具柔性、可重用性和可定制性的AC,将为有效地解决遗产软件的重用尤其是大型复杂系统的开发问题提供新的思路和途径。如何利用AC来探索一种真正有效且高效、通用且易于实现的分布异构遗产重用的技术和方法,增加软件开发的柔性、动态性、适应性将是我们今后研究和工作的重点。

参考文献

[1]陆波,赵合计.遗产软件的重构过程[J].计算机工程与科学,2004(6).

[2]COMELLA-DORDA S,WALLNAU K,SEACORD RC,ROBERTJ.A Survey of Legacy System Modernization Approaches[R].Report CMU/SEI-2000-TN-003,April 2000,Software Engineering Institute,Carnegie Mellon University,Pittsburgh,PA 15213.

[3]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J],电子学报,1999(2).

[4]马晓星,Internet软件协同技术研究[D].南京:南京大学,2003.

[5]M.GRISS.Software agents as next-generation software components[J].Component-Based Software Engineering:Putting the Pieces Together.In:G.Heineman and W.Council eds.Addison Wesley Longman,Reading,Mass,2001.

[6]MARTIN L.GRISS,GILDA POUR.Accelerating development with agent components[J].computer,2001(5).

[7]MERCEDES AMOR,LIDIA FUENTES FERN?NDEZ,LAW-RENCE MANDOW.Building Software Agents from Software Components[C].CAEPIA-TTIA 2003,LNAI 3040,pp:221-230,2004.

上一篇:现场报道和特殊报道下一篇:低产油田