一种基于嵌套的SQL到HBase的数据迁移算法
【专利摘要】本发明公开了一种基于嵌套的SQL到HBase的数据迁移算法,包括有以下步骤:A、获取关系数据库中SQL表的外键依赖关系;B、将关系数据库中的SQL表进行单表转换,得到HBase表;C、根据关系数据库中SQL表的外键依赖关系,对相应的HBase表进行单层嵌套转换;D、根据关系数据库中SQL表的外键依赖关系以及上述单层嵌套转换结果,对相应的HBase表进行多层嵌套转换。本发明方法对SQL表进行单表转换,进而根据外键依赖关系对转换成的HBase表进行单、多层嵌套转换,从而成功地在不丢失外建依赖信息的情况下实现数据迁移,数据迁移后的HBase中查询一个表即可得到结果,无需连接多个表,加快了查询效率。本发明作为一种基于嵌套的SQL到HBase的数据迁移算法可广泛应用于大数据处理领域。
【专利说明】一种基于嵌套的SQL到HBase的数据迁移算法
【技术领域】
[0001]本发明涉及大数据处理领域,尤其是一种基于嵌套的SQL到HBase的数据迀移算法。
【背景技术】
[0002]术语解释:
I关系数据库(Relat1nal database):创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现在主流的关系数据库有Oracle、SqlServer、MySQL 等。
[0003]2HBase:—个开源的非关系型面向列存储分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS (分布式文件系统)上,为Hadoop提供类似于BigTable规模的服务。因此,它可以容错地存储海量稀疏的数据。
[0004]3依赖关系:表示关系数据库中表与表之间存在外键依赖关系。
[0005]随着大数据时代的来临,关系型数据库在面临海量数据存储、查询及分析的挑战时,暴露出扩展性差、查询效率低以及难以应对高并发请求的不足。而NoSQL数据库因其不再遵从规范化设计的数据模型及有不同的底层架构设计,能很好地满足某些系统对海量数据处理的需求。目前,越来越多系统需要把数据从现有关系数据库迀移至NoSQL数据库。
[0006]HBase是目前最热门的NoSQL数据库之一,具备高扩展性、高性能、强一致性的特点。现在受到了越来越多企业青睐,并且出现了越来越多数据从关系数据库迀移到HBase的需求。而因为HBase的数据模式(即数据组织形式)与关系数据库的数据模式有巨大差异。HBase表模式并没有外键的设置,因此迀移后不能保留原关系数据库的外键依赖信息。
[0007]现有技术中,关于关系数据库到HBase的数据迀移系统的相关工具和研宄方案数量上都不多,同时,每一种工具或者方案都有其较大的不足之处,特别是每一种方案都没有很好地考虑原关系数据库中外键依赖信息的保留问题。例如Chung W C等人提出了一种利用MapReduce实现对HBase上使用SQL语句进行查询的方案。方案具体方法是将关系数据库中的表映射为HBase中同一张表的不同列族,表中的属性映射为HBase中对应的列族的列,即同一张表的数据会放置在HBase表的同一个列族。串行地排列不同表的数据,同时设置了一个额外的列族用于存放用于表示关系数据库中表之间的外键依赖关系的信息。基于这种存储,系统可以将一个SQL查询转换成一个对HBase的查询请求序列组成的MapReduce任务,在HBase上实现查询并返回结果。这种方案的确是可以完成从关系数据库到HBase的模式迀移,并对之进行查询,但是这种方案存在着两个重大的弊端。1、以串行的方式排列表与表之间的数据,导致数据矩阵稀疏。2、当同一个SQL查询涉及多个join操作,MapReudce任务将需要频繁访问HBase表查询存放外键信息的列族,效率低下。
【发明内容】
[0008]为了解决上述技术问题,本发明的目的是:提供一种不丢失外键依赖信息的基于嵌套的SQL到HBase的数据迀移算法。
[0009]本发明所采用的技术方案是:一种基于嵌套的SQL到HBase的数据迀移算法,包括有以下步骤:
A、获取关系数据库中SQL表的外键依赖关系;
B、将关系数据库中的SQL表进行单表转换,得到HBase表;
C、根据关系数据库中SQL表的外键依赖关系,对相应的HBase表进行单层嵌套转换;
D、根据关系数据库中SQL表的外键依赖关系以及上述单层嵌套转换结果,对相应的HBase表进行多层嵌套转换。
[0010]进一步,所述步骤B中,优先对不存在外键依赖关系数据库中其他SQL表的SQL表进行单表转换。
[0011]进一步,所述步骤C中单层嵌套转换的结果用增加HBase表中的列族的方式来表不O
[0012]进一步,所述步骤D中多层嵌套转换的结果用增加HBase表中的列名前缀的方式来表示。
[0013]进一步,所述HBase表中可同时包括列族和列名前缀。
[0014]本发明的有益效果是:本发明方法对SQL表进行单表转换,进而根据外键依赖关系对转换成的HBase表进行单层嵌套转换和多层嵌套转换,从而成功地在不丢失外建依赖信息的情况下将数据从关系数据库迀移到HBase,尤其是是原本在关系数据库中存在外键依赖关系的表都整合至HBase的一张表中,数据迀移后的HBase中查询一个表即可得到结果,而无需连接多个表,加快了查询效率。
【专利附图】
【附图说明】
[0015]图1为本发明方法的步骤流程图;
图2为数据库内各表关系示意图;
图3为关系数据库到HBase迀移前后表状态示意图;
图4为student数据库图模型示意图;
图5为单表转换示意图;
图6为单层嵌套转换示意图;
图7为多层嵌套转换示意图。
[0016]【具体实施方式】;
下面结合附图对本发明的【具体实施方式】作进一步说明:
参照图1,一种基于嵌套的SQL到HBase的数据迀移算法,包括有以下步骤:
A、获取关系数据库中SQL表的外键依赖关系;
B、将关系数据库中的SQL表进行单表转换,得到HBase表;
C、根据关系数据库中SQL表的外键依赖关系,对相应的HBase表进行单层嵌套转换;
D、根据关系数据库中SQL表的外键依赖关系以及上述单层嵌套转换结果,对相应的HBase表进行多层嵌套转换。
[0017]首先,结合【专利附图】
【附图说明】关系数据库中的外键依赖关系: 关系数据库可用一个有向无环图给予描述。V表示图G中的点集,E表示图G中的边集。每一个在关系数据库中的表即为点集V中的一个点,而边表不表A有外键引用表B,这样图G可称为关系图。参照图2,点A,B, C代表表A,B, C,因为表A有外键spno引用表B,即表A依赖表B,因此有一条有向边指向表B,另外两条边同理。
[0018]为了加快在数据迀移后在HBase中的查询效率,类似于反规范化中的增加冗余列的方式,本发明中将外键依赖关系转换为嵌套关系,在存在外键依赖关系的两个表中,让被依赖表的数据添加进依赖表中。
[0019]参照图3,表A依赖表B,则可以称表A嵌套表B,同理,表B嵌套表C,那么表A与表B的关系我们称为“单层嵌套”,表A与表C的关系我们称为“多层嵌套”。而因为表A同时也直接依赖表C,所以表A与表C的关系既有单层嵌套也有多层嵌套。因此,在转换后的HBase数据库中,会有相对应的三个表,HTable-A, HTable-B, HTable-C,即在原关系数据库每一个表都有相应的一个迀移后的HTable相对应。而根据它们之间的嵌套关系,HTable-A会包含HTable-B及HTable-C的信息。
[0020]对于单层嵌套,利用增加HBase中的列族(family)的方式来表示;对于多层嵌套,利用增加HBase中的列名(qualifier)前缀的方式来表示。上述方式是的HBase表可以很好地代替SQL表,存储器本身的数据并对于每一个SQL语句,无论它包括有多少个连接条件,都只需要在钱以后的HBase中查询一个表即可得到结果,从而加快了查询效率。
[0021]在转换完成之后,对应于迀移后的表的列族数只是比原关系数据库的表的外键数多1,这将保证迀移后的表的列族数不会过多而导致HBase的性能下降。
[0022]参照图4的数据库模型,将其中数据库迀移到HBase,经过单表转换、单层嵌套转换和多层嵌套转换的步骤:
参照图5单表转换示意图,将SQL表“ speciality”转换成HBase表“ speciality”。参照图6单层嵌套转换示意图,利用增加HBase中的列族的方式来表示。参照图7多层嵌套转换示意图,利用增加HBase中的列名前缀的方式来表示,例如:speciality:department, dno= “5001,,。
[0023]以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
【权利要求】
1.一种基于嵌套的SQL到HBase的数据迀移算法,其特征在于:包括有以下步骤: A、获取关系数据库中SQL表的外键依赖关系; B、将关系数据库中的SQL表进行单表转换,得到HBase表;C、根据关系数据库中SQL表的外键依赖关系,对相应的HBase表进行单层嵌套转换; D、根据关系数据库中SQL表的外键依赖关系以及上述单层嵌套转换结果,对相应的HBase表进行多层嵌套转换。
2.根据权利要求1所述的一种基于嵌套的SQL到HBase的数据迀移算法,其特征在于:所述步骤B中,优先对不存在外键依赖关系数据库中其他SQL表的SQL表进行单表转换。
3.根据权利要求1所述的一种基于嵌套的SQL到HBase的数据迀移算法,其特征在于:所述步骤C中单层嵌套转换的结果用增加HBase表中的列族的方式来表示。
4.根据权利要求1所述的一种基于嵌套的SQL到HBase的数据迀移算法,其特征在于:所述步骤D中多层嵌套转换的结果用增加HBase表中的列名前缀的方式来表示。
5.根据权利要求4所述的一种基于嵌套的SQL到HBase的数据迀移算法,其特征在于:所述HBase表中可同时包括列族和列名前缀。
【文档编号】G06F17/30GK104504008SQ201410757171
【公开日】2015年4月8日 申请日期:2014年12月10日 优先权日:2014年12月10日
【发明者】赵淦森, 李立波, 林巧英, 王翔, 程庆年, 周冠宇, 高晓杰, 周尚勤, 王欣明 申请人:华南师范大学, 广州杰赛科技股份有限公司