- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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()可以获取下一条主键信息,直
您可能关注的文档
- OpenStack不仅要做大,更要做强.doc
- Openstack框架的大数据课程教学平台搭建及实验规划.doc
- Openstack这六年.doc
- Ophiognomonia castaneae协同板栗褐缘叶枯病病原菌致病作用的研究.doc
- OpTic Gaming联合创始人讨论“使命召唤”的电竞崛起.doc
- Oracle MAA在汽车行业电子政务平台中的应用.doc
- Oracle数据库系统的字符集转换问题分析.doc
- ORCID在科技期刊同行评议专家信息收集中的应用探讨.doc
- Origin软件在试验数据处理中的应用分析.doc
- Outline the strengths and weaknesses of performance―related pay (PRP) systems and assess their overall value.doc
文档评论(0)