基于XML的多源异构数据整合系统的制作方法

文档序号:18192988发布日期:2019-07-17 05:40阅读:674来源:国知局
本发明属于大数据整合
技术领域
:,涉及一种基于xml的多源异构数据整合系统。
背景技术
::在信息量快速增长的今天,处理分布式数据成为研究的热点。其中,异构数据的集成是分布式平台发展的关键技术,此技术的应用给企业节约了成本和提高了生产效率。目前,大多数的研究都集中在海量数据集成的研究上,数据集成框架主要是针对分布式复杂系统,技术实现复杂,而针对一些业务较为简单,数据量不是很大的系统,数据集成技术研究则较少。现有研发技术往往存在以下不足:没有尽可能多的兼容不同分布形式或不同物理平台的数据源,后期扩展性差;无法对现有的数据提供必要的安全保护策略;不能对外提供适当的api;缺乏独立性。技术实现要素:本发明目的在于提供一种基于xml的多源异构数据整合系统,针对数据仓库和联邦数据库解决数据集成的复杂性和成本过高的特点,引入java语言的跨平台性及xmlschema语言能支持用户对数据类型进行扩展的特性,有效地屏蔽了分布式数据源平台的差异,实现了分布式数据源的描述及分布式数据的整合。为解决上述技术问题,本发明采用如下的技术方案:一种基于xml的多源异构数据整合系统,该系统包括:应用服务层、数据服务接口层、数据源集成层以及数据库系统层;其中,所述应用服务层通过所述数据服务接口层所提供的接口实现不同用户应用的扩展;所述数据服务接口层实现与所述数据源集成层的实时交互操作及反馈结果数据的获取,并对外提供适当的api;所述数据源集成层用于屏蔽分布式数据源采集操作的具体实现细节,以及响应所述数据服务接口层提出的操作请求;所述数据库系统层实际由物理位置相邻或不相邻的若干关系型数据库组成,用以提供系统所需的多源异构数据信息。进一步地,所述数据服务接口层选择java作为其实现平台,利用javarmi框架封装底层的socket操作实现分布式端和全局端通信。进一步地,所述数据源集成层包含数据源自主注册、数据源对象及其物理位置描述的schema设计、全局数据的schema设计与数据服务几个功能。本发明与现有技术相比具有以下的有益效果:本发明方案针对数据仓库和联邦数据库解决数据集成的复杂性和成本过高的特点,引入java语言的跨平台性及xmlschema语言能支持用户对数据类型进行扩展的特性,屏蔽了分布式数据源平台的差异,实现了分布式数据源的描述及分布式数据的整合。附图说明图1是基于xml的多源异构数据整合系统的整体框架图。具体实施方式下面结合附图及具体实施例对本发明进行更加详细与完整的说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。参照图1,本发明的一种基于xml的多源异构数据整合系统,该系统包括:应用服务层、数据服务接口层、数据源集成层以及数据库系统层;其中,所述应用服务层通过所述数据服务接口层所提供的接口实现不同用户应用的扩展;所述数据服务接口层实现与所述数据源集成层的实时交互操作及反馈结果数据的获取,并对外提供适当的api;所述数据源集成层用于屏蔽分布式数据源采集操作的具体实现细节,以及响应所述数据服务接口层提出的操作请求;所述数据库系统层实际由物理位置相邻或不相邻的若干关系型数据库组成,用以提供系统所需的多源异构数据信息。数据集成框架的重点是数据集成层和数据服务接口层。其中,数据集成层包括数据源的自主注册,数据源对象和数据源物理位置描述schema设计、全局数据schema设计和数据服务;而数据服务接口层采用java中的远程方法调用(remotemethodinvocation,rmi)技术,创建远程方法调用。本发明的技术路线是采用xmlschema方法描述分布式数据源对象和全局数据对象,利用标准的dom操作解析xml,使用javarmi技术实现数据源对象的自主注册。1、数据集成设计1)数据源注册数据集成的重点在于如何屏蔽分布式数据源的物理位置,屏蔽具体的实现细节使调用者可以不关心底层的数据实现,但能在需要时获得相应的数据服务。数据源注册方式的选择要满足数据源信息可变性的要求,即当某一个数据源发生更改或者某一个数据源发生故障无法向外界提供数据服务,应及时通知服务中心。针对这个问题,为了提高数据集成的灵活性和可扩展性,本发明采用分布式数据源自主注册的方式,分布式数据源端对自己的数据服务进行自主注册,当数据源信息发生更改时,随时修改自己的注册信息,以便在全局描述中获得数据源的实时信息。这种方法不仅屏蔽了分布式数据源的差异性,而且还方便进行统一的差错控制,降低了由于分布式数据源的意外对整个应用的影响。2)分布式数据源的描述为了屏蔽分布式数据源的底层细节,以及数据源对象本身和物理位置的可变更性,数据源信息不能直接通过编码实现应用。在现代的企业级数据源中,绝大多数都是关系型数据库,例如,oracle、mysql、sqlserver等。不同的数据库系统实现细节有差异,且有的数据存储在非数据库的数据源中,例如存储在excel等其他数据源中,上述差异性就要求描述文件时尽可能地屏蔽不同数据存储的实现细节。结合关系型理论,本发明采用xmlschema技术描述分布式数据源的信息,以及描述数据源对象的具体信息,包括数据库、数据库表信息等,其schema如下所示:数据源对象信息schema完成之后,还需要设计描述分布式数据源物理位置的schema,辨别不同的数据源的物理位置的方式是数据源的ip地址。其schema如下所示:3)全局数据对象建立根据数据集成的物理集成技术和虚拟集成技术,本发明采用虚拟集成方式,定义一个全局数据对象来实现全局模式的查询。根据关系型数据库理论,设计其全局数据对象schema如下所示:4)查询请求的接收和语义表达查询请求的难点在于如何表达查询请求的语义问题,在关系型数据库的使用中,sql语句是实现数据查询的重要方式。因此本发明采用扩展sql语句,设计一种“类sql”的语言来表达查询语义。针对查询,只需要扩展select语句。在sql中select的表达为selectfieldname1,filename2fromtablenamewherewherecaluse,其中from后面跟的是数据表名,where子句描述的是字段的限制信息。由于在数据集成的设计中数据源的底层细节被屏蔽,所以sql中from子句不适合描述全局对象的查询语义,且where子句的信息匹配需要额外的数据结构来存储这些匹配信息,其解析难度比较大,涉及一个词法的分析过程。针对以上select和where语法的分析,本发明的设计不采用where子句的形式,直接将限制信息添加在需要查询的字段名后面的查询方法。为了解析的便捷将这些限制条件摆放在括号中,其改造之后的“类sql”语句的形式变成了selectfieldname1(限制条件),fieldname2(限制条件)。接下来的重点是完成一个解析器解析创造出来的“类sql”语句,由于选择操作的关键字始终是select,但在对外提供接口时不要求调用者提供select关键字。为了方便解析,对外提供调用接口时将形参设置为arraylist<string>类型,进一步减少为了分析空格之类的无关紧要的字符而造成的代码冗余。解析器将字段和限定信息全部处理完成之后要确定相应的字段在哪个具体的数据表中,为了保存解析的结果不被同名的字段名覆盖,参考命名空间的相关理论,设计如下数据结构:hashmap<string,hashmap<string,hashmap<string,arraylist<string>>>>从外向内依次存储的是位置信息(ip)→数据源名称→数据表名称→数据字段名称,形成一个类似于命名空间的信息存储层次,避免上述的数据字段同名的情况。查询器的任务是根据上述数据结构调用远程端分布式的数据服务获得需要的数据。在查询器的设计中,考虑到分布式数据源的差异性,将具体的实现方案交给分布式数据端实现。如果接收查询结果的数据结构与分布式端一致,在存储多个分布式端的查询结果时,使用的数据结构是arraylsit。5)数据服务接口由于java具有先天性的跨平台优势,本发明选择java作为其实现平台,利用javarmi框架封装底层的socket操作实现分布式端和全局端通信。创建rmi远程方法调用的重点是定义远程方法的接口,该接口中的每一个方法必须声明它将产生一个remoteexception异常。接下来的工作是设计分布式端和设计全局端的接口和实现这些接口。其分布式端的接口设计如下所示:packagecom.zhanglei.distribution.adapter;publicinterfaceidatabaseextendsremote{publicarraylist<string>gettables()throwsremoteexception;publicarraylist<hashmap<string,string>>getfields()throwsremoteexception;publicarraylist<integer>getnumbers()throwsremoteexception;publicarraylist<string>getdatabasenames()throwsremoteexception;publicstringgetdatabasecatagory()throwsremoteexception;}以上接口是对数据源进行抽象,还需要一个开启存储工具操作的接口,这个接口设计成一个空接口,起到标识的作用。全局端数据服务接口设计如下所示:该接口中需要说明的是getrows()方法,该方法返回值是arraylist<arraylist<object>>类型,表示将每一个数据行并且该行中每一个数据列都视为object类型,这样做的理由是考虑到不同的数据列具有不同的类型,设计为object类型之后可以屏蔽类型差异性。2、数据集成实现设计分布式端和全局端的数据服务接口后,再设计一个注册的类,以实现分布式数据源的自主注册。其中,dowithexception是全局的异常处理类,databaseserver类是基于控制台的,实现分布式数据源对象的描述和自主注册问题。全局端的工作分为处理分布式数据源对象和接收查询操作。处理分布式数据源对象的步骤为:1)解析分布式数据源的物理位置信息;2)根据这些信息结合rmi框架建立全局数据对象;3)根据上文提到的schema将全局数据对象持久化到xml文件中。设计的解析类内容如下:这个类中有一个获得属性配置文件的map数据,允许用户随意存放分布式数据源的描述信息,增加灵活性。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1