SQL Server数据库到HBase数据库的模式转换和数据迁移研究.docVIP

SQL Server数据库到HBase数据库的模式转换和数据迁移研究.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server数据库到HBase数据库的模式转换和数据迁移研究.doc

SQL Server数据库到HBase数据库的模式转换和数据迁移研究   摘要:大数据背景下,SQL Server关系型数据库的存储容量暴涨,如何高效的实现把SQL Server数据库中的数据迁移到HBase分布式数据库,是亟需解决的一个关键问题。讨论研究了两种数据库之间的差异之后,首先提出了数据库模式之间的转换,把SQL Server数据表的模式,按照不丢失关系的原则,转换成HBase下的表模式;然后根据不同的表间关系的数据迁移的规则,实现SQL Server数据库中的数据迁移到HBase数据库。因为表间转换关系和数据迁移规则的预定义,实现了一键完成数据的迁移。   关键词:SQLServer;HBase;迁移;模式;转换   中图分类号 TP393 文献标识码 A   0 引言   SQL Server是关系型数据库、按行存储,而HBase是分布式的非关系型数据库、按列存储。由于各自的这些特点,在建立数据库表模式时,SQL Server须指定表名、表中所有的字段及类型和主外键[1];而HBase在建立表模式时,须指定表名、列族和行键,但具体的列族中有哪些列是在插入数据时以键值对的形式出现,并且表间没有主外键的关联关系[2]。基于两者的这些不同特点,本文首先给出了SQL Server数据库到HBase数据库表模式转换的解决方案。HBase数据库中各个列族的数据会分散存储到不同的节点,而相互之间通过行键关联[3][4]。在SQL Server中关系表的数据,须存储到同一张HBase表的不同列族,才能在不损失效率的情况下实现快速有效查找。如何根据表模式转换的规则[5-6],从SQL Server数据库中获取到关联的数据,然后准确的插入到HBase表的对应列族中,文中研究给出了在适应大数据量的情况下,基于分页的数据迁移方案[7][8]。   1 表模式转换的整体解决方案   通过连接SQLServer数据库,获取指定数据库中所有表的相关信息(列名、列类型、主键、外键),然后根据表间关系的规则定义去发现SQLServer数据表中的关系,最后根据表模式转换规则定义,遍历关系转换成HBase表模式[9]。调用Java的工具包,配置和实例化HAdmin对象,调用添加HBase表列族的API函数把转换后的表模式执行到HBase数据库,从而建立HBase表模式,整体方案如图1所示。   2 获取Sql Server数据库表模式   数据库表模式的主要信息包括表名、列名、列类型、列约束以及主键、外键信息。数据库表模式的获取,也就是先获取到所有的数据库表的表名称,根据表名称依次获取主外键、列的相关信息,再将数据保存到TableDef的对象中,图2给出了获取Sql Server数据库表模式的处理过程。   获取Sql Server数据库中指定数据库的所有表的表模式按照如下步骤设计展开:   首先,执行StringBuffer sql = new StringBuffer(Select NAME FROM ) .append(database).append(..SysObjects Where XType=U ORDER BY Name);SQL查询得到数据库中所有的用户表的表名称,并保存到List列表中。   然后,根据表名执行Sql查询获取到一条数据表中的数据,得到结果集rs;rs.getMetaData()来解析提取到该数据表的元数据信息ma,至此就可以得到表的列数ma.getColumnCount(),以及各列的详细信息,包括列名Ma.getColumnName(i)、列类型ma.getColumnTypeName(i)、列类型长度ma.getColumnDisplaySize(i),其中i表示当前结果集中列的序号。   最后,就是获取表的主外键和关联关系信息,这也是把Sql Server数据库表模式转换到Hbase表模式的最重要的信息。具体的实现过程如下:   先通过meta =JDBCSqlTest.getConnection().getMetaData();取得数据库连接元数据,数据库的元数据信息包括了数据库中所有表的主键、外键及其他信息,这里只关注主外键的信息,并且可根据表名查找到指定表的主外键信息。   获取数据库表的主键的信息,可通过meta.getPrimaryKeys(null, null, tableName);获取到主键信息引用key。表中的主键列,具有相同的主键名,主键列COLUMN_NAME通过key.getString(COLUMN_NAME)获取,主键名PK_NAME则可通过key.getString(PK_NAME)得到。再使用key.next()可以获取下一条主键信息,直

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档