大数据环境下基于HBase的异构数据库在线交换与共享系统的制作方法

文档序号:11545226阅读:213来源:国知局
大数据环境下基于HBase的异构数据库在线交换与共享系统的制造方法与工艺

本发明涉及大数据环境下基于hbase的异构数据库在线交换与共享系统,属于数据交换领域。



背景技术:

当前各企业应用系统使用异构数据库的现象普遍存在,这些异构数据库往往存在较大差异,如数据存储结构不同、数据类型不同、数据表示方式不同等,这给数据库间数据交换共享带来了很大不便。而信息化建设的迅猛发展,又导致需要交换与共享的信息量十分巨大,信息交换呈现多源、异构、海量的特点。如何实现异构数据库之间大数据高效自动在线交换与共享成为当前亟需解决的难题。

sqlserver提供的数据导入导出工具,实现了关系型数据库的数据迁移,但是该工具可支持的异构数据库类型比较有限,只能离线导入导出,异构数据库间进行数据共享也不够灵活,而且无法满足海量数据在线交换的需求。

中国专利公开号cn103809946a,公开日2014年5月21日,发明创造名称为一种基于xml和中间件的异构数据库集成的方法,该申请案公开了一种通过将异构数据库数据转换为统一格式的xml文件来实现异构数据库集成的方法。该方法采用的统一交换模型为xml文件形式,xml文件形式不支持高并发读写,交换共享效率较低,能处理的数据量较小。



技术实现要素:

本发明的技术解决问题是:克服现有技术的不足,提供大数据环境下基于hbase的异构数据库在线交换与共享系统,能够对接各种异构关系型数据库及列式存储的hbase数据库,采用统一语义共享模型作为数据库间转换桥梁,具备处理海量数据能力,实现了异构数据库间海量数据自动在线交换与共享,交换共享效率高。

本发明的技术解决方案是:大数据环境下基于hbase的异构数据库在线交换与共享系统,包括异构数据库统一访问组件、数据采集模块、数据映射模块、数据转换模块、数据融合模块、数据分发模块以及数据投递模块;

异构数据库统一访问组件:为各异构数据库提供统一的数据库访问接口;

数据采集模块:根据交换与共享的需求以及预设的抽取策略,通过异构数据库统一访问组件采集源数据库中的数据,发送给数据转换模块,所述抽取策略包括抽取时间间隔、是否全表抽取;

数据映射模块:建立各个异构数据库与统一语义共享模型之间的映射关系,提供给数据转换模块;

数据转换模块:根据源数据库与统一语义共享模型之间的映射关系,将来自源数据库中的数据转换为统一语义共享模型,输出给数据融合模块;根据统一共享模型和目标数据库之间的映射关系,将来自数据分发模块的数据转换为目标数据库中的数据,并发送给数据投递模块;

数据融合模块;将来自数据转换模块的统一语义共享模型与历史数据的统一语义共享模型进行融合,并将融合后的统一语义共享语义模型存储在hbase中间数据库;

数据分发模块:获取上次向目标数据库推送数据的时间戳t,从hbase中间库读取t之后且与t紧邻的时间戳对应的待交换字段数据,发送给数据转换模块;

数据投递模块:根据交换与共享的需求以及预设的推送时间间隔,将数据推送到相应目标数据库中。

所述统一语义共享模型采用hbase中间库来实现,统一语义共享模型包括信息主体、信息主体属性以及通用数据类型,其中信息主体是对具有共性的一类信息数据进行描述的元信息,在实现形式上以hbase表来表示;信息主体属性,是对信息主体对应数据集合各维度信息进行描述的元信息,用hbase列和列簇来表示;通用数据类型用于描述各异构数据库的字段类型,hbase列簇按照通用数据类型来划分。

所述hbase中间库设置四个列簇,即数字型列簇、字符型列簇、日期时间型列簇以及大字段型列簇。

所述数据映射模块建立源数据库与统一语义共享模型映射关系的实现方法如下:

步骤一,判断源数据库类型,类型为关系型数据库则转步骤四,为hbase数据库则执行步骤二;

步骤二,获取源数据库数据表结构,包括行键、列簇、列和列簇策略信息,进入步骤三;

步骤三,hbase中间库数据表采用相同的表结构,进行列映射,进入步骤十;

步骤四,获取源数据库数据表结构,包括主键、字段、数据类型、默认值信息,进入步骤五;

步骤五,判断源数据库数据表是否为单一主键,是则执行步骤六,若为多主键则进入步骤七;

