关系型数据库与HBASE间的数据迁移介绍

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成为当前非常热门的问题。
1.数据库迁移技术研究现状
由于各类关系型数据库之间的高度相似性,使得在这类数据库之间迁移
变得相对简单。从SQL Server向其他例如Oracle、MySQL等关系型数
据库迁移时,已经有丰富的自动化或者半自动化的工具来帮助开发人员 完成整个迁移工作。 是否支持 表模式 SQL Server---->关系数据库 √ SQL Server---->Hbase ×
2.1表模式预处理
即是把表模式从关系型数据库迁移到HBase数据库(根据原有关系
型数据库表模式在HBase中重新设计表模式)的过程。
一般步骤: • 依照传统关系型数据库的设计方法对所有表进行初步设计;
• 对表模式进行BCNF分解(减少表间数据冗余和依赖关系);
定义BCNF范式:若关系模式R是第三范式,且每个属性都不传递 依赖于R的候选键。这种关系模式就是BCNF模式。 即在第三范式的基础上,数据库表中如果不存在任何字段对任一候 选关键字段的传递函数依赖。
数据迁移
• HBase数据库迁移工具的设计与实现
同济大学 杨寒冰 2013
• Kettle工具 • Apache sqoop
背景
• 互联网应用朝着数据海量化,用户访问高并行化的方向发 展,应用分布式数据库可以解决这一问题。其中HBase已 经成为目前最热门的NoSQL数据库。
• 如何将原先存储在关系型数据库中的数据迁移到HBase中
• • • Goods表为表1,把表1的表名作为HBase中对
应的表名,表1也添加到这个表的列族中。
之后把表1的主键作为对应表的行键。 最后把表1中定义的所有属性添加到对应表的 列族1中。
(3)有效性 在空间效率和查询效率上都相同。
2.2.2 内嵌变换
查询表1中的某一行时就能够得到同这一行所关联的所有表2中的数据,这样就可以避免 表1和表2的连接查询。
o 把数据写入到Cube o 把数据写入XML
支持多种查询
o o o o o o o 调用数据库存储过程 基本的数据库查询 判断表以及列、操作系统文件是否存在 从URL接收查询 使用Web服务查询信息 使用数据流中的值作为参数来执行一个数据库查询 流查询:从转换中其他流里查询值

转换功能
o 值映射、分组、去重、拆分字段、行列转换 o 复制行
对应 表名
把表3中所有 同表1或表2 这一行有关 的所有行属 性都分别放 入到对应表 的列族2中。
由于在变换过程中对子表进行了冗余存储,消耗稍多的存储空间, 但提高了由任意主表到子表的连接查询的效率。
2.2.4 内联变换
从表1到表2存在1对1、1对多或多对多关系,且表2到表3也存在这些关系时,把表3作为表1的内联表。 当查询表1中的某一行时,得到同这一行通过表2所间接关联的所有表3中的数据,这样就可以避免表 1、表2和表3这三张表之间的连接查询。 • • 表1:Goods(主表)、表2:Model、表3:GoodsRelated。 把表3中所有同表1这一行通过表2有间接关联的所有行属性都放入到列族2中。
2.2.3 分割变换
当从表3与其余表都存在1对1、1对多或多对多的关系时,可分割表,按照映射关系把表 3中的每一行内嵌到对应的表中。当查询表1或2中的某行时就能得到同这一行所关联的
表1 表3 所有表3的数据,避免表 3同其余与之有联系的所有表之间的连接查询。 表2
把表1和表2分别 添加到对应表的 列族中,表1和 表2的主键分别 作为对应表的行 键。
在结构化数据存储与Hadoop/HBase之间进行数据交换
支持多种关系数据库的迁移 图形化界面迁移
1.需要手动指定表与表之间 以及数据类型的对应关系。 2.只是将原有的表模式复制, 在数据查询时会带来性能上 的下降。
优点
缺点
只能复制数据,不能迁移表模式
可以看出,HBase中的表结构具有稀疏的特性,其结构同传统的关系型数据 库有着很大的差异,因此在为应用程序设计数据库中所有表的结构和关系时 也有许多不同之处,开发人员需要手工地重新设计HBase数据库中的表模式。
算法1(BCNF分解)若R不属于BCNF,则按如下算法将R分解成一组 BCNF模式。
通过范式分解,能够消去非主属性对键的部分函数依赖,非主属性对 键的传递函数依赖和主属性对键的传递函数依赖。
2.2表模式变换方法
• 基本变换
• 内嵌变换
• 分割变换
• 内联变换
2.2.1 基本变换
(1)适用场景 以传统关系数据库中表设计模式定义 的表变换成HBase中的表。 (2)变换方法
• • • Goods表为表1、Color表为表2,表1的表名作为HBase中对应的表名; 把表1和表2添加到列族中。表1的主键作为对应表的行键, 随后把表1中定义的所有属性添加到对应表的列族1中,把表2中所有同表1这一行有关的所有行属 性都放入到列族2中。根据情况删除表2。
在变换中对子表进行了冗余存储,会消耗稍多的存储空间,但提高了由主表到子表 的连接查询的效率。
2.迁移工具的设计
HBase数据库特点: • 单元格是有版本的(time-stamp); • 数据行是有序的(表中的行通过行关键字按字典序排序); • 只要列族存在,列便可以由客户端随时添加。 除此之外,HBase的表和RDBMS的表类似。 在HBase中查询数据: 全表扫描:对整张表进行扫描,所以花费的时间最长,效率也最差; 行键扫描:根据所给的键值取得一张表中行键对应的单条数据,是所有 查询方法中最快的查询方式; 区间扫描:介于两者之间。
数据类型
事务 存储过程 常用软件

√ √ SQL server migration assistant等第 三方软件
×
× × Sqoop,Kettle等
从关系型数据库向HBase迁移,目前必须由开发人员手工地完成从表结 构迁移直到数据内容迁移这一系列复杂的工作。
பைடு நூலகம்
Hbase数据迁移工具
Sqoop 来源 主要作用 Apache项目(2009) Kettle 开源ETL(extract, transform and load)
主要流程
• • 解析器(SchemaParser):解析由外部工具从传统RDBMS数据库导出的表模式定义 文档。 表模式转换器(Convertor):把传统RDBMS的表模式定义转换成HBase的表模式。


表模式适配器(Adapter):保存、读取已经由表模式转换器所转换过的表模式定义
到指定的文件中,并为其他模块查找新的表模式定义提供接口。 数据表管理器(TableManager):把存储在传统RDBMS数据库中的数据迁移到 HBase数据库中对应新定义的表中。
在变换中对子表进行了冗余存储,会消耗稍多的存储空间,但提高了由间接 主表到子表的连接查询的效率
选择变换类型
令在关系型数据库中原有的表集合为A,迁移后的在HBase数据库中的表集合为B,总的迁移过 程采用的决策图如图所示。
Kettle转换工具
Kettle 是一款开源的、元数据驱动的ETL工具集。
• • 特殊目标数据源支持
相关文档
最新文档