0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于XML异构数据集成系统访问中间件设计的解决方案

电子设计 来源:郭婷 2019-05-09 08:17 次阅读

随着信息化建设的不断深入,不少企业与组织建立了各种应用系统。由于这些系统是在不同阶段开发的,每个系统都有自己的运行环境和数据存储方式,这些数据的格式不统一,各个应用系统彼此封闭,数据难以交换和共享。利用中间件(Middleware)技术集成各种异构数据时,不用改变原始数据的存储和管理方式,可集中为异构数据源提供一个统一的高层检索服务,是实现异构数据集成的理想解决方案。

异构数据访问中间件系统的核心就是要解决异构数据源的分布性、自制性和异构性。随着分布式计算技术(如CORBA、XML等)的迅猛发展,使得原来的系统可以通过它们进行封装,隐藏内部结构,采用公共数据模型将局部共享数据进行封装,对外提供公共访问接口。异构数据系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DBMS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。

1 XML全局数据模式

异构数据访问中间件必须提供一种全局数据模式来统一异构源数据模式。异构数据集成的全局模式必须满足:①能够描述各种数据格式,无论其为结构化还是半结构化,无论它是支持所有的查询语言还是简单的文本查询;②易于发布和进行数据交换,集成后的数据可以方便地以多种格式发布和便于应用交换数据。

早期异构数据的集成系统通常采用关系或对象的数据模式作为全局模式。然而,它们并不能满足网络时代的Intranet/Internet应用所提出的高标准。随着可扩展标记语言XML及其相关技术的发展,XML不仅成为了应用间交换数据的一种标准,也是万维网重要的信息交换标准和表示技术之一。XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

XML是一种具有很强的数据描述能力的标记语言,它第一次提供了一种信息交换模式,此格式是可编辑、易理解并且可表示任何类型的结构化或半结构化的信息。XML 提供了丰富的数据构造和解析方法,能够适应多样并且不断变化的网络应用环境,被广泛用于异构系统间的数据交换和互操作应用中。XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:它极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。

2 系统框架

中间件是一种支持分布式应用的重要组件,它是一种独立的系统软件和服务程序。分布式应用借助中间件在不同的技术间共享资源,为应用提供统一的编程模型,处理异构、分布问题和管理计算资源及网络通信

大多数基于 XML 的数据集成系统框架采用Mediator/Wrapper架构,该架构的缺点是查询效率不高。这是由于底层数据源的数据结构、数据模式、存储方法、查询能力差别很大。数据访问中间件的设计是非常复杂的,包装器同时要兼顾数据转换、数据清洗等任务,并且这还仅是在查询时触发的处理。

基于XML的异构数据访问中间件模型XHDAM的系统结构如图1所示。XHDAM从分布式对象操作和异构数据集成二个方面解决系统互操作问题。首先,XHDAM基于CORBA技术,CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或者说 CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案;OMG组织是一个国际性的非盈利组织,其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或者说 CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案;OMG组织是一个国际性的非盈利组织,其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。通过CORBA提供的ORB(Object Request Broker)实现分布计算环境中对象操作支持,使不同的应用系统能够方便地与XHDAM交互,达到不同应用系统之间交互的目的,从而实现系统的透明性。

基于XML异构数据集成系统访问中间件设计的解决方案

(1)客户端:向CORBA服务器发出访问请求。客户端只提供统一的访问界面,不处理业务逻辑关系和集成管理任务。

(2)CORBA公共服务:提供CORBA的标准服务,包括名字服务、事件服务、安全服务等。

(3)查询处理器:当客户请求时,分解全局查询到局部查询;当查询结束时,负责将局部查询结果汇总返回给客户端。另外还负责局部查询的优化,提高查询效率。

(4)目录服务:是XML存储库的一个摘要,包含XML存储库的静态和动态信息。XML数据目录服务可以自动、智能地建立目录服务,并对信息自动搜索、自动分类、自动传输。

(5)事务服务:负责全局模式和局部模式之间的集成与分解关系,如全局事务到局部子事务的处理,全局查询到局部子查询的处理。