步骤六,将主键直接作为hbase中间库行键,进入步骤八;

步骤七,按照以下公式将多主键拼接后作为hbase中间库行键,进入步骤八:

r=f1(k1)+s+f2(k2)+s+…+s+fn(kn)

其中r表示hbase中间库行键,ki表示源数据库第i个数据表的主键,i=1,2…n,fi(ki)为将主键ki的数据类型转为字符串类型的转换函数,s为主键拼接分割符;

步骤八,将源数据库数据表中各个字段的数据类型映射为统一语义共享模型中通用数据类型,并根据映射后的通用数据类型,将源数据库数据表各个字段映射到hbase中间库的列簇中,各字段与列簇中的列一一对应,且列簇中的列名称与对应字段名称相同,进入步骤九;

步骤九,针对hbase中间库各列簇特点,为各列簇设置策略,所述策略包括压缩策略、辅助索引策略、事务策略、缓存策略或版本策略,进入步骤十;

步骤十,操作者检查映射关系和策略是否符合需求,符合则映射流程结束,否则执行步骤十一;

步骤十一,操作者根据实际需求,手动调整列簇划分、映射关系及各项策略。

所述步骤八中将源数据库数据表各个字段映射到hbase中间库列簇的映射原则为:数据类型为int、number、float、boolean的字段映射到数字型列簇中,数据类型为char、string的字段映射到字符型列簇中,数据类型为time、date、timestamp的字段映射到日期时间型列簇中,数据类型为blob、clob、text的字段映射到大字段型列簇中。

所述数据映射模块建立统一语义共享模型与目标数据库映射关系的实现方法如下:

步骤一,判断目标数据库类型,类型为关系型数据库则转步骤四,为hbase数据库则执行步骤二;

步骤二,获取目标hbase数据库数据表结构,包括行键、列簇和列信息,进入步骤三;

步骤三,根据目标hbase数据库数据表列名,建立与hbase中间库数据表列之间的映射关系,进入步骤九;

步骤四,获取目标数据表结构,包括主键、字段和数据类型信息,进入步骤五;

步骤五,判断目标数据表是否为单一主键,是则执行下一步骤,为多主键则进入步骤七;

步骤六,将hbase中间库行键直接作为主键,进入步骤八;

步骤七,根据主键拼接分割符解析hbase中间库行键的拼接方式,建立行键与多主键的映射关系,进入步骤八;

步骤八,将目标字段数据类型映射到统一语义共享模型中通用数据类型,根据映射后的通用数据类型查找hbase中间库内对应的列簇,按字段名与列簇中列进行映射,进入步骤九;

步骤九,操作者检查映射关系是否符合需求,符合则映射流程结束,否则执行步骤十;

步骤十,操作者根据实际需求,手动调整映射关系,映射流程结束。

数据融合模块根据时间戳对比实现融合,如果源数据时间戳更新,则以源数据覆盖目标数据;反之,如果目标数据时间戳更新,则丢弃源数据。

与现有技术相比,本发明具有如下有益效果:

(1)本发明定义了统一语义共享模型,适用于各种异构关系型数据库及列式存储数据库间数据交换共享,具备广泛适用性。

(2)本发明采用的统一语义共享模型是基于hbase实现,充分利用了hbase技术优势,具备处理海量数据能力,支持高并发读写,提高了数据交换共享的效率。

(3)本发明数据映射模块提供异构数据库与统一语义共享模型间自动映射,降低了操作复杂度,为数据高效自动地在线采集、融合及分发奠定基础。

(4)本发明数据融合模块保存了多个时间戳的历史数据,可以根据需求灵活读取分发。

附图说明

图1为本发明系统结构图;

图2为本发明应用示意图;

图3为统一语义共享模型抽象描述图;

图4为统一语义共享模型具体实现图;

图5为数据映射模块建立源数据库与统一语义共享模型映射关系的流程图;

图6为数据映射模块建立统一语义共享模型与目标数据库映射关系的流程图;

图7为数据转换模块将来自源数据库中的数据转换为统一语义共享模型的流程图;

图8为数据转换模块将来自数据分发模块的数据转换为目标数据库中数据的流程图;

图9为应用本发明系统进行数据交换的整体流程图。

具体实施方式

如图1所示,本发明大数据环境下基于hbase的异构数据库在线交换与共享系统,包括异构数据库统一访问组件、数据采集模块、数据映射模块、数据转换模块、数据融合模块、数据分发模块以及数据投递模块。

