一种基于虚拟表的异构数据集成系统设计方法

文档序号:26758454发布日期:2021-09-25 04:58阅读:76来源:国知局
一种基于虚拟表的异构数据集成系统设计方法

1.本发明涉及一种基于虚拟表的异构数据集成系统设计方法,属于多源异构数据集成技术领域。


背景技术:

2.随着计算机网络的普及、数据资源的共享已经成为一个热门话题。很多企业需要将dbms、mis、oa数据集成起来,构成企业的管理决策的网络信息平台。
[0003]“新基建”成为近期热议的关注焦点,大数据、人工智能、工业互联网等新兴技术或概念进入加速发展及应用阶段。新基建为企业面向高质量发展提供了数字转型、智能升级、融合创新等服务。企业如何利用新一代技术实现企业自身的数字化、智能化转型至关重要。
[0004]
企业通常由不同部门组成,各部门通常负责不同的业务,每个部门产生的数据信息通常存储在每个部门自身数据库中。然而,对于大多数业务部门,其往往没有数据处理或分析的功能,历史产生的大量数据不能够有效利用。此外,企业决策者往往需要及时掌握各个部门的信息才能够清晰地了解企业自身发展状况,从而制定出最佳的决定,而各部门之间的信息交互在传递时往往出现滞后或差错,这不利于决策者及时掌握企业的第一手资料。
[0005]
因此,企业方在数字经济时代,希望能够利用新兴技术打破部门之间信息壁垒;实现数据互联互通、快速集成各部门数据,实现数据的统一管理;利用集成平台上的数据,结合大数据、人工智能等技术挖掘价值信息。


技术实现要素:

[0006]
本发明提供了一种基于虚拟表的异构数据集成系统设计方法,能够解决背景技术中披露的问题。
[0007]
为了解决上诉技术问题,本发明所采用的技术方案一共包含数据源接入、映射关系配置、反映射关系配置、全局sql语句分解、同表子sql语句合并、子sql查询、子结果集合并、真实字段到虚拟字段替换。
[0008]
数据源接入:数据源是本系统所要集成的异构数据源,可以为mysql、sqlserver等关系型数据库。
[0009]
映射关系配置:在本系统中,用于面向用户的字段称为虚拟字段,用于面向用户的表称为虚拟表;数据源中真实存在的字段称为真实字段,数据源中真实存在的表称为真实表。映射关系配置,就是对于一个虚拟字段,需要配置好该虚拟字段到多个数据库实体中某个字段的映射关系。
[0010]
反映射关系配置:反映射关系配置就是需要以键值对的形式记录每个虚拟字段到真实字段的映射关系。
[0011]
全局sql语句分解:对于一个含有虚拟字段、虚拟表的sql语句,需要使用sql解析器将其查询的虚拟字段、虚拟表和查询条件提取出来。然后根据预先配置好的映射关系将
其转化为对数据库中真实字段的多个子sql查询。
[0012]
同表子sql语句合并:考虑到多个子sql可能是对同一个数据库进行查询处理,而为了减少对同一个数据库的多次访问,需要将对同一个数据库的访问合并成一个sql进行访问,从而能够降低数据库的访问压力。
[0013]
子sql查询:获取数据库连接,然后执行sql语句得到查询结果集。
[0014]
子结果集合并:由于一个全局sql在查询的时候被分解成多个子sql,所以在子sql查询后,需要将多个子sql查询结果集合并。
[0015]
真实字段到虚拟字段替换:对于用户来说,数据库中每个字段所代表的含义是透明的。用户只知道每个虚拟字段所代表的含义,所以需要将数据库中真实的字段通过反映射转化为用户熟悉的虚拟字段。
附图说明
[0016]
图1为整个异构数据集成系统的执行流程
[0017]
图2为全局sql语句查询分解和同表子sql语句合并流程
[0018]
图3为子结果集合并流程
具体实施方式
[0019]
下面结合附图对本发明作进一步描述。以下实施例子仅用于更加清楚地说明本发明的方案,而不能以此来限制本发明的保护范围。
[0020]
如图1所示,一种基于虚拟表的异构数据集成系统设计方法,包括以下步骤:
[0021]
步骤1:数据源接入,数据源可以为mysql也可以sqlserver等关系型数据库。
[0022]
数据源接入可以采用自动配置方式接入也可以采用界面手动方式输入。采用自动配置方式时,需要将数据源接入信息写入数据源配置文件db.xml中。
[0023]
其格式为:
[0024]
<?xml version="1.0"encoding="utf