(6)包装器:是一种目的语言资料类型的物件,可包装语言的物件。当在 JavaScript 中设计程式的时候,你可以使用包装器物件存取 Java 物件的方法和栏位;呼叫或存取包装器里的方法或属性,用以在 Java 物件上产生呼叫。对 Java 而言,JavaScript 物件是被包装在类别为JSObject 的实体之中,并传送给 Java。当 JavaScript 物件传送给 Java 的时候,执行时期引撉会建立类型为 JSObject 的 Java 包装器;当 JSObject 从 Java 传送到 JavaScript 的时候,执行时期引撉会解开包装,还原为原本的 JavaScript 物件类型。JSObject 类别提供了可呼叫 JavaScript 方法和检查 JavaScript 属性的介面。负责解决异构数据源的包装问题,将分散在各处的数据源按照XML模板进行包装。开始,包装器一次性将数据源中的所有数据转换到存储库中。当有新数据源追加到源数据库时,就通过触发器触发包装程序将源数据库中的新数据包装成XML数据加入存储库。客户端对数据的访问是通过查询处理器访问XML存储库实现的。

3 XML模板和包装器的设计与实现

为了提供对XML 的支持,各大数据库厂商纷纷对各自的数据库产品进行了扩展,提供了基于模板的查询。但各数据库管理系统支持的查询模板语法差异很大,不能互用。因此,访问多个异构数据源时需要为不同类型的数据库提供多个符合其相应语法的模板文件,这就增加了项目开发的复杂度。

3.1 XTemplate模板设计

XTemplate是一个适用于PHP的模板引擎。它允许把HTML代码与PHP代码分开存储。XTemplate包含了许多有用的功能。比如:嵌套的程序块,各种类型的插值变量。其代码非常简洁并且是优化的。Xtemplate是sugarCRM使用的模版技术,使用起来相对简单。XTemplate使用了多种标签和特殊操作符支持模板,使得模板在应付复杂的数据结构时尤为健壮。这里所列出概括的几项功能,欲了解完整的细节和使用方法,请参阅XTemplate API文档。自动数组填充和作用域切换,可在子模板作用域内访问父级对象,可访问数组索引,支持数据值的简单匹配,自动渲染浮点型数组(不包含非对象的值),可执行模板中直接写好的任意语句,支持模板的配置属性,可通过配置项对象自定义模板方法,可用于服务端的JavaScript模板。

为了访问不同的数据源,需要在模板文件中定义数据源的连接属性。其中:数据库连接属性包括servernAME、dbparm、database、logid、logpass、autocommit;代码SQL语句属性为xviewsqlcode;视图名称属性为xviewname;视图SQL语句属性为xviewsql。表达式中的Eq和Attvalue含义分别来自XML元语言[xml25]和[xml10]。

[1]ServernameAttr∷=′xviewsqlcode′ Eq AttValue

[2]DbparmAttrr∷=′xviewsqlcode′ Eq AttValue

[3]DatabaseAttr∷=′xviewsqlcode′ Eq AttValue

[4]LogidAttr∷=′xviewsqlcode′ Eq AttValue

[5]LogpassAttr∷=′xviewsqlcode′ Eq AttValue

[6]AutocommitAttr∷=′xviewsqlcode′ Eq AttValue

[7]XviewnameAttr∷=′xviewname′ Eq AttValue

[8]XviewsqlAttr∷=′xviewsql′ Eq AttValue

[9]XviewsqlcodeAttr∷=′xviewsqlcode′ Eq AttValue

XTemplate 对XML元语言中的起始标签Stag[xml40]作了如下扩展,其中Name、S、Attribute分别来自[xml15]、[xml3]和[xml41]:

Stag∷=′<′ Name (S XviewnameAttr | S XviewsqlAttr | S XviewsqlcodeAttr | S Attribute)*? ′>′

最后,XTemplate 模板文件定义如下,其中prolog、element分别来自[xml39]和[xml22]:

xtemplatefile∷=prolog ′ [element] ′′

使用XTemplate定义的模板文件是格式正确(Well-formed)的XML文档,且具有根元素,可用来提供数据源连接参数servername、dbms、dbparm、database、logid、logpass、autocommit。

具有xviewname属性和xviewsql属性的子元素称为视图模板元素,因为其提供了表征数据集的名称和SQL语句的二个属性。xviewname属性提供视图名称,xviewsql属性提供视图SELECT语句。SELECT语句中可以用:p_xviewname:p_columnname的形式传递父视图的列名给子视图,以反映视图间的连接关系。