异构数据库统一访问组件,目的是为了屏蔽各异构数据库间技术实现差异,为各异构数据库提供统一的数据库访问接口,支持上层应用透明地访问各异构数据库。可支持的异构数据库类型包括国内外各主流关系型数据库,如sqlserver、oracle、mysql、达梦、金仓、神通等,以及列式存储数据库hbase。

数据采集模块,根据交换与共享的需求以及预设的抽取策略,通过异构数据库统一访问组件自动地抽取源数据库中的数据,发送给数据转换模块,其中抽取策略包括抽取时间间隔、是否全表抽取。

数据映射模块:建立各个异构数据库与统一语义共享模型之间的映射关系,提供给数据转换模块。映射关系建立方式为:系统按照源数据库和目标数据库类型,自动分析数据库的表结构,如字段名、数据类型、主键等信息,建立表主键与hbase中间库表行键的映射关系,并依据表各字段的数据类型划分列簇,各字段与列簇中的列一一对应,然后针对各列簇特点设置不同策略,策略包括:压缩策略、辅助索引策略、事务策略、缓存策略、版本策略等。

同时,数据映射模块支持可视化交互配置,在自动映射基础上,操作者通过系统提供的交互式配置工具按照实际需求对列簇划分、字段映射和各项策略实现手动调整。

统一语义共享模型,作为异构数据库间转换的桥梁,屏蔽各数据库间存储结构、数据类型、数据表示方式等多方面差异,抽象出一套统一的中间共享模型。如图3所示,统一语义共享模型包括信息主体、信息主体属性以及通用数据类型,信息主体,是对具有某种共性的一类信息数据进行描述的元信息;信息主体属性,是对信息主体对应数据集合各维度信息进行描述的元信息;模型还定义了丰富的通用数据类型,如整型、小数型、字符型、布尔型、日期时间型、文本型、字典型等类型,用于抽象描述各异构数据库的字段类型。如图4所示,该模型具体采用hbase来实现,信息主体对应于hbase中间库各数据表,hbase中间库预设四个列簇,即数字型列簇、字符型列簇、日期时间型列簇、大字段型列簇,信息主体属性按数据类型对应于相应列簇中的列,hbase中间库数据表各单元格保存不同时期多个版本数据。

数据转换模块,用于异构数据库与统一语义共享模型之间数据相互转换。转换包括两部分:(1)从源数据库转换到统一语义共享模型,输出给数据融合模块。若源数据库为hbase,则直接按照预设的映射关系进行转换。若源数据库为关系型数据库,先将表主键转换为行键,然后将源数据类型转换为统一语义共享模型的通用数据类型,并按行键将每行数据映射转换到对应列簇中。(2)从统一语义共享模型转换到目标数据库,输出给数据投递模块。若目标数据库为hbase,则直接按照预设的映射关系进行转换。若目标数据库为关系型数据库,首先根据目标数据库数据类型将待分发的数据进行数据类型转换,然后按照预设的字段映射关系进行转换。

数据融合模块;将来自数据转换模块的统一语义共享模型与历史数据的统一语义共享模型进行融合,并将融合后的统一共享语义模型存储在hbase中间数据库。数据融合的基本策略是根据时间戳进行比对,如果源数据时间戳更新,则以源数据覆盖目标数据;反之,如果目的数据时间戳更新,则丢弃源数据。同时,系统还允许操作者选择其他信息主体属性作为比对依据进行数据融合。

数据分发模块:获取上次向目标数据库推送数据的时间戳t,从hbase中间库读取t之后且与t紧邻的时间戳对应的待交换字段数据,发送给数据转换模块;

数据投递模块:根据交换与共享的需求以及预设的推送时间间隔,调用异构数据库统一访问组件接口将数据自动推送到相应目标数据库中。

如图5所示,本发明数据映射模块建立源数据库与统一语义共享模型映射关系的实现方法如下:

步骤一,判断源数据库类型,类型为关系型数据库则转步骤四,为hbase数据库则执行步骤二;

步骤二,获取源数据库数据表结构,包括行键、列簇、列和列簇策略信息,进入步骤三;

步骤三,hbase中间库数据表采用相同的表结构,进行列映射,进入步骤十;

步骤四,获取源数据库数据表结构,包括主键、字段、数据类型、默认值信息,进入步骤五;

步骤五,判断源数据库数据表是否为单一主键,是则执行步骤六,若为多主键则进入步骤七;

