CN104123392A - 一种关系型数据库迁移到HBase数据库的工具和方法 - Google Patents
一种关系型数据库迁移到HBase数据库的工具和方法 Download PDFInfo
- Publication number
- CN104123392A CN104123392A CN201410392438.9A CN201410392438A CN104123392A CN 104123392 A CN104123392 A CN 104123392A CN 201410392438 A CN201410392438 A CN 201410392438A CN 104123392 A CN104123392 A CN 104123392A
- Authority
- CN
- China
- Prior art keywords
- database
- hbase
- schema
- row
- conversion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种关系型数据库迁移到HBase数据库的工具和方法,包括解析器、表模式转换器、表模式适配器和数据表管理器,所述解析器用于解析由外部工具从传统关系数据库导出的表模式定义文档;所述表模式转换器用于把传统关系数据库中的表模式定义转换成HBase数据库中的表模式,支持前文中所提到的四种表变换的方式;所述表模式适配器用于保存、读取已经由表模式转换器所转换过的表模式定义到指定的文件中,并为其它模块查找新的表模式定义提供接口;所述数据表管理器用于把存储在传统关系数据库中的数据迁移到HBase数据库中对应新定义的表中。采用本发明可有效地提高迁移后数据库中针对表与表之间进行连接查询的性能。
Description
技术领域
本发明涉及数据库领域,尤其涉及的是一种关系型数据库迁移到HBase数据库的工具和方法。
背景技术
随着二十世纪网络带宽的提升以及互联网在全世界范围内的进一步普及,以Facebook、Twitter为代表的SNS社交应用平台和以淘宝、亚马逊为代表的电子商务类互联网应用的不断出现,标志着我们已经进入Web2.0时代。从开发者的角度而言,复杂的Web2.0应用意味着对应用本身的架构合理性、健壮性以及性能方面提出了更高的要求,如何在海量数据、高并发访问的情况下让数据库能够提供稳定、可靠的性能是当前Web2.0应用所要解决的重要问题之一。在无数的开发和研究之中,人们发现即使技术已经相当成熟的传统关系型数据库也已经很难解决这个问题,越来越多的开发人员已经试图抛开传统的关系型数据库转而从别的方向探索解决问题的方法。
在这样的技术研发背景下,NOSQL数据库便应运而生了。NOSQL是对非关系型数据库的这一类数据库的统称,其成员众多,诸如Cassandra以及MongoDB等轻量级的NOSQL数据库已经被广泛地运用于Web应用中,然而,随着HBase数据库被Facebook成功地用于构建实时系统,其已经成为目前最热门的NOSQL数据库。HBase是Hadoop项目所属的子项目,是Hadoop上的一个NOSQL数据库的实现,同时也是一个分布式的、面向列的开源数据库。可以说,HBase不仅拥有大部分NOSQL数据库所拥有的优点,而且由于能与Hadoop无缝集成,所以它提供了更为强大的可扩展性以及数据操作性能。当前,Facebook、Yahoo!、淘宝、eBay等这些顶级的Web服务供应商已经使用Hadoop成功部署了多个系统应用,在单个集群中所能成功部署的计算机节点已经多达4000台。
由于HBase数据库存在的巨大优势,越来越多的Web应用都开始尝试在其之上重新构建数据中心,如何将原先存储在普通关系型数据库中的数据迁移到HBase中成为了当前非常热门的问题。由于HBase中的表结构具有稀疏的特性,其结构同传统的关系型数据库有着很大的差异,因此在为应用程序设计数据库中所有表的结构和关系时也有许多不同之处,开发人员需要手工地重新设计HBase数据库中的表模式。然而,这个过程往往需要花费开发人员大量的时间和精力,而且当每次迁移新的数据库时,他们又不得不重复这些过程,因而浪费了许多功夫在这些重复性的工作上。
在2009年Apache开源社区发布的数据迁移工具Sqoop稍微减轻了开发人员的工作负担。Sqoop的主要作用是在结构化数据存储与Hadoop/HBase之间进行数据交换。但是Sqoop只能够在两类数据库中复制数据,只是完成了数据的迁移工作,并不能将数据库中的表模式也迁移到HBase中,然而表模式的迁移往往是整个迁移过程中最耗费时间和精力的,因而Sqoop所做的工作也有着很大的局限性。
而传统的开源ETL工具Kettle最近也加入了对HBase的支持。Kettle允许用户管理来自不同数据库的数据,通过提供一个图形化的用户环境来完成整个数据库移植的过程,因而有着良好的用户体验。但是,用其将关系数据库移植到HBase仍是相对繁琐的。在这个过程中,用户需要手动指定表与表之间以及数据类型的对应关系。其次,在转换过程中并没有考虑HBase灵活的表结构而只是将原有的表模式未经任何变换就复制过去,这样不仅没有利用到HBase的特性而且在以后数据查询的时候也会带来性能上的下降。因此,现有技术还有待于改进和发展。
发明内容
本发明的目的在于提供一种关系型数据库迁移到HBase数据库的工具和方法,旨在解决现有的HBase数据库的数据迁移方法需要花费开发人员大量的时间和精力的问题。
本发明的技术方案如下:
一种关系型数据库迁移到HBase数据库的工具,其包括解析器、表模式转换器、表模式适配器和数据表管理器,所述解析器用于解析由外部工具从传统关系数据库导出的表模式定义文档;所述表模式转换器用于把传统关系数据库中的表模式定义转换成HBase数据库中的表模式,支持前文中所提到的四种表变换的方式;所述表模式适配器用于保存、读取已经由表模式转换器所转换过的表模式定义到指定的文件中,并为其它模块查找新的表模式定义提供接口;所述数据表管理器用于把存储在传统关系数据库中的数据迁移到HBase数据库中对应新定义的表中。
一种关系型数据库迁移到HBase数据库的方法,其具体包括:在进行迁移前需对关系型数据库的表模式进行BCNF分解;预处理后对关系型数据库的表模式进行变换包括基本变换、内嵌变换、分割变换或内联变换得到符合HBase数据库定义的表模式;然后将关系型数据库的表中的数据读取并转存到Base数据库中对应新定义的表,
所述BCNF分解用于消去非主属性对键的部分函数依赖、非主属性对键的传递函数依赖以及主属性对键的传递函数依赖;
所述基本变换适用于把以关系数据库中表设计模式定义的表变换成HBase中的表;
所述内嵌变换用于当从表A到表B存在一对一、一对多或多对多的关系时,把表B作为表A的内嵌表;
所述分割变换用于当从表C到其余多个表之间都存在一对一、一对多或多对多的关系时,把表C进行分割,按照数据的映射关系,把表C中的每一行内嵌到对应的表中;
所述内联变换用于当从表A到表B存在一对一、一对多或多对多的关系,并且从表B到表C也存在一对一、一对多或多对多的关系时,把表C作为表A的内联表;
其中,表C为表B的从属关联关系表,表B为表A的从属关联关系表。
所述的关系型数据库迁移到HBase数据库的方法,其中,所述基本变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名,表A也添加到这个表的列族中;之后把表A的主键作为对应表的行键;最后把表A中定义的所有属性添加到对应表的列族1之中。
所述的关系型数据库迁移到HBase数据库的方法,其中,所述内嵌变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名;之后把表A和表B都添加到这个表的列族中;接着把表A的主键作为对应表的行键;随后把表A中定义的所有属性添加到对应表的列族1之中,把表B中所有同表A这一行有关的所有行属性都放入到列族2之中,最后,删除表B。
所述的关系型数据库迁移到HBase数据库的方法,其中,所述分割变换具体变换方法为:把表A和表B的表名分别作为HBase数据库中对应表的表名;之后把表A和表B分别添加到对应表的列族中,把表C都添加到这些表的列族之中;接着把表A和表B的主键分别作为对应表的行键;随后把表A和表B中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A或表B这一行有关的所有行属性都分别放入到对应表的列族2之中;最后删除表C。
所述的关系型数据库迁移到HBase数据库的方法,其中,所述内联变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名;之后把表A和表C都添加到这个表的列族中;接着把表A的主键作为对应表的行键;随后把表A中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A这一行通过表B有间接关联的所有行属性都放入到列族2之中;最后删除表C。
所述的关系型数据库迁移到HBase数据库的方法,其中,总的迁移过程采用如下的决策为:先判断集合X是否为空,否则取出一个元素x,对其做基本变换,将结果元素y放入集合Y,是则直接得到集合Y;然后判断元素y在集合Y中是否与其他元素存在一对多、多对多的关系,是则取出一个关系映射c,并对关系映射c做内嵌、分割变换;否则进一步判断元素y在集合Y中是否需要做内联变换,如果否则返回判断集合X是否为空,若是则做内联变换。
所述的关系型数据库迁移到HBase数据库的方法,其中,对所有的表模式进行如下的简化处理:为每张表指定一个自增的主键;为表的每个属性设置一个默认值;减少表名称和属性名的长度。
本发明的有益效果:本发明通过分析了HBase表结构的特点之后,提出了一种基于关系型数据中表模式结构进行相对于HBase数据库中表模式变换的方法,该方法相对于传统的方法可以有效地提高迁移后数据库中针对表与表之间进行连接查询的性能。根据四种表模式变换实现了一个半自动化的由关系型数据库到HBase数据库迁移工具,具体解决了数据类型转换、决策流程等问题。并且,通过一个迁移实例证明了该工具可以有效对SQL Server数据库至HBase数据库进行数据迁移,得到了很好的连接查询性能,还比普通工具在一定程度上减少了数据库所占用的磁盘存储空间。该半自动化工具来帮助开发人员从这些重复的迁移过程中解放出来,是非常有意义的,这不仅能简化数据库迁移的过程,还能大大减少应用的开发时间,减低成本。
附图说明
图1是本发明中提供的对表模式做基本变换的示意图。
图2是本发明中提供的对表模式做内嵌变换的示意图。
图3是本发明中提供的对表模式做分割变换的示意图。
图4是本发明中提供的对表模式做内联变换的示意图。
图5是本发明中提供的对表进行何种变换的选择流程图。
图6是本发明中提供的系统的模块框图。
图7是使用不同方法在连接查询性能方面的效果数据比较图。
图8是使用不同方法在空间存储量方面的效果数据比较图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。
HBase数据库有着这样几个特点:单元格是有版本的,数据行是有序的,只要列族存在,列便可以由客户端随时添加。除了以上所述的这三个特性以外,其实HBase的表和RDBMS的表是类似的。但是,在为其设计模式时,需要考虑这些不同点,并且在对HBase这样的面向列的存储设计模式时,可以利用其可以以极小的开销管理较宽的稀疏表的这个同RDBMS数据库最大的不同点。
在HBase中查询数据时,根据请求数据的不同会出现以下三种情况:
1、全表扫描,这种查询一般是用于取得一张表中所包含的所有数据,由于需要对整张表进行扫描,所以花费的时间最长效率也最差。但是由于HBase是采用将表划分成多个区域的方式组织数据的,每个区域会分布在不同的从属机节点上,所以同RDBMS上的全表扫描相比,HBase能够把对整张表格的查询压力平均地分布到每个表格区域所在的从属机节点上,这样能够在同等数据量的情况下取得更好的性能。
2、区间扫描,这种查询是用于取得一张表中某段行键连续的区间中的数据,由于指定了查询所需的起始行键以及结束行键,所以通过HBase本身内部的查询机制能够很快的定位到所要查找的数据所在表的一个或多个区域,因而有着相对较高的查询速度,是HBase数据库推荐的数据查询方式之一。
3、行键扫描,这种查询是用于根据所给的键值取得一张表中的行键对应的单条数据,是所有查询方法中最快的查询方式。因为通过给定的行键的值HBase能够很快的从根目录表中很快地得到这一行所在的表区域,从而直接和表区域所在的从属机节点进行通信来取得所需要的数据,而且由于所要取得的是单行数据,结果所包含的数据集本身就是所有扫描类型里最少的,因而是性能最好、返回结果最快的扫描方式。
由此可见,并不是所有的查询方式在HBase数据库中都能得到良好的性能,所以在设计表的结构时需要使得尽量多的数据查询方式能够利用到HBase中相对性能较优的扫描方式,如行键扫描或区间扫描,以此在最大程度上减少数据查询所花费的时间。
根据上述分析本发明提供的一种关系型数据库迁移到HBase数据库的方法,在进行迁移前要对准备迁移的表模式进行预处理,先依照传统关系型数据库的设计方法对所有表进行初步设计,减少表与表之间数据的冗余以及依赖关系。
首先,需要对表模式进行BCNF分解(Boyce–Codd normal formnormalization),通过BCNF分解,能够消去非主属性对键的部分函数依赖、非主属性对键的传递函数依赖以及主属性对键的传递函数依赖。这样,表与表之间的依赖关系就变得非常清晰,利于下一步的变换处理。
另外,为了提高经变换后在HBase中产生的数据表的查询性能,对所有的表模式还需做如下的简化:1、为每张表指定一个自增的主键;2、为表的每个属性设置一个默认值;3、尽量减少表名称和属性名的长度。
经过预处理之后的表模式就可以迁移到HBase数据库中了,但为了对连接查询做进一步的优化而获得更好的性能,还需要对表进行如下的变换:基本变换,内嵌变换,分割变换或内联变换。
所述基本变换适用于把以传统关系数据库中表设计模式定义的表变换成HBase中的表。整个模式设计的第一步就是把所有以传统关系数据库中表设计模式定义的表用基础变换的方式变换为符合HBase数据库模式的表,从而得到所有表在HBase中的对应表集合。
具体变换方法为:如图1所示,令Goods表为表A,把表A的表名作为HBase数据库中对应表的表名,表A也添加到这个表的列族中。之后把表A的主键作为对应表的行键,最后把表A中定义的所有属性添加到对应表的列族1之中。
该变换将表直接复制到HBase对应的数据库中。因而,在空间效率及查询效率上都同普通的HBase数据库中的表性能一样。
所述内嵌变换的适用场景为当从表A到表B存在一对一、一对多或多对多的关系时,可以把表B作为表A的内嵌表。经过这样的变换,当查询表A中的某一行时就能够得到同这一行所关联的所有表B中的数据,这样就可以避免表A和表B之间的连接查询。当对表B中的数据查询方式有且仅有通过和表A连接查询所得时,就可以把表B从由基础变换所得到的表集合中删除。
具体变换方法为:如图2所示,令Goods表为表A、Color表为表B,把表A的表名作为HBase数据库中对应表的表名,之后把表A和表B都添加到这个表的列族中。接着把表A的主键作为对应表的行键,随后把表A中定义的所有属性添加到对应表的列族1之中,把表B中所有同表A这一行有关的所有行属性都放入到列族2之中。最后,根据情况删除表B。
该变换将子表内嵌到HBase对应的数据库中的主表。由于在变换过程中对子表进行了一定程度的冗余存储,因而会消耗稍多的存储空间,但是提高了由主表到子表的连接查询的效率。
所述分割变换的适用场景为当从表C到其余多个表之间都存在一对一、一对多或多对多的关系时(在上图中以表A和表B表示),可以把表C进行分割,按照数据的映射关系,把表C中的每一行内嵌到对应的表中。经过这样的变换,当查询表A或表B中的某一行时就能够得到同这一行所关联的所有表C中的数据,这样就可以避免表C和同其余与之有联系关系的所有表之间的连接查询。当对表C中的数据查询方式有且仅有通过和表A或表B连接查询所得时,就可以把表C从由基础变换所得到的表集合中删除。
具体变换方法为:如图3所示,令Goods表为表A、Brand表为表B、Picture表为表C,把表A和表B的表名分别作为HBase数据库中对应表的表名,之后把表A和表B分别添加到对应表的列族中,把表C都添加到这些表的列族之中。接着把表A和表B的主键分别作为对应表的行键,随后把表A和表B中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A或表B这一行有关的所有行属性都分别放入到对应表的列族2之中。最后,根据情况删除表C。
该变换将子表分割到HBase对应的数据库中的多张主表。由于在变换过程中对子表进行了一定程度的冗余存储,因而会消耗稍多的存储空间,但是提高了由任意主表到子表的连接查询的效率。
所述内联变换的适用场景为当从表A到表B存在一对一、一对多或多对多的关系,并且从表B到表C也存在一对一、一对多或多对多的关系时,可以把表C作为表A的内联表。经过这样的变换,当查询表A中的某一行时就能够得到同这一行通过表A所间接关联的所有表C中的数据,这样就可以避免表A、表B和表C这三张表之间的连接查询。当对表C中的数据查询方式有且仅有通过和表A、表B连接查询所得时,就可以把表C从由基础变换所得到的表集合中删除。
具体变换方法为:如图4所示,令Goods表为表A、Color表为表B、GoodsRelated表为表C,把表A的表名作为HBase数据库中对应表的表名,之后把表A和表C都添加到这个表的列族中。接着把表A的主键作为对应表的行键,随后把表A中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A这一行通过表B有间接关联的所有行属性都放入到列族2之中。最后,根据情况删除表C。
该变换将子表内联到HBase对应的数据库中的间接主表中。由于在变换过程中对子表进行了一定程度的冗余存储,因而会消耗稍多的存储空间,但是提高了由间接主表到子表的连接查询的效率。
在对数据库进行迁移的过程中需要根据表与表之间的关系以及各类变换的适用场景,来决定应该对哪些表进行什么样的变换。令在关系型数据库中原有的表集合为X,迁移后的在HBase数据库中的表集合为Y,总的迁移过程采用如下的决策图5表示:先判断集合X是否为空,否则取出一个元素x,对其做基本变换,将结果元素y放入集合Y,是则直接得到集合Y;然后判断元素y在集合Y中是否与其他元素存在一对多、多对多的关系,是则取出一个关系映射c,并对关系映射c做内嵌、分割变换;否则进一步判断元素y在集合Y中是否需要做内联变换,如果否则返回判断集合X是否为空,若是则做内联变换。
数据库迁移工具实现了将传统关系数据库中的表模式转换为HBase数据库定义的表模式的工作,并且提供了把原有表中的数据迁移到对应的HBase数据库的表中的功能。
由于传统的关系数据库有着丰富的数据类型定义,而HBase在数据存储上都是以字节流的方式保存的,通过提供对应的Java工具类而从字节流中提取所需要的数据类型,因而支持数据类型相比关系数据库而言会相对少些,所以需要把所有在关系数据库中用到的数据类型映射到对应的HBase数据类型上,并且定义缺省的数据类型的转换方法。
表1常用数据类型映射
基本上HBase对简单的基本数据类型都有着很好的支持,通过其内建的Java工具类所提供的方法能够很方便的读取、存储这些数据。但是对于不支持的复杂数据类型而言,需要做一些变换。在这里,由于HBase并不支持直接存储Date数据类型,所以通过Date类提供的getTime方法将日期值转化为一个对应的长整型long(该长整数代表了从1970年1月1日开始计算到Date对象中的时间之间的毫秒数,并与时区无关),这样就能将值存入HBase中,取出时只要将长整数还原为Date即可。
根据各个具体实现功能的不同,将数据库迁移工具划分成如下四个模块:解析器、表模式转换器、表模式适配器和数据表管理器。所述解析器用于解析由外部工具从传统关系数据库导出的表模式定义文档。在具体的代码中,是一个Java接口,通过为外部工具编写其特定的类来实现这个接口。类XMLSchemaParser已经实现了这个接口,用于解析由关系数据库管理工具DbVisualizer从SQL Server数据库中导出的XML表模式定义文档。所述表模式转换器用于把传统关系数据库中的表模式定义转换成HBase数据库中的表模式,支持前文中所提到的四种表变换的方式。所述表模式适配器用于保存、读取已经由表模式转换器所转换过的表模式定义到指定的文件中,并为其它模块查找新的表模式定义提供接口。由于在整个项目中,适配器的定义在数据库转换完成后是不变的,所以这里运用了单实例的设计模式来实现这个模块。所述数据表管理器用于把存储在传统关系数据库中的数据迁移到HBase数据库中对应新定义的表中。
数据库迁移工具的工作流程如图6所示,首先,利用工具把原有关系数据库中的表模式定义导出成XML文档,通过XML文档解析器解析文档中的内容;然后,解析的结果被表模式转换器读取,并根据上文所述的变换方式对所有表进行模式的变换,之后创建新的表模式定义文档,把变换后的结果保存在定义文档之中;最后,由表模式适配器从定义文档中读取新的表模式定义,HBase数据表管理器根据读取的定义在HBase数据库中创建对应的表并把数据迁移到新建的表中。
Web在线的家居设计系统HouseDIY是一个典型的电子商务类应用,它实现了一个基于Flash的家居设计平台。采用的是传统关系型数据库SQLServer作为底层数据存储系统,随着日后客户的增多、每秒平台交易量的上升以及在线用户的大幅增加,在数据量及用户并发访问量上都会有明显的增幅,对数据库的负担势必会越来越重,显然这对在应用中承受巨大负荷的数据库层提出了更高的要求。因而,本发明采用HBase分布式数据库作为解决海量数据存储、高并发访问的问题。
本发明提供的数据库迁移工具将HouseDIY原有的SQL Server数据库表模式迁移到HBase数据库中,与系统原有架构相比,系统客户端与网络传输不变,仅需对服务器端的数据库进行迁移、并重新部署。
通过对HouseDIY在SQL Server上的数据模式设计的分析可以发现,该应用中的表模式设计本身就接近HBase中数据模式设计的要求,而且几乎无需预处理即可运用四种模式变换将所有的表移植到HBase数据库中。
故对HouseDIY中的表依次作如下变换:
首先对HouseDIY中的所有表作基本变换,为每张在SQL Server中定义的表在HBase数据库中创建对应的表模式定义,并得到所有表在HBase数据库中的表模式定义集,为了下文引述方便,故将其称为HBase原始表模式定义集。
其次把表Color和表Model相对于表Goods作内嵌变换,即把表Color和表Model的模式定义添加到表Goods的列族中。由于对表Model和Color中数据的访问都是通过与表Goods连接查询所得,所以内嵌变换完后,把表Color和表Model的表模式定义从HBase原始表模式定义集中删除。
再把表Picture相对于表Goods、表Brand以及表Cantavil作分割变换,即把表Picture的模式定义添加到表Goods、表Brand以及表Cantavil的列族中。由于对表Picture数据的访问除了通过与表Goods、表Brand以及表Cantavil连接查询所得之外,还有通过对表Picture进行全表扫描而得到,所以分割变换完后,在这里并不把表Picture的表模式定义从HBase原始表模式定义集中删除。
最后把表GoodsRelated相对于表Goods作内联变换,即把表GoodsRelated的模式定义添加到表Goods的列族中。由于对表GoodsRelated中数据的访问都是通过与表Goods、表Model或表Color连接查询所得,所以内联变换完后,把表GoodsRelated的表模式定义从HBase原始表模式定义集中删除。
最终得到HouseDIY在HBase数据库中的表模式集。
为了比较本数据库迁移工具与同类工具在自动化、查询效率和空间效率的优劣,故选用了当前使用相当广泛的Kettle迁移工具,用其也对HouseDIY进行了数据库的迁移,并在不同数据集大小下分别对运用两个迁移工具迁移后所得的HBase数据库进行实验,结果如下。
在自动化方面,Kettle迁移工具需要手动指定所有要迁移的数据表的数据类型、在HBase数据库中对应的列族以及列名等,相对比较繁琐。本工具都能自动完成上述的工做,在变换表信息的部分自动化程度较高。但是,由于本工具需要对表进行四种模式变换,新旧数据库之间的表并不是一对一的关系,所以在变换的过程中需要手动指定对应的变换关系,在这部分上比Kettle显得麻烦。
在查询性能上,由于本工具为所有数据库查询中占很大部分的连接查询做了优化即四种表模式变换方法,因而同Kettle相比,能在不影响其它查询效率的前提下,在数据库中的表连接查询上得到了很高的效率提升,以一个典型的连接查询“SELECT GoodsName,PictureSize FROM Goods,Picture WHERE Goods.PictureID=Picture.PictureID”为例,实验结果如如图7所示。
在空间存储性能上,由于本工具为部分经过模式变换的表进行了冗余复制,因而同Kettle相比,转换后的数据库需要占用更大的存储空间,实验结果如图8所示。
从图7、图8可以看到,本数据库迁移工具借助于四种模式变换的帮助,以少量存储空间为代价使得变换后的HBase数据库表中的数据连接查询性能得到了极大的提升。从本质上来看,是以较小的空间代价换取较大时间效率,由于现代的硬件设备越来越廉价化,而查询效率在应用中却变得越来越宝贵,因而这种做法是非常值得的。
通过本发明所设计的数据库迁移工具,能够将以上所述的数据库迁移过程通过同开发人员的简单交互全部半自动化起来。工具不仅将原有SQLServer数据库中的表模式自动变换到HBase数据库中,同时也会将遗留数据从原始数据库中迁移到HBase中,能够帮助开发人员节省至少一个工作周的编程和测试工作。对于转换到HBase中的结果,同其它数据库迁移工具相比,在损失了部分存储空间性能的代价下,对数据的查询性能上得到了很大的提升。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
1.一种关系型数据库迁移到HBase数据库的工具,其特征在于,包括解析器、表模式转换器、表模式适配器和数据表管理器,所述解析器用于解析由外部工具从传统关系数据库导出的表模式定义文档;所述表模式转换器用于把传统关系数据库中的表模式定义转换成HBase数据库中的表模式,支持前文中所提到的四种表变换的方式;所述表模式适配器用于保存、读取已经由表模式转换器所转换过的表模式定义到指定的文件中,并为其它模块查找新的表模式定义提供接口;所述数据表管理器用于把存储在传统关系数据库中的数据迁移到HBase数据库中对应新定义的表中。
2.一种关系型数据库迁移到HBase数据库的方法,其特征在于,具体包括:在进行迁移前需对关系型数据库的表模式进行BCNF分解;预处理后对关系型数据库的表模式进行变换包括基本变换、内嵌变换、分割变换或内联变换得到符合HBase数据库定义的表模式;然后将关系型数据库的表中的数据读取并转存到Base数据库中对应新定义的表,
所述BCNF分解用于消去非主属性对键的部分函数依赖、非主属性对键的传递函数依赖以及主属性对键的传递函数依赖;
所述基本变换适用于把以关系数据库中表设计模式定义的表变换成HBase中的表;
所述内嵌变换用于当从表A到表B存在一对一、一对多或多对多的关系时,把表B作为表A的内嵌表;
所述分割变换用于当从表C到其余多个表之间都存在一对一、一对多或多对多的关系时,把表C进行分割,按照数据的映射关系,把表C中的每一行内嵌到对应的表中;
所述内联变换用于当从表A到表B存在一对一、一对多或多对多的关系,并且从表B到表C也存在一对一、一对多或多对多的关系时,把表C作为表A的内联表;
其中,表C为表B的从属关联关系表,表B为表A的从属关联关系表。
3.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,所述基本变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名,表A也添加到这个表的列族中;之后把表A的主键作为对应表的行键;最后把表A中定义的所有属性添加到对应表的列族1之中。
4.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,所述内嵌变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名;之后把表A和表B都添加到这个表的列族中;接着把表A的主键作为对应表的行键;随后把表A中定义的所有属性添加到对应表的列族1之中,把表B中所有同表A这一行有关的所有行属性都放入到列族2之中,最后,删除表B。
5.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,所述分割变换具体变换方法为:把表A和表B的表名分别作为HBase数据库中对应表的表名;之后把表A和表B分别添加到对应表的列族中,把表C都添加到这些表的列族之中;接着把表A和表B的主键分别作为对应表的行键;随后把表A和表B中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A或表B这一行有关的所有行属性都分别放入到对应表的列族2之中;最后删除表C。
6.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,所述内联变换具体变换方法为:把表A的表名作为HBase数据库中对应表的表名;之后把表A和表C都添加到这个表的列族中;接着把表A的主键作为对应表的行键;随后把表A中定义的所有属性添加到对应表的列族1之中,把表C中所有同表A这一行通过表B有间接关联的所有行属性都放入到列族2之中;最后删除表C。
7.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,总的迁移过程采用如下的决策为:先判断集合X是否为空,否则取出一个元素x,对其做基本变换,将结果元素y放入集合Y,是则直接得到集合Y;然后判断元素y在集合Y中是否与其他元素存在一对多、多对多的关系,是则取出一个关系映射c,并对关系映射c做内嵌、分割变换;否则进一步判断元素y在集合Y中是否需要做内联变换,如果否则返回判断集合X是否为空,若是则做内联变换。
8.根据权利要求2所述的关系型数据库迁移到HBase数据库的方法,其特征在于,对所有的表模式进行如下的简化处理:为每张表指定一个自增的主键;为表的每个属性设置一个默认值;减少表名称和属性名的长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410392438.9A CN104123392A (zh) | 2014-08-11 | 2014-08-11 | 一种关系型数据库迁移到HBase数据库的工具和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410392438.9A CN104123392A (zh) | 2014-08-11 | 2014-08-11 | 一种关系型数据库迁移到HBase数据库的工具和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104123392A true CN104123392A (zh) | 2014-10-29 |
Family
ID=51768803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410392438.9A Pending CN104123392A (zh) | 2014-08-11 | 2014-08-11 | 一种关系型数据库迁移到HBase数据库的工具和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123392A (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376103A (zh) * | 2014-11-26 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种基于雪花模型的多个HBase表关联方法 |
CN104391891A (zh) * | 2014-11-11 | 2015-03-04 | 上海新炬网络信息技术有限公司 | 一种数据库异构复制方法 |
CN104504008A (zh) * | 2014-12-10 | 2015-04-08 | 华南师范大学 | 一种基于嵌套的SQL到HBase的数据迁移算法 |
CN104639558A (zh) * | 2015-02-25 | 2015-05-20 | 浪潮集团有限公司 | 一种数据抽取方法和系统以及云平台 |
CN104915450A (zh) * | 2015-07-01 | 2015-09-16 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN104951528A (zh) * | 2015-06-15 | 2015-09-30 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN105279280A (zh) * | 2015-11-16 | 2016-01-27 | 天津南大通用数据技术股份有限公司 | 快速迁移Oracle数据到MPP数据库的方法及工具 |
CN105930354A (zh) * | 2016-04-08 | 2016-09-07 | 四川师范大学 | 存储模型转换方法和装置 |
CN105938479A (zh) * | 2016-03-31 | 2016-09-14 | 华南师范大学 | 一种关系表与非关系表的结构转换方法 |
CN106095991A (zh) * | 2016-06-21 | 2016-11-09 | 南京大学 | 一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法 |
CN106445727A (zh) * | 2015-08-07 | 2017-02-22 | 中国移动通信集团重庆有限公司 | 数据备份和恢复方法及系统 |
CN106921614A (zh) * | 2015-12-24 | 2017-07-04 | 北京国双科技有限公司 | 业务数据处理方法和装置 |
CN106933859A (zh) * | 2015-12-30 | 2017-07-07 | 中国移动通信集团公司 | 一种医疗数据的迁移方法和装置 |
CN108090106A (zh) * | 2016-11-22 | 2018-05-29 | 财团法人资讯工业策进会 | 数据库转换服务器及其数据库转换方法 |
CN108255966A (zh) * | 2017-12-25 | 2018-07-06 | 太极计算机股份有限公司 | 一种数据迁移方法及存储介质 |
CN109933416A (zh) * | 2019-02-01 | 2019-06-25 | 广东安可云科技有限公司 | 一种应用数据的迁移方法、装置及存储介质 |
CN110457279A (zh) * | 2019-07-11 | 2019-11-15 | 新华三大数据技术有限公司 | 数据离线扫描方法、装置、服务器及可读存储介质 |
CN110850824A (zh) * | 2019-11-12 | 2020-02-28 | 北京矿冶科技集团有限公司 | 一种将分布式控制系统数据采集至Hadoop平台的实现方法 |
CN112347080A (zh) * | 2020-11-11 | 2021-02-09 | 金蝶云科技有限公司 | 一种数据迁移方法及相关装置 |
CN112380180A (zh) * | 2020-11-17 | 2021-02-19 | 平安普惠企业管理有限公司 | 数据同步处理方法、装置、设备及存储介质 |
CN112783856A (zh) * | 2019-11-07 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 数据迁移方法和装置 |
US11036698B2 (en) | 2018-12-06 | 2021-06-15 | International Business Machines Corporation | Non-relational database coprocessor for reading raw data files copied from relational databases |
CN113254535A (zh) * | 2021-06-08 | 2021-08-13 | 成都新潮传媒集团有限公司 | 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004100021A2 (en) * | 2003-05-01 | 2004-11-18 | Oracle International Corporation | Retaining hierarchical information in mapping between xml documents and relational data |
CN102308297A (zh) * | 2011-07-13 | 2012-01-04 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移系统 |
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
-
2014
- 2014-08-11 CN CN201410392438.9A patent/CN104123392A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004100021A2 (en) * | 2003-05-01 | 2004-11-18 | Oracle International Corporation | Retaining hierarchical information in mapping between xml documents and relational data |
CN102308297A (zh) * | 2011-07-13 | 2012-01-04 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移系统 |
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
Non-Patent Citations (1)
Title |
---|
杨寒冰等: "HBase数据库迁移工具的设计与实现", 《计算机科学与探索》 * |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391891A (zh) * | 2014-11-11 | 2015-03-04 | 上海新炬网络信息技术有限公司 | 一种数据库异构复制方法 |
CN104391891B (zh) * | 2014-11-11 | 2017-12-05 | 上海新炬网络信息技术股份有限公司 | 一种数据库异构复制方法 |
CN104376103B (zh) * | 2014-11-26 | 2017-10-03 | 浪潮电子信息产业股份有限公司 | 一种基于雪花模型的多个HBase表关联方法 |
CN104376103A (zh) * | 2014-11-26 | 2015-02-25 | 浪潮电子信息产业股份有限公司 | 一种基于雪花模型的多个HBase表关联方法 |
CN104504008A (zh) * | 2014-12-10 | 2015-04-08 | 华南师范大学 | 一种基于嵌套的SQL到HBase的数据迁移算法 |
CN104504008B (zh) * | 2014-12-10 | 2018-10-02 | 华南师范大学 | 一种基于嵌套的SQL到HBase的数据迁移算法 |
CN104639558A (zh) * | 2015-02-25 | 2015-05-20 | 浪潮集团有限公司 | 一种数据抽取方法和系统以及云平台 |
CN104639558B (zh) * | 2015-02-25 | 2017-10-13 | 浪潮集团有限公司 | 一种数据抽取方法和系统以及云平台 |
CN104951528A (zh) * | 2015-06-15 | 2015-09-30 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN104951528B (zh) * | 2015-06-15 | 2019-08-23 | 深圳市创梦天地科技有限公司 | 一种数据迁移的方法及终端 |
CN104915450A (zh) * | 2015-07-01 | 2015-09-16 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN104915450B (zh) * | 2015-07-01 | 2017-11-28 | 武汉大学 | 一种基于HBase的大数据存储与检索方法及系统 |
CN106445727A (zh) * | 2015-08-07 | 2017-02-22 | 中国移动通信集团重庆有限公司 | 数据备份和恢复方法及系统 |
CN105279280A (zh) * | 2015-11-16 | 2016-01-27 | 天津南大通用数据技术股份有限公司 | 快速迁移Oracle数据到MPP数据库的方法及工具 |
CN106921614A (zh) * | 2015-12-24 | 2017-07-04 | 北京国双科技有限公司 | 业务数据处理方法和装置 |
CN106933859A (zh) * | 2015-12-30 | 2017-07-07 | 中国移动通信集团公司 | 一种医疗数据的迁移方法和装置 |
CN106933859B (zh) * | 2015-12-30 | 2020-10-20 | 中国移动通信集团公司 | 一种医疗数据的迁移方法和装置 |
CN105938479A (zh) * | 2016-03-31 | 2016-09-14 | 华南师范大学 | 一种关系表与非关系表的结构转换方法 |
CN105938479B (zh) * | 2016-03-31 | 2019-10-22 | 华南师范大学 | 一种关系表与非关系表的结构转换方法 |
CN105930354B (zh) * | 2016-04-08 | 2020-02-14 | 四川师范大学 | 存储模型转换方法和装置 |
CN105930354A (zh) * | 2016-04-08 | 2016-09-07 | 四川师范大学 | 存储模型转换方法和装置 |
CN106095991B (zh) * | 2016-06-21 | 2019-07-09 | 南京大学 | 一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法 |
CN106095991A (zh) * | 2016-06-21 | 2016-11-09 | 南京大学 | 一种自动生成从关系型数据库向MongoDB数据库数据迁移的代码的方法 |
CN108090106A (zh) * | 2016-11-22 | 2018-05-29 | 财团法人资讯工业策进会 | 数据库转换服务器及其数据库转换方法 |
CN108255966A (zh) * | 2017-12-25 | 2018-07-06 | 太极计算机股份有限公司 | 一种数据迁移方法及存储介质 |
US11036698B2 (en) | 2018-12-06 | 2021-06-15 | International Business Machines Corporation | Non-relational database coprocessor for reading raw data files copied from relational databases |
CN109933416A (zh) * | 2019-02-01 | 2019-06-25 | 广东安可云科技有限公司 | 一种应用数据的迁移方法、装置及存储介质 |
CN109933416B (zh) * | 2019-02-01 | 2023-09-05 | 广东安可云科技有限公司 | 一种应用数据的迁移方法、装置及存储介质 |
CN110457279A (zh) * | 2019-07-11 | 2019-11-15 | 新华三大数据技术有限公司 | 数据离线扫描方法、装置、服务器及可读存储介质 |
CN110457279B (zh) * | 2019-07-11 | 2022-03-11 | 新华三大数据技术有限公司 | 数据离线扫描方法、装置、服务器及可读存储介质 |
CN112783856A (zh) * | 2019-11-07 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 数据迁移方法和装置 |
CN110850824A (zh) * | 2019-11-12 | 2020-02-28 | 北京矿冶科技集团有限公司 | 一种将分布式控制系统数据采集至Hadoop平台的实现方法 |
CN112347080A (zh) * | 2020-11-11 | 2021-02-09 | 金蝶云科技有限公司 | 一种数据迁移方法及相关装置 |
CN112380180A (zh) * | 2020-11-17 | 2021-02-19 | 平安普惠企业管理有限公司 | 数据同步处理方法、装置、设备及存储介质 |
CN113254535A (zh) * | 2021-06-08 | 2021-08-13 | 成都新潮传媒集团有限公司 | 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104123392A (zh) | 一种关系型数据库迁移到HBase数据库的工具和方法 | |
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
US11461356B2 (en) | Large scale unstructured database systems | |
CN106960037B (zh) | 一种跨内外网的分布式索引资源整合与共享方法 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
US7516157B2 (en) | Relational directory | |
US7577637B2 (en) | Communication optimization for parallel execution of user-defined table functions | |
CN104123374A (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN110032604A (zh) | 数据存储装置、转译装置及数据库访问方法 | |
US20160055220A1 (en) | Data driven relational algorithm formation for execution against big data | |
WO2018036324A1 (zh) | 一种智慧城市信息共享的方法和装置 | |
CN103440303A (zh) | 一种异构云存储系统及其数据处理方法 | |
CN103425726A (zh) | 使用业务智能工具访问开放数据 | |
CN104252528B (zh) | 基于标识符空间映射的大数据二级索引构建方法 | |
CN103761080A (zh) | 一种基于SQL的MapReduce作业生成方法及系统 | |
EP2122511A1 (en) | Rest for entities | |
CN101710336A (zh) | 一种利用关系中间件加速数据处理的方法 | |
WO2010042238A1 (en) | System and method for data warehousing and analytics on a distributed file system | |
CN109213820B (zh) | 一种实现多种类型的数据库融合使用的方法 | |
WO2016045285A1 (zh) | 一种数据库的数据同步方法、装置及系统 | |
CN107506464A (zh) | 一种基于ES实现HBase二级索引的方法 | |
CN107491476B (zh) | 一种适用于多种大数据管理系统的数据模型转换及查询分析方法 | |
CN105808746A (zh) | 一种基于Hadoop体系的关系型大数据无缝接入方法及系统 | |
US20180150544A1 (en) | Synchronized updates across multiple database partitions | |
CN107656951A (zh) | 一种同步异构数据库系统中实时数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141029 |
|
RJ01 | Rejection of invention patent application after publication |