如果子元素和属性的值对应于数据源中的列名,且需要在解析执行时用检索结果动态替换,则称其为列元素和列属性。列元素可以用xviewsqlcode 属性指定以实际值替换代码值。

一个使用XTemplate 定义的模板文件涉及的关系如表1所示。

基于XML异构数据集成系统访问中间件设计的解决方案

基于表1,使用XTemplate 定义的一个模板文件如下:

oracle;UID=scott;PWD=tiger′″>

<员工列表>

<员工 xviewname=″员工″ xviewsql=″SELECT ENO,ENAME,SAL FROM  WHERE ENO=′E1′ or ENO=′E2′″>

<编号>ENO

<姓名>ENAME

<薪水>SAL

使用XTemplate解析程序处理上述模板返回XML文档如下:

<员工列表>

<员工 员工序号=″1″>

<编号>E1

<姓名>J.Doe

<薪水>4000

<员工 员工序号=″2″>

<编号>E2

<姓名>M.Smith

<薪水>3400

使用XTemplate书写的模板文件独立于具体的数据库管理系统,无需数据库管理系统内置的功能模块解析执行,而是由独立于具体数据库管理系统的软件模块解析执行并返回XML查询结果。

XTemplate定义模板文件可以使没有内置XML查询功能的数据库管理系统获得对XML查询的支持。采用XTemplate之后,结构化的数据源需要解释执行的是XTemplate 解析执行软件传递来的SQL语句,这是结构化的数据源通常会提供的标准功能。

3.2 包装器的设计与实现

XML包装器是整个模型中的重要组成部分,它将异构的数据源按照统一的数据模型进行包装,在客户端对数据的访问都是针对统一的数据模型标准。包装器结构如图2所示。

XML包装器是一个模板文件解析程序,只要传入不同的模板文件即可生成对应的XML文档。包装器工作过程如下:从传来的模板文件建立DOM对象,取得数据库的连接属性,进而连接数据库;从XTemplate模板文件的xviewsql属性获得SELECT语句,在数据库表或视图中执行此查询语句,建立视图数据集;将数据集中的相关数据代入。XML即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。关键解析算法如下:

//predealdom方法建立视图,复制建立的所有元素

