CN108255966A - 一种数据迁移方法及存储介质 - Google Patents
一种数据迁移方法及存储介质 Download PDFInfo
- Publication number
- CN108255966A CN108255966A CN201711416388.3A CN201711416388A CN108255966A CN 108255966 A CN108255966 A CN 108255966A CN 201711416388 A CN201711416388 A CN 201711416388A CN 108255966 A CN108255966 A CN 108255966A
- Authority
- CN
- China
- Prior art keywords
- data
- tlv
- formatted files
- value
- relation
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据迁移方法及存储介质,该方法包括:将Hbase数据库分成多个预定区域;将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;通过预定迁移实例将预设TLV格式文件中的数据并行迁移至多个预定区域。本发明将预定关系数据库中的关系数据转换为TLV格式的数据,使得原有BLOB类型的数据也能够进行迁移,且在迁移过程中将Hbase数据库分区,使得能够并行迁移数据,大大减少了数据迁移时间,解决了现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种数据迁移方法及存储介质。
背景技术
目前基于Hadoop(一种分布式系统基础架构)大数据生态环境的下的数据存储和数据分析,已经成为海量数据存储和数据分析的主流方向。海量数据的存储更是Hadoop集群环境相对关系性数据库存储的一个基本优势,但是怎样将原有的海量数据从关系性数据库中迁移到Hadoop集群环境中,仍是一个亟待解决的问题。针对此类问题,各方应用厂商、开源社区都提出相应的解决方法,比如比较流行通用的sqoop工具(是一款开源的工具,主要用于在Hadoop与传统的数据库间进行数据的传递)等,但是这些方法或工具,经过前期测试发现,现有数据迁移工具对关系性数据支持较好,但是对原有BLOB(binary largeobject,二进制大对象)类型的数据不支撑,无法做到高效的数据迁移。
发明内容
本发明提供一种数据迁移方法及存储介质,用以解决现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移。
为解决上述技术问题,一方面,本发明提供一种数据迁移方法,包括:将Hbase数据库分成多个预定区域;将预定关系数据库中的关系数据转换为TLV格式(一种编码格式,即Type Length Value三元组)的数据,并存入预设TLV格式文件;通过预定迁移实例将所述预设TLV格式文件中的数据并行迁移至所述多个预定区域。
可选的,将Hbase数据库分成多个预定区域,包括:按照预设抽样比例从所述预定关系数据库的数据表中进行随机抽样,得到抽样数据;对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;根据所有抽样数据的哈希值确定所述Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。
可选的,将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件,包括:判断每个从所述预定关系数据库中提取的关系数据是否为BLOB类型;在所述关系数据是BLOB类型的情况下,将所述关系数据的字段处理为Byte类型;在所述关系数据不是BLOB类型的情况下,将所述关系数据的字段处理为String类型;将所述处理后的关系数据存到所述TLV格式文件中。
可选的,将所述处理后的关系数据存到所述TLV格式文件中之后,还包括:检测当前的所述TLV格式文件是否已经存满预设大小的存储数据;在已经存满预设大小的存储数据的情况下,重新创建一个新的TLV格式文件存储所述处理后的关系数据。
可选的,通过预定迁移实例将所述TLV格式文件中的数据并行迁移至所述多个预定区域,包括:解析所述TLV格式文件的数据表中包含的列名称和列值;获取主键列的值,并判断所述主键列的值是否为主键的第一个字段;在是所述主键的第一个字段的情况下,将所述主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;根据所述列名称、所述列值和所述主键行的值获取所述TLV格式文件中的关系数据,并通过预定迁移实例迁移所述关系数据。
另一方面,本发明还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:将Hbase数据库分成多个预定区域;将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;通过预定迁移实例将所述预设TLV格式文件中的数据并行迁移至所述多个预定区域。
可选的,所述计算机程序在被所述处理器执行将Hbase数据库分成多个预定区域的步骤时,具体实现如下步骤:按照预设抽样比例从所述预定关系数据库的数据表中进行随机抽样,得到抽样数据;对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;根据所有抽样数据的哈希值确定所述Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。
可选的,所述计算机程序在被所述处理器执行将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件的步骤时,具体实现如下步骤:判断每个从所述预定关系数据库中提取的关系数据是否为BLOB类型;在所述关系数据是BLOB类型的情况下,将所述关系数据的字段处理为Byte类型;在所述关系数据不是BLOB类型的情况下,将所述关系数据的字段处理为String类型;将所述处理后的关系数据存到所述TLV格式文件中。
可选的,所述计算机程序在被所述处理器执行将所述处理后的关系数据存到所述TLV格式文件中的步骤之后,还被所述处理器执行以下步骤:检测当前的所述TLV格式文件是否已经存满预设大小的存储数据;在已经存满预设大小的存储数据的情况下,重新创建一个新的TLV格式文件存储所述处理后的关系数据。
可选的,所述计算机程序在被所述处理器执行通过预定迁移实例将所述TLV格式文件中的数据并行迁移至所述多个预定区域的步骤时,具体实现如下步骤:解析所述TLV格式文件的数据表中包含的列名称和列值;获取主键列的值,并判断所述主键列的值是否为主键的第一个字段;在是所述主键的第一个字段的情况下,将所述主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;根据所述列名称、所述列值和所述主键行的值获取所述TLV格式文件中的关系数据,并通过预定迁移实例迁移所述关系数据。
本发明将预定关系数据库中的关系数据转换为TLV格式的数据,使得原有BLOB类型的数据也能够进行迁移,且在迁移过程中将Hbase数据库分区,使得能够并行迁移数据,大大减少了数据迁移时间,解决了现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移。
附图说明
图1是本发明第一实施例中数据迁移方法的流程图;
图2是本发明第三实施例中HBase预分Region流程图;
图3是本发明第三实施例中关系数据抽取存储为TLV文件流程图;
图4是本发明第三实施例中TLV文件写入HBase数据库流程图。
具体实施方式
为了解决现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移;本发明提供了一种数据迁移方法及存储介质,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
本发明第一实施例提供了一种数据迁移方法,该方法的流程如图1所示,包括步骤S101至S103:
S101,将Hbase数据库分成多个预定区域;
S102,将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;
S103,通过预定迁移实例将预设TLV格式文件中的数据并行迁移至多个预定区域。
本发明实施例分别对Hbase数据库和预定关系数据库进行了改变,将Hbase数据库分成多个预定区域,将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件,随后通过预定迁移实例将预设TLV格式文件中的数据并行迁移至多个预定区域。
本实施例将预定关系数据库中的关系数据转换为TLV格式的数据,使得原有BLOB类型的数据也能够进行迁移,且在迁移过程中将Hbase数据库分区,使得能够并行迁移数据,大大减少了数据迁移时间,解决了现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移。
在将Hbase数据库分成多个预定区域时,可以是按照预设抽样比例从预定关系数据库的数据表中进行随机抽样,得到抽样数据;再对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;最后,根据所有抽样数据的哈希值确定Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。通过上述过程,就可以确定哪些区域接收哪些关系数据,为后续并行迁移数据做好基础准备。
在将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件的过程中,针对不同的数据类型进行不同的处理,因此需要判断每个从预定关系数据库中提取的关系数据是否为BLOB类型。在关系数据是BLOB类型的情况下,将关系数据的字段处理为Byte类型;在关系数据不是BLOB类型的情况下,将关系数据的字段处理为String类型;将处理后的关系数据存到TLV格式文件中。
随后,检测当前的TLV格式文件是否已经存满预设大小的存储数据;在已经存满预设大小的存储数据的情况下,则可以重新创建一个新的TLV格式文件存储处理后的关系数据。因此,可能会生成很多个TLV格式文件。
在通过预定迁移实例将TLV格式文件中的数据并行迁移至多个预定区域的过程中,可以先解析TLV格式文件的数据表中包含的列名称和列值,再获取主键列的值,并判断主键列的值是否为主键的第一个字段;在是主键的第一个字段的情况下,将主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;根据列名称、列值和主键行的值获取TLV格式文件中的关系数据,并通过预定迁移实例迁移关系数据。由于不同数据类型的关系数据已经都存为对应的类型,所以在后续恢复数据时,也是能够高效的进行数据恢复。
本发明第二实施例提供了一种存储介质,存储有计算机程序,计算机程序被处理器执行时实现如下步骤:
S1,将Hbase数据库分成多个预定区域;
S2,将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;
S3,通过预定迁移实例将预设TLV格式文件中的数据并行迁移至多个预定区域。
本实施例将预定关系数据库中的关系数据转换为TLV格式的数据,使得原有BLOB类型的数据也能够进行迁移,且在迁移过程中将Hbase数据库分区,使得能够并行迁移数据,大大减少了数据迁移时间,解决了现有技术的如下问题:现有数据迁移工具对关系性数据支持较好,但是对原有BLOB类型的数据不支撑,无法做到高效的数据迁移。
计算机程序在被处理器执行将Hbase数据库分成多个预定区域的步骤时,具体实现如下步骤:按照预设抽样比例从预定关系数据库的数据表中进行随机抽样,得到抽样数据;对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;根据所有抽样数据的哈希值确定Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。通过上述过程,就可以确定哪些区域接收哪些关系数据,为后续并行迁移数据做好基础准备。
在对关系数据进行预处理的过程中,可研对不同的数据类型进行不同的处理,计算机程序在被处理器执行将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件的步骤时,具体实现如下步骤:判断每个从预定关系数据库中提取的关系数据是否为BLOB类型;在关系数据是BLOB类型的情况下,将关系数据的字段处理为Byte类型;在关系数据不是BLOB类型的情况下,将关系数据的字段处理为String类型;将处理后的关系数据存到TLV格式文件中。
计算机程序在被处理器执行将处理后的关系数据存到TLV格式文件中的步骤之后,还被处理器执行以下步骤:检测当前的TLV格式文件是否已经存满预设大小的存储数据;在已经存满预设大小的存储数据的情况下,重新创建一个新的TLV格式文件存储处理后的关系数据。因此,可能会生成很多个TLV格式文件。
具体实现过程中,在计算机程序在被处理器执行通过预定迁移实例将TLV格式文件中的数据并行迁移至多个预定区域的步骤时,具体实现如下步骤:解析TLV格式文件的数据表中包含的列名称和列值;获取主键列的值,并判断主键列的值是否为主键的第一个字段;在是主键的第一个字段的情况下,将主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;根据列名称、列值和主键行的值获取TLV格式文件中的关系数据,并通过预定迁移实例迁移关系数据。由于不同数据类型的关系数据已经都存为对应的类型,所以在后续恢复数据时,也是能够高效的进行数据恢复。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例记载的方法步骤。可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本发明实施例根据对关系数据库中的数据进行抽样并做MD5Hash处理,对HBase数据库建表过程中对Region进行预分处理,防止后续数据定入过程中出现热点问题;关系数据导出TLV二进制文件,完整的保留了结构数据和非结构数据的关联关系;在数据回写HBase过程中起用高并发和缓存技术,保证数据的高效写入。本发明克服了常规工具和方法无法高效从关系数据库中迁移海量非结构图片数据的缺陷。
本发明第三实施例提供了提供了一种数据迁移方法,将关系数据中的数据进行高效率的抽取,并迁移写入Hadoop集群环境的HBase集群中。
本发明提供的数据迁移方法,包括:(1)HBbase预分Region(是HBase数据存储和管理的基本单位,一个表中可以包含一个或多个Region);(2)从关系型数据库中抽取数据生成TLV文件;(3)将数据迁入到HBase集群。下面分别对每个过程进行说明。
(1)HBase预分Region,是指在HBase表数据写入之前,提前给表预分一部分存储。此处理步骤主要有以下原因:
分散写入HBase的压力,充分发挥分布式,多线程并行处理的优势,避免HBase集中大量写入数据时出现热点,进而引起的Region过热导致HBase的RegionServer崩坏;尽量在写入数据时减少Region的split操作,因为过于频繁的split不仅消耗系统的资源,更甚导致Region的频繁上线下线,直接降低写入效率,严重时可能导致HBase集群崩溃。
HBase预分Region,主要处理步骤如下:
1、对关系型数据库中表数据进行抽样处理,从关系数据库数据中随机抽样,默认抽样比例为10%,可以根据实际情况输入参数进行调整。
2、将抽样数据存入数组中,并关闭数据库。
3、判断抽样数据是否为空,若不为空,则说明抽取到数据,就对数据进行MD5Hash离散处理(即一种数据离散加密算法)并放入Map中;如果抽样数据为空,则返回空。
4、将第三步中获取到的抽样数据MD5序列重新排序,并将MD5后的数据放入到splitKey链表中。
5、初始化HBase数据库实例,根据SplitKey链表进行建表预分Region数。
(2)从关系型数据库中抽取数据,是指将源关系型数据的数据抽取为特定的二进制TLV格式的数据文件。TLV是一种可变格式的二进制文件,意思就是:T-Type类型,L-Lenght长度,V-Value值;Type和Length的长度固定,一般都是2、4个字节(这里统一采用4个字节);Value的长度有Length指定。针对在本发明中的实际应用场景,特做以下处理:
1.避免每一条数据都需要记录列名信息,减少I/O次数,将表包含的所有列名称记入到TLV文件的head部分。
2.处理关系型数据库的基本数据类型varchar2/char/number等类型都转为String存储。
3.对于date类型数据转换为yyyy-mm-dd hh24:mi:ss格式的字符串处理。
文件格式如下:
head----TYPE_TABNAME SIZE TABLENAMETYPE_COLUMNS SIZE C1,C2,C3...
content----[TYPE_STR|TYPE_BYTES]SIZE VALUE[TYPE_STR|TYPE_BYTES]SIZEVALUE[TYPE_STR|TYPE_BYTES]SIZE VALUE
从关系型数据库中抽取数据为TLV文件的主要处理步骤如下:
1、根据程序入口传入的参数,初始化个参数变量。
2、连接关系型数据库,设置数据导出范围,这样数据集过大时,可以分批次导出。
3、根据初始化的数据表名写TLV文件的head部分数据。
4、对取出的数据判断数据类型,并根据数据类型写入TVL文件,除BLOB类型之外的字段全部处理为String类型,BLOB类型的字段转为Byte类型存入到TLV文件。
5、根据初始的参数判断写入的TLV文件是否已经满足单文件大小,如果满足则重新写一个新的文件;否则重复上面的步骤4和5,直至数据库中取出的数据处理完成。
(3)数据迁入到HBase集群,是指将生成的TLV格式的二进制文件解析,并写入到HBase集群中。主要处理步骤如下:
1、根据初始化参数,获取文件存放路径下的文件列表。
2、初始化多线程的HBase的Connection实例,并创建HTableInterface实例对对象以便后续写入HBase集群时调用。
3、解析TLV文件格式中的表名以及表中包含的列名称,并根据列顺序将TLV文件记录的列值信息存入Map<String,Object>对象中。
4、根据输入参数关系型数据库中表的主键规则,从步骤2)中读取主键列的值,并判断是否主键的第一个字段,如果是则进行MD5Hash处理之后写入StringBuilder对象RowKey中,否则直接写入StringBuilder对象RowKey中。
5、将步骤3获取到的表列名称及列值的Map对象以及步骤4获取到的RowKey值写入HBase的Put对象中,并调用已经初始化好的HTableInterface实例的put函数,写入集群中。
6、重复步骤2、3、4、5,直到文件处理完成。
本发明数据迁移工具整体包含根据抽样预分HBase数据库Region数、关系数据输出为TLV文件和TLV文件回写HBase数据库三部分。对Hbase数据库Region的预处理,可有效的避免的HBase数据写入过程中HBase的热点问题,防止了HBase集群节点脱机;通过TLV格式编码的二进制文件作为数据迁移的缓存文件,可以有效迁出BLOB和CLOB这类二进制大数据字段,并通过灵活控制进行数和线程数来调节关系数据库的压力;TLV从回写HBase数据利用高并发和缓存技术,实现多文件同时处理和数据的批量提交,可以有效的提高数据的定稿效率。
下面结合附图,分别对上述三个大步骤在具体实现时的程序设计的逻辑过程进行说明。
图2为HBase预分Region流程图,具体实现时,包括如下过程:
解析输入的参数,其中,tablename为oracle表名,key为主键,number为预分的Region的个数,total为总记录数,rato为抽样率,默认为百分之十,htable为Hbase的名字;判断参数格式是否正确;如果格式正确,则计算抽样数据的rowNum(行号),随后计算关系数据库抽样数据,初始化关系数据库连接;判断抽样数据rowNum是否被抽取完;如果不是,获取抽样数据记录的rowKey(行主键)存入数组中,抽样数据rowNum减1,继续返回判断抽样数据rowNum是否被抽取完;如果被抽去完,则关闭数据库,返回抽样数据,并对抽样数据的rowKey进行MD5Hash。随后,判断抽样数据是否为空;如果是空,则直接返回MD5处理的rowKey;如果不是空,判断抽样数据是否为null(零值);如果是null,则对抽样数据进行MD5处理,并返回MD5处理的rowKey,如果不是null,则将抽样数据进行MD5处理并存储到rowKey,随后返回MD5处理的rowKey。在返回MD5处理的rowKey后,根据splitNum和MD5计算完的rowKey计算splitkeys,使用treeset保存抽样数据rowKey,进行排序;判断MD5Hash数据是否为空;如果是空,则返回splitkey,并根据集群配置连接Hbase,根据splitkeys创建Hbase表;如果不是空,则将rowKey放入splitkeys,并返回splitkey。
图3为关系数据抽取存储为TLV文件流程,具体实现时,包括如下过程:
解析输入的参数,其中,SQL,表名为tablename,输出路径为outPath,文件名为filename,文件大小阈值为maxsize;检测参数格式是否正确,如果正确,则将文件大小转换为Byte,初始化关系数据库连接,执行抽取数据的SQL语句,并获取数据库的列名称getColumnName,并将列名称转换为大写存入到buffer中,设置TLV文件输出路径,文件大小设置为0,将表明写入TLV文件head中,记录文件长度,将表的列名写入TLV文件head中,记录文件长度,设置处理记录为0。
随后,检测处理结果是否有数据,如果没有数据,直接关闭数据库,如果有数据,将结果集写入到TLV文件中,并判断字段是否都写入到TLV文件中了。
如果都写入了TLV文件中,则判断TLV文件大小是否达到预设阈值,并在未达到预设阈值时,直接返回检测处理结果是否有数据的步骤,并在达到预设阈值时,关闭当前TLV文件并重新创建一个新的TLV文件,再返回检测处理结果是否有数据的步骤。
如果没有都写入TLV文件,则判断字段数据类型是否是数值类型,如果是数值类型,则将数据转换为String,并存储到TLV文件中,再取下一个字段,即返回判断字段是否都写入到TLV文件中的步骤。如果不是数值类型,则判断字段数据类型是否为字符类型的;如果是字符类型的,则处理该数据的值并将数据存入TLV文件中,再取下一个字段,即返回判断字段是否都写入到TLV文件中的步骤;如果不是字符类型的,则判断数据类型是否为BLOB类型,如果是BLOB类型,则将字段转化为Byte存入TLV文件,再取下一个字段,即返回判断字段是否都写入到TLV文件中的步骤,如果不是BLOB类型,则其他数据类型转换为Byte,并存入到TLV文件,再取下一个字段,即返回判断字段是否都写入到TLV文件中的步骤。
图4为TLV文件写入HBase数据库流程图,具体实现时,包括如下过程:
解析输入的数据;判断参数格式是否正确,如果正确,则实例化HBase,根据文件路径和文件名初始化文件列表,按参数初始化现成吃将对象放入线程池等待执行,多线程处理文件。判断线程是否可用,如果可用,则实例化HBase,判断文件列表是否为空,如果不为空,则读取一个TLV文件,解析数据表名称和数据表列字段名称,判断文件记录是否处理完。如果处理完,则返回至判断文件列表是否为空的步骤;如果没有处理完,则判断记录列值是否处理完。
如果记录列值处理完,则对rowKey做MD5Hash处理,将rowKey和列Value写入HBase的Put中,并判断缓存是否写完,如果写完,则提交写入HBase中,并返回判断记录列值是否处理完的步骤,如果没写完,则直接返回判断记录列值是否处理完的步骤。
如果记录列值没处理完,则判断字段是否是rowKey;如果是,则读取rowKey的Value放入缓存,并将字段Value放入缓存,取下一个列,返回判断记录列值是否处理完的步骤;如果不是,则直接将字段Value放入缓存,取下一个列,返回判断记录列值是否处理完的步骤。
本实施例的分预处理(HBase预分Region)、数据抽取、数据写入等处理步骤,可以通用于处理关系型数据库中各种类型的数据迁移到HBase集群环境,不再仅仅局限于常规关系型数据,对BLOB等大数据类型的数据处理也能够很好的支持,同时有效的分散了HBaseRegion的写入压力,可以有效的减少HBase因为Region写入热点过热导致HBase集群出现Region频繁下线的问题。
同时,因为数据抽取过程中,按照指定条件将符合内容的数据抽取为指定大小的TLV文件,写入过程也是按照抽取去生成的文件写入HBase集群,此种处理方式存在一下优点:如果抽取过程中出现错误,可以不用再全量抽取源数据库的数据,只需按照条件重新抽取本部分数据即可。导入HBase同样按照文件处理,个别文件写入失败,可以增量写入这个文件而不用,全量回退重写。
同时,因为数据已经生成,写入失败也不用再从源数据库抽取,减少源数据库的访问压力。由于源数据已经抽取为二进制文件存放,可以同时放入多个集群存储,即使集群崩溃也能及时快速的重建集群数据。
本发明实施例在系统数据迁移过程中针对关系数据库的数据迁出根据业务数据的压力不同的时段启动不同的进程数来抽取数据生成TLV文件。数据的写入主要在晚上启动多线程对数据进行集中处理,并记录数据处理结果,以便核验数据的一致性。经过数据的处理和验证,在不影响正常业务处理的情况下,每天处理迁移数据可以达到4T左右,且能够保证数据记录的一致性。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种数据迁移方法,其特征在于,包括:
将Hbase数据库分成多个预定区域;
将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;
通过预定迁移实例将所述预设TLV格式文件中的数据并行迁移至所述多个预定区域。
2.如权利要求1所述的数据迁移方法,其特征在于,将Hbase数据库分成多个预定区域,包括:
按照预设抽样比例从所述预定关系数据库的数据表中进行随机抽样,得到抽样数据;
对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;
根据所有抽样数据的哈希值确定所述Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。
3.如权利要求1所述的数据迁移方法,其特征在于,将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件,包括:
判断每个从所述预定关系数据库中提取的关系数据是否为BLOB类型;
在所述关系数据是BLOB类型的情况下,将所述关系数据的字段处理为Byte类型;
在所述关系数据不是BLOB类型的情况下,将所述关系数据的字段处理为String类型;
将所述处理后的关系数据存到所述TLV格式文件中。
4.如权利要求3所述的数据迁移方法,其特征在于,将所述处理后的关系数据存到所述TLV格式文件中之后,还包括:
检测当前的所述TLV格式文件是否已经存满预设大小的存储数据;
在已经存满预设大小的存储数据的情况下,重新创建一个新的TLV格式文件存储所述处理后的关系数据。
5.如权利要求1至4中任一项所述的数据迁移方法,其特征在于,通过预定迁移实例将所述TLV格式文件中的数据并行迁移至所述多个预定区域,包括:
解析所述TLV格式文件的数据表中包含的列名称和列值;
获取主键列的值,并判断所述主键列的值是否为主键的第一个字段;
在是所述主键的第一个字段的情况下,将所述主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;
根据所述列名称、所述列值和所述主键行的值获取所述TLV格式文件中的关系数据,并通过预定迁移实例迁移所述关系数据。
6.一种存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如下步骤:
将Hbase数据库分成多个预定区域;
将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件;
通过预定迁移实例将所述预设TLV格式文件中的数据并行迁移至所述多个预定区域。
7.如权利要求6所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行将Hbase数据库分成多个预定区域的步骤时,具体实现如下步骤:
按照预设抽样比例从所述预定关系数据库的数据表中进行随机抽样,得到抽样数据;
对每个抽样数据进行MD5Hash离散处理,以得到每个抽样数据的哈希值;
根据所有抽样数据的哈希值确定所述Hbase数据库预定区域的个数及每个预定区域接收数据的哈希值范围。
8.如权利要求6所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行将预定关系数据库中的关系数据转换为TLV格式的数据,并存入预设TLV格式文件的步骤时,具体实现如下步骤:
判断每个从所述预定关系数据库中提取的关系数据是否为BLOB类型;
在所述关系数据是BLOB类型的情况下,将所述关系数据的字段处理为Byte类型;
在所述关系数据不是BLOB类型的情况下,将所述关系数据的字段处理为String类型;
将所述处理后的关系数据存到所述TLV格式文件中。
9.如权利要求8所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行将所述处理后的关系数据存到所述TLV格式文件中的步骤之后,还被所述处理器执行以下步骤:
检测当前的所述TLV格式文件是否已经存满预设大小的存储数据;
在已经存满预设大小的存储数据的情况下,重新创建一个新的TLV格式文件存储所述处理后的关系数据。
10.如权利要求6至9中任一项所述的存储介质,其特征在于,所述计算机程序在被所述处理器执行通过预定迁移实例将所述TLV格式文件中的数据并行迁移至所述多个预定区域的步骤时,具体实现如下步骤:
解析所述TLV格式文件的数据表中包含的列名称和列值;
获取主键列的值,并判断所述主键列的值是否为主键的第一个字段;
在是所述主键的第一个字段的情况下,将所述主键列的值进行MD5Hash处理,并将处理后的主键列的值写入到主键行中,作为主键行的值;
根据所述列名称、所述列值和所述主键行的值获取所述TLV格式文件中的关系数据,并通过预定迁移实例迁移所述关系数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711416388.3A CN108255966A (zh) | 2017-12-25 | 2017-12-25 | 一种数据迁移方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711416388.3A CN108255966A (zh) | 2017-12-25 | 2017-12-25 | 一种数据迁移方法及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108255966A true CN108255966A (zh) | 2018-07-06 |
Family
ID=62723986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711416388.3A Pending CN108255966A (zh) | 2017-12-25 | 2017-12-25 | 一种数据迁移方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108255966A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851400A (zh) * | 2018-07-25 | 2020-02-28 | 北京国双科技有限公司 | 文本数据的处理方法及装置 |
CN111104396A (zh) * | 2019-12-31 | 2020-05-05 | 紫光云(南京)数字技术有限公司 | 一种跨数据库的数据迁移方法、数据访问方法 |
CN111694812A (zh) * | 2020-05-06 | 2020-09-22 | 五八有限公司 | 一种数据迁移方法以及数据迁移装置 |
CN111881116A (zh) * | 2020-08-05 | 2020-11-03 | 中国工商银行股份有限公司 | 数据迁移方法、数据迁移系统、计算机系统和存储介质 |
CN112486957A (zh) * | 2020-12-16 | 2021-03-12 | 平安普惠企业管理有限公司 | 数据库迁移检测方法、装置、设备及存储介质 |
CN114363377A (zh) * | 2022-01-11 | 2022-04-15 | 徐工汉云技术股份有限公司 | 一种机械车辆通信方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440301A (zh) * | 2013-08-21 | 2013-12-11 | 曙光信息产业股份有限公司 | 一种数据多副本混合存储方法及系统 |
US20140059017A1 (en) * | 2012-08-22 | 2014-02-27 | Bitvore Corp. | Data relationships storage platform |
CN103617211A (zh) * | 2013-11-20 | 2014-03-05 | 浪潮电子信息产业股份有限公司 | 一种HBase加载数据的导入方法 |
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
CN104065685A (zh) * | 2013-03-22 | 2014-09-24 | 中国银联股份有限公司 | 面向云计算环境的分层存储系统中的数据迁移方法 |
CN104123392A (zh) * | 2014-08-11 | 2014-10-29 | 吉林禹硕动漫游戏科技股份有限公司 | 一种关系型数据库迁移到HBase数据库的工具和方法 |
CN104252535A (zh) * | 2014-09-16 | 2014-12-31 | 福建新大陆软件工程有限公司 | 一种基于hbase的数据散列处理方法及装置 |
CN105205154A (zh) * | 2015-09-24 | 2015-12-30 | 浙江宇视科技有限公司 | 数据迁移方法以及装置 |
CN107122355A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107122361A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
-
2017
- 2017-12-25 CN CN201711416388.3A patent/CN108255966A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140059017A1 (en) * | 2012-08-22 | 2014-02-27 | Bitvore Corp. | Data relationships storage platform |
CN104065685A (zh) * | 2013-03-22 | 2014-09-24 | 中国银联股份有限公司 | 面向云计算环境的分层存储系统中的数据迁移方法 |
CN103440301A (zh) * | 2013-08-21 | 2013-12-11 | 曙光信息产业股份有限公司 | 一种数据多副本混合存储方法及系统 |
CN103617211A (zh) * | 2013-11-20 | 2014-03-05 | 浪潮电子信息产业股份有限公司 | 一种HBase加载数据的导入方法 |
CN103631907A (zh) * | 2013-11-26 | 2014-03-12 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
CN104123392A (zh) * | 2014-08-11 | 2014-10-29 | 吉林禹硕动漫游戏科技股份有限公司 | 一种关系型数据库迁移到HBase数据库的工具和方法 |
CN104252535A (zh) * | 2014-09-16 | 2014-12-31 | 福建新大陆软件工程有限公司 | 一种基于hbase的数据散列处理方法及装置 |
CN105205154A (zh) * | 2015-09-24 | 2015-12-30 | 浙江宇视科技有限公司 | 数据迁移方法以及装置 |
CN107122355A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107122360A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
CN107122361A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据迁移系统和方法 |
Non-Patent Citations (1)
Title |
---|
曹陈宸: "关系型数据库向MongoDB数据库自动迁移技术框架的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851400A (zh) * | 2018-07-25 | 2020-02-28 | 北京国双科技有限公司 | 文本数据的处理方法及装置 |
CN111104396A (zh) * | 2019-12-31 | 2020-05-05 | 紫光云(南京)数字技术有限公司 | 一种跨数据库的数据迁移方法、数据访问方法 |
CN111694812A (zh) * | 2020-05-06 | 2020-09-22 | 五八有限公司 | 一种数据迁移方法以及数据迁移装置 |
CN111881116A (zh) * | 2020-08-05 | 2020-11-03 | 中国工商银行股份有限公司 | 数据迁移方法、数据迁移系统、计算机系统和存储介质 |
CN112486957A (zh) * | 2020-12-16 | 2021-03-12 | 平安普惠企业管理有限公司 | 数据库迁移检测方法、装置、设备及存储介质 |
CN112486957B (zh) * | 2020-12-16 | 2023-08-25 | 李运涛 | 数据库迁移检测方法、装置、设备及存储介质 |
CN114363377A (zh) * | 2022-01-11 | 2022-04-15 | 徐工汉云技术股份有限公司 | 一种机械车辆通信方法及系统 |
CN114363377B (zh) * | 2022-01-11 | 2024-05-17 | 徐工汉云技术股份有限公司 | 一种机械车辆通信方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255966A (zh) | 一种数据迁移方法及存储介质 | |
CN107122443B (zh) | 一种基于Spark SQL的分布式全文检索系统及方法 | |
US10496621B2 (en) | Columnar storage of a database index | |
US9361187B2 (en) | File system metadata capture and restore | |
US20120221523A1 (en) | Database Backup and Restore with Integrated Index Reorganization | |
EP2946333B1 (en) | Efficient query processing using histograms in a columnar database | |
US10789231B2 (en) | Spatial indexing for distributed storage using local indexes | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
JP2017518584A (ja) | フラッシュ最適化データ・レイアウトのための方法、フラッシュ最適化記憶のための装置、およびコンピュータ・プログラム | |
CN107122355A (zh) | 数据迁移系统和方法 | |
CN107122360A (zh) | 数据迁移系统和方法 | |
CN106164865A (zh) | 用于数据复制的依赖性感知的事务批处理 | |
DE102010043265A1 (de) | Systeme und Verfahren zum Verarbeiten und Verwalten von objektbezogenen Daten zur Verwendung durch mehrere Anwendungen | |
CN107122361A (zh) | 数据迁移系统和方法 | |
CN106951475A (zh) | 基于云计算的大数据分布式处理方法及系统 | |
CN107491487A (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
CN106844682A (zh) | 数据交换方法、装置及系统 | |
US8756198B2 (en) | Enhancing data store backup times | |
CN102930060A (zh) | 一种数据库快速索引的方法及装置 | |
CN111427847A (zh) | 面向用户自定义元数据的索引与查询方法和系统 | |
CN104462185A (zh) | 一种基于混合结构的数字图书馆云存储系统 | |
CN106909554A (zh) | 一种数据库文本表数据的加载方法及装置 | |
CN116185308B (zh) | 一种数据集处理方法、装置、设备、介质及模型训练系统 | |
CN112214453A (zh) | 大规模工业数据压缩存储方法、系统及介质 | |
Lim et al. | An analysis of image storage systems for scalable training of deep neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180706 |
|
RJ01 | Rejection of invention patent application after publication |