8"?>
[0025]
<databases>
[0026]
<database>
[0027]
<type>mysql</type>
[0028]
<ip>0.0.0.0</ip>
[0029]
<port>3306</port>
[0030]
<username>xxx</username>
[0031]
<password>xxx</password>
[0032]
<name>xxx</name>
[0033]
<alias>xxx</alias>
[0034]
</database>
[0035]
</databases>
[0036]
对于接入的每个数据源,都需要一个16字符长度的标识符来唯一标识。定义:uuid=md5(type+ip+port+username+database).tostring(16)为每个数据源的唯一标识符。
[0037]
步骤2:配置映射关系,需要配置虚拟字段到数据库中真实字段的映射关系。
[0038]
在配置映射关系时,可以将多个虚拟字段封装成一个虚拟表,这样使得同一个虚拟字段在多个不同的虚拟表中可以复用,而不会产生冲突。映射关系配置可以采用自动配置方式也可以采用界面手动方式配置。采用自动配置方式时,需要将配置关系写入映射关系配置文件mapper.json中。
[0039]
其格式为:
[0040][0041]
步骤3:配置反映射关系,在步骤2的基础上,配置真实字段到虚拟字段的反映射关系。
[0042]
步骤4:数据查询,对于一个含有虚拟字段和虚拟表的全局查询sql语句,通过配置好的映射关系将其分解成多个子sql进行查询,然后将查询结果返回给用户。对于数据查询这个步骤,可以将其细化为全局sql语句解析、全局sql语句分解、同表子sql语句合并、子sql查询、子结果集合并、真实字段到虚拟字段替换。
[0043]
如图2所示,该图表明了一个全局sql语句到多个子sql语句的大致处理步骤。
[0044]
步骤5:全局sql语句解析,利用开源工具sqlparser解析器将sql语句中包含的查询表、查询字段和查询条件提取出来。
[0045]
步骤6:全局sql语句分解,通过全局sql语句解析可以得到该条sql所包含的查询字段,然后将每个查询字段为一组,利用字符串拼接方法将每个查询字段逆向恢复成一条子sql查询语句。然后以查询表作为key,通过查询步骤2配置好的映射关系,可以得到该查询表中所涉及的虚拟字段到真实字段的映射关系。然后通过映射关系,将子sql语句中的虚
拟字段和虚拟表转换为数据源中的真实字段和真实表。同时,需要保存每个子sql查询所涉及的uuid,这是标识数据源中不同表的唯一id。
[0046]
步骤7:同表子sql语句合并,为了减少系统对数据库的访问压力,可以将对同一数据库中同一表的多次访问合并成一次访问。在合并时,可以通过每个子sql所携带的uuid进行判断是否是同一数据库中的同一表。如果是,则需要将这多条对同一数据库同一表的子sql查询合并为一个查询字段更多的子sql查询。这样可以减少对数据库访问的次数,从而减少对数据库的并发压力。
[0047]
步骤8:子sql查询,对于每个子sql,可以通过其携带的uuid获得数据库连接池(datasource)信息,然后获得一个数据库连接(connection),然后执行sql语句即可获得结果集。为了后续处理方面,每条子sql查询的时候,会默认将每条记录(record)的主键也查询出来存放在结果集中。
[0048]
如图3表示多个结果集合并的大致步骤。
[0049]
步骤9:结果集合并,由于在步骤7中,结果集中含有每条记录的主键,所以在合并的时候,只需要根据每条记录的主键是否相等来判断是将结果集追加到已有结果集中还是重新添加一个结果集。
[0050]
步骤10:真实字段到虚拟字段替换,对于每个真实字段,需要利用反映射关系将每个真实字段替换成虚拟字段。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1