Void predealdom(domobject& root) {

//视图模板元素指有xviewsql属性的元素

If (root 不是视图模板元素){

对root所有子元素递归调用predealdom;

}

else {

视图序号增加;

为root添加xviewindex属性,值为当前视图序号;

从xviewsql属性获得视图SELECT语句;

if (SELECT语句中有参数){

查找相应祖先视图取得实际值代入;

}

根据SELECT 语句建立视图数据集;

if (不能创建视图数据集){

errmsg=″xviewsql属性值不是合法的SELECT语句″

return

}

else {

int RowCount=视图数据集行数;

//复制当前节点RowCount

for (int row=1;row

复制root节点加入DOM;//DOM为模板对象

添加xviewindex和xviewrow属性;

}

对root的所有子元素递归调用predealdom

}

}

//dealdom方法将列元素与列属性替换为实际值

Void dealdom(domobject& root) {

If (root 有 xviewindex属性){

Int index=root元素的xviewindex属性值;

}

int row=root元素的xviewrow属性值;

int AttrNums=root属性数目;

int ElemNums=root子元素数目;

for (int i=0;i

取得root元素第i个属性a[i];

if (a[i]是列属性){

查找编号为xviewindex的视图数据集的row行取得实际值替换;

}

}

for (int j=0;j< ElemNums;j++){

取得root元素第j个属性e[j];

if (e[j]是列元素){

查找编号为index的视图数据集的row行取得实际值替换;

if (e[i]有xviewcodesql属性{

根据代码SQL语句取得实际值代替代码值;

}

}

}

对root的所有子元素递归调用dealdom

}

行业标记语言用于校验生成的XML文档是否合法。如果合法,则允许存入XML存储库中;否则应当修改对应的模板文件。

初始建立XML存储库时,一次性将所有历史数据转换装入XML存储库。之后,有数据更新时触发转换操作,将相应的XML文档加入到XML存储库中。

对于企业应用来说,访问各种异构数据源是企业内部发展的需要,也是企业信息化建设的要求。本文提出的基于XML异构数据访问中间件解决方案通过预先实现关系数据库到XML数据的转换,加快了访问速度。最后,给出包装器和XML模板的详细设计和说明。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6504

    浏览量

    87446
  • 存储
    +关注

    关注

    12

    文章

    3824

    浏览量

    84589
  • HTML
    +关注

    关注

    0

    文章

    273

    浏览量

    29247
收藏 人收藏

    评论

    相关推荐

    EDMS中间件集成的未来趋势和探讨

    在高级驾驶辅助系统 (ADAS)和自动驾驶 (AD)的背景下,为开发人员提供了创建高性能和高安全性应用程序所需的工具、运行时环境和集成能力。 图1 EDMS确定性中间件解决方案概览 一
    的头像 发表于 09-28 10:03 1391次阅读
    EDMS<b class='flag-5'>中间件</b><b class='flag-5'>集成</b>的未来趋势和探讨

    什么是DDS(数据分发服务)?#软件中间件

    中间件DDS
    北汇信息POLELINK
    发布于 :2023年06月05日 14:50:13

    基于SOA的数字电视中间件系统的研究与实现

    基于SOA的数字电视中间件系统的研究与实现针对数字电视制播系统应用集成时存在的异构问题.对数字电视中间件
    发表于 10-06 10:03

    基于安防中间件的安防软件集成平台的研究

    与转发服务、设备管理与控制服务、数据存储与访问服务、用户与权限管理服务、系统运行监控服务、系统维护与管理服务。任务引擎中间件:任务引擎
    发表于 10-15 14:08

    基于安防中间件的安防软件集成平台的研究

    与转发服务、设备管理与控制服务、数据存储与访问服务、用户与权限管理服务、系统运行监控服务、系统维护与管理服务。任务引擎中间件:任务引擎
    发表于 10-22 09:56

    手机中间件

    国内外现在有什么比较成熟的手机中间件平台吗? 求技术介绍。
    发表于 05-29 17:34

    基于面向服务体系架构的RFID中间件集成应用方案

    耦合度高,对业务变化的适应性差。这使得企业对于实施RFID技术持谨慎的态度。RFID中间件的推出会有助于RFID设备与企业后台系统集成。但目前中间件主要关心的是
    发表于 07-12 07:35

    将集群技术引入到RFID中间件的设计讨论

    和SAP 系统。在整合RFID 中间件和ERP 系统时,我们遇到了很多挑战。对于大多数的ERP 系统,高可靠性、高可用性、高扩展性、高性能是至关重要的,因此在RFID
    发表于 07-25 06:22

    基于ARM的RFID中间件系统该怎么设计?

    RFID中间件在RFID读写器和应用程序之间起桥梁作用。应用程序端使用中间件所提供一组通用的应用程序接口(API),即能连到RFID读写器,采集RFID标签数据。即使存储RFID标签情报的数据
    发表于 10-09 08:12

    请问怎样去设计RFID的中间件

    无线射频识别(RFID)技术是什么?怎样去设计RFID的中间件?RFID中间件的功能及实现原理是什么?
    发表于 05-18 06:11

    怎么实现基于NFC手机的RFID中间件的设计?

    本文就一种基于 NFC手机的RFID中间件进行研究与实现,将RFID 中间件技术与移动互联网相结合,弥补了传统RFID 中间件的不足之处,并且符合当前发展趋势。
    发表于 05-21 06:02

    集团型企业异构系统中间件集成方案

    集团型企业的分布式异构IT 系统需要全局集成方案,文章提出一种基于SOA 架构的Web 服务中间件平台架构,提供统一的数据/业务
    发表于 08-27 09:28 5次下载

    基于XML的信息集成研究

    异构数据集成系统的目的是提供一个访问异构数据源的统一
    发表于 01-09 11:16 11次下载

    基于中间件技术的异构机器人系统设计及实现

    基于中间件技术的异构机器人系统设计及实现:基于C++CORBA中间件的技术规范和具体应用,对异构机器人
    发表于 03-18 16:23 17次下载

    oracle数据中间件有哪些

    Oracle数据中间件是指由Oracle公司开发和提供的一系列软件产品,用于构建、部署和管理企业级应用。它提供了一套完整的解决方案,包括数据库管理、应用服务器、
    的头像 发表于 12-05 16:17 498次阅读