步骤六,将主键直接作为hbase中间库行键,进入步骤八;

步骤七,按照以下公式将多主键拼接后作为hbase中间库行键,进入步骤八:

r=f1(k1)+s+f2(k2)+s+…+s+fn(kn)

其中r表示hbase中间库行键,ki表示源数据库第i个数据表的主键,i=1,2…n,fi(ki)为将主键ki的数据类型转为字符串类型的转换函数,s为主键拼接分割符,为保证行键的唯一性,该项通常使用特殊字符表示;

步骤八,将源数据库数据表中各个字段的数据类型映射为统一语义共享模型中通用数据类型,并根据映射后的通用数据类型,将源数据库数据表各个字段映射到hbase中间库的列簇中,各字段与列簇中的列一一对应,且列簇中的列名称与对应字段名称相同,映射原则为:数据类型为int、number、float、boolean的字段映射到数字型列簇中,数据类型为char、string的字段映射到字符型列簇中,数据类型为time、date、timestamp的字段映射到日期时间型列簇中,数据类型为blob、clob、text的字段映射到大字段型列簇中,进入步骤九;

步骤九,针对hbase中间库各列簇特点,为各列簇设置策略,所述策略包括压缩策略、辅助索引策略、事务策略、缓存策略或版本策略,进入步骤十;

步骤十,操作者检查映射关系和策略是否符合需求,符合则映射流程结束,否则执行步骤十一;

步骤十一,操作者根据实际需求,手动调整列簇划分、映射关系及各项策略。

下面给出数据映射模块建立sqlserver数据库user表与统一语义共享模型映射关系的例子:

步骤一,判断源数据库类型,sqlserver为关系型数据库,执行步骤二;

步骤二,获取user表结构,得到user表主键为id,各字段信息为:id(数据类型varchar)、name(数据类型varchar)、age(数据类型int)、note(数据类型text),执行步骤三;

步骤三,user表为单一主键,将主键id作为hbase中间库行键,执行步骤四;

步骤四,将各字段数据类型字段映射为统一语义共享模型通用数据类型:id和name数据类型varchar映射为字符型,age数据类型int映射为整型、note数据类型text映射为文本型。然后根据通用数据类型划分列簇:将id、name字段分别与hbase中间库字符型列簇中id、name列映射,将age字段与hbase中间库数字型列簇中age列映射,将note字段与hbase中间库大字段型列簇中note列映射,执行步骤五;

步骤五,为各列簇设置策略,如:大字段列簇采取数据压缩策略。如图6所示,数据映射模块建立统一语义共享模型与目标数据库映射关系的实现方法如下:

步骤一,判断目标数据库类型,类型为关系型数据库则转步骤四,为hbase数据库则执行步骤二;

步骤二,获取目标hbase数据库数据表结构,包括行键、列簇和列信息,进入步骤三;

步骤三,根据目标hbase数据库数据表列名,建立与hbase中间库数据表列之间的映射关系,进入步骤九;

步骤四,获取目标数据表结构,包括主键、字段和数据类型信息,进入步骤五;

步骤五,判断目标数据表是否为单一主键,是则执行下一步骤,为多主键则进入步骤七;

步骤六,将hbase中间库行键直接作为主键,进入步骤八;

步骤七,根据主键拼接分割符解析hbase中间库行键的拼接方式,建立行键与多主键的映射关系,进入步骤八;

步骤八,将目标字段数据类型映射到统一语义共享模型中通用数据类型,根据映射后的通用数据类型查找hbase中间库内对应的列簇,按字段名与列簇中列进行映射,进入步骤九;

步骤九,操作者检查映射关系是否符合需求,符合则映射流程结束,否则执行步骤十;

步骤十,操作者根据实际需求,手动调整映射关系,映射流程结束。

以下是数据映射模块建立统一语义共享模型与oracle数据库employee表映射关系的例子:

步骤一,判断目标数据库类型,oracle为关系型数据库,执行步骤二;

步骤二,获取employee表结构,得到employee表主键为id,各字段信息为:id(数据类型varchar)、name(数据类型varchar)、age(数据类型int)、note(数据类型clob),执行步骤三;

步骤三,employee表为单一主键,将hbase中间库行键映射到主键id,执行步骤四;

步骤四,将各字段数据类型字段映射为统一语义共享模型通用数据类型:id和name数据类型varchar映射为字符型,age数据类型integer映射为整型、note数据类型clob映射为文本型。然后根据通用数据类型查找hbase中间库中对应列簇,按字段名与列簇中的列进行映射:在字符型列簇中查找列名为id、name的列分别与id、name字段映射,在数字型列簇中查找列名为age的列与age字段映射,在大字段型列簇中查找列名为note的列与note字段映射;如图7所示,数据转换模块将来自源数据库中的数据转换为统一语义共享模型的具体步骤如下:

步骤一,判断源数据库类型,类型为关系型数据库则执行下一步骤,为hbase则转步骤四;

步骤二,按照源表主键与hbase中间库行键映射关系,将主键转换为行键;

步骤三,对源表各字段数据进行数据类型转换,转换为统一语义共享模型的通用数据类型;

步骤四,将源表每行数据按照预设的映射关系进行字段转换,转换流程结束。

以下是数据转换模块将sqlserver数据库user表数据转换为统一语义共享模型的例子:

步骤一,判断源数据库类型,sqlserver为关系型数据库,执行步骤二;

步骤二,按照预设映射关系,将user表各字段数据的数据类型转为统一语义共享模型通用数据类型:id和name字段数据的数据类型转换为字符型,age字段数据的数据类型转换为整型、note字段数据的数据类型转换为文本型执行步骤三;

步骤三,按照预设映射关系,将转换数据类型后的各行数据转换到统一语义共享模型:id、name字段数据转为字符型列簇id、name列中,age字段数据转为数字型列簇age列中、note字段数据转为大字段型列簇note列中。

如图8所示,数据转换模块将来自数据分发模块的数据转换为目标数据库中的数据的具体步骤如下:

步骤一,判断目标数据库类型,类型为关系型数据库则执行下一步骤,为hbase则转步骤五;

步骤二,根据hbase中间库行键与目标表主键映射关系,将行键转换为主键,进入步骤三;

步骤三,按照预设的映射关系,对待分发的数据进行数据类型转换,转为目标数据类型,进入步骤四;

步骤四,按照预设的映射关系进行字段转换,转换流程结束。

以下是数据转换模块将数据分发模块的数据转换为oracle数据库employee表数据的例子:

步骤一,判断目标数据库类型,oracle为关系型数据库,执行步骤二;

步骤二,按照预设映射关系,将来自数据分发模块数据的数据类型转为目标数据库类型:id和name字段数据的数据类型转换为oracle中varchar型,age字段数据的数据类型转换为oracle中integer型、note字段数据的数据类型转换为oracle中clob型,执行步骤三;

步骤三,按照预设映射关系,将转换数据类型后的各行数据转换到oracle数据库employee表中:字符型列簇id、name列数据转为id、name字段中,数字型列簇age列数据转为age字段中、大字段型列簇note列数据转为note字段中。

如图9所示,本发明系统进行在线交换与共享的具体步骤如下:

步骤一,配置源数据库抽取策略和目标数据库推送策略;

步骤二,由数据映射模块获取源数据库和目标数据库的表结构信息,自动建立源或目标数据表与统一语义共享模型间的映射关系,设置默认列簇策略,详细步骤见自动映射流程;

步骤三,操作者检查映射关系和策略是否符合需求,符合则转步骤五,否则执行步骤四;

步骤四,操作者根据实际交换与共享的需求,手动调整字段映射关系,调整统一语义共享模型各列簇策略;

步骤五,按照源数据库抽取策略,数据采集模块从源数据库中抽取数据,发送给数据转换模块;

步骤六,数据转换模块按照映射关系进行数据类型转换和字段转换,得到统一语义共享模型,输出给数据融合模块,详细步骤见数据转换流程;

步骤七,数据融合模块依据数据时间戳进行数据融合,得到融合后的统一共享语义模型存储在hbase中间数据库;

步骤八,根据目标数据推送的进度,数据分发模块从hbase中间数据库读取相应时间戳的数据,发送给数据转换模块;

步骤九,数据转换模块按照目标映射关系进行数据类型转换和字段转换,详细步骤见数据转换流程;

步骤十,按照目标数据库推送时间间隔,数据投递模块将数据推送到目标数据库中。

图2为本发明的系统应用示意图,系统抽取sqlserver源数据库中数据表a、b字段,oracle源数据库中数据表a、c字段,mysql源数据库中数据表d、e字段中的数据,融合存储到hbase中间库中,然后将数据分发推送到sqlserver目标数据库中数据表a字段,oracle目标数据库中数据表b、c、d字段,达梦目标数据库中数据表d、e字段中。

本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1