CN110555012B - 数据迁移方法及装置 - Google Patents
数据迁移方法及装置 Download PDFInfo
- Publication number
- CN110555012B CN110555012B CN201810458295.5A CN201810458295A CN110555012B CN 110555012 B CN110555012 B CN 110555012B CN 201810458295 A CN201810458295 A CN 201810458295A CN 110555012 B CN110555012 B CN 110555012B
- Authority
- CN
- China
- Prior art keywords
- data
- description information
- partition
- fragment
- batch
- 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.)
- Active
Links
Images
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/21—Design, administration or maintenance of databases
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
Abstract
本发明公开了一种数据迁移方法及装置,属于数据库领域。所述方法包括:获取源数据表中待迁移的目标数据的数据描述信息;创建与关系型数据库之间的M个数据连接以及N个数据处理任务;将该数据描述信息进行分批和分片的划分,得到多批描述信息;从多批描述信息中选择出一批描述信息,对选择出的一批描述信息执行如下处理,直至处理完多批描述信息为止:通过M个数据连接并行地从源数据表中依次获取与选择出的一批描述信息包括的多个分片描述信息对应的多个分片数据,并通过N个数据处理任务对多个分片数据并行进行处理,将处理后的多个分片数据加载至目标数据表中,如此,可以提高数据库的数据迁移效率,避免了对数据迁移装置的处理性能的影响。
Description
技术领域
本发明涉及数据库领域,特别涉及一种数据迁移方法及装置。
背景技术
随着信息技术的发展,需要存储的数据呈指数级增长,传统的关系型数据库因存储能力和访问性能有限,已逐渐无法满足用户的数据存储需求。面对这种情况,目前提出了一种分布式数据库,其可以利用多个数据存储单元分担存储负荷,实现海量数据的存储,且具有较优的访问性能。基于分布式数据库存在的优势,很多用户开始选择将原本存储在关系型数据库中的数据迁移至分布式数据库中。
相关技术中,关系型数据库和分布式数据库中的数据通常以数据表的形式存储,且在对关系型数据库中的数据进行迁移时,通常利用数据迁移装置进行整表迁移。具体地,对于关系型数据库中待迁移的源数据表,在数据迁移之前,数据迁移装置可以先获取源数据表与目标数据表之间的映射关系,然后按照该映射信息,通过与关系型数据库之间建立的一个数据连接,将源数据表中的数据从关系型数据库整体迁移至分布式数据库中。其中,目标数据表是指分布式数据库中该源数据表中的数据待迁移至的一个数据表。
但是,在对源数据表进行整体迁移时,由于数据迁移装置的处理资源是有限的,因此,如果源数据表的数据量过大,可能会影响数据迁移装置的处理性能,且迁移效率也较低。
发明内容
本发明实施例提供了一种数据迁移方法及装置,可以用于解决相关技术中存在的影响数据装置的迁移性能,且迁移效率较低的问题。所述技术方案如下:
第一方面,提供了一种数据迁移方法,应用于数据迁移装置,所述方法包括:
获取源数据表中待迁移的目标数据的数据描述信息,以及所述源数据表与目标数据表之间的映射关系,所述源数据表是指关系型数据库中的任一数据表,所述目标数据表是指分布式数据库中所述目标数据待迁移至的一个数据表;
创建所述数据迁移装置与所述关系型数据库之间的M个数据连接,并创建N个数据处理任务,所述M大于或等于所述N且小于或等于所述关系型数据库允许的数据连接数,所述N为所述分布式数据库的内核数量;
按照预设分批策略和预设分片策略,将所述数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息;
从所述多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完所述多批描述信息中的每批描述信息为止:
通过所述M个数据连接并行地从所述源数据表中依次获取与所述选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,将处理后的所述多个分片数据加载至所述目标数据表中。
可选地,所述通过所述M个数据连接并行地从所述源数据表中依次获取与选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,包括:
将所述选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中;
按照先进先出的原则,从所述分片队列中获取M个分片描述信息;
根据所述M个分片描述信息,分别通过所述M个数据连接,从所述关系型数据库中获取与所述M个分片描述信息一一对应的M个分片数据;
当所述M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从所述分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过所述对应的数据连接获取对应的分片数据,直至获取到所述多个分片数据为止。
可选地,所述根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,包括:
每当获取到所述多个分片数据中的一个分片数据时,从所述N个数据处理任务中确定一个空闲的数据处理任务;
根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理。
可选地,所述映射关系包括所述目标数据的过滤规则和转换规则;
所述根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理,包括:
通过所述空闲的数据处理任务,按照所述过滤规则,对所述获取的分片数据进行过滤;
通过所述空闲的数据处理任务,按照所述转换规则,对过滤后的分片数据进行转换。
可选地,所述分布式数据库包括多个分区,所述目标数据表中的数据存储于所述多个分区中的至少一个分区中;
所述将处理后的所述多个分片数据加载至所述目标数据表中,包括:
获取所述目标数据表的分区信息,所述分区信息包括所述目标数据表中的数据在所述至少一个分区的数据边界;
根据所述分区信息,对处理后的所述多个分片数据进行划分,得到所述至少一个分区对应的数据;
将所述至少一个分区对应的数据,对应加载至所述至少一个分区中。
可选地,所述将所述至少一个分区对应的数据,对应加载到所述至少一个分区中,包括:
对于所述至少一个分区中的一个分区A,确定所述分区A的数据文件数,所述数据文件数是预先为所述分区A配置的加载数据文件的数量;
根据所述数据文件数,将所述分区A对应的数据划分为T个数据集,所述T等于所述数据文件数;
将所述T个数据集对应生成所述T个数据文件;
将所述T个数据文件加载至所述分区A中。
可选地,所述将所述T个数据文件加载至所述分区A中,包括:
通过所述分布式数据库的批量加载接口,将所述T个数据文件批量加载至所述分区A中。
第二方面,提供了一种数据迁移装置,其特征在于,所述装置包括:
获取模块,用于获取源数据表中待迁移的目标数据的数据描述信息,以及所述源数据表与目标数据表之间的映射关系,所述源数据表是指关系型数据库中的任一数据表,所述目标数据表是指分布式数据库中所述目标数据待迁移至的一个数据表;
创建模块,用于创建所述数据迁移装置与所述关系型数据库之间的M个数据连接,并创建N个数据处理任务,所述M大于或等于所述N且小于或等于所述关系型数据库允许的数据连接数,所述N为所述分布式数据库的内核数量;
分批分片模块,用于按照预设分批策略和预设分片策略,将所述数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息;
处理模块,用于从所述多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完所述多批描述信息中的每批描述信息为止:
通过所述M个数据连接并行地从所述源数据表中依次获取与所述选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,将处理后的所述多个分片数据加载至所述目标数据表中。
可选地,所述处理模块包括:
存储单元,用于将所述选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中;
第一获取单元,用于按照先进先出的原则,从所述分片队列中获取M个分片描述信息;
第二获取单元,用于根据所述M个分片描述信息,分别通过所述M个数据连接,从所述关系型数据库中获取与所述M个分片描述信息一一对应的M个分片数据;
第三获取单元,用于当所述M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从所述分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过所述对应的数据连接获取对应的分片数据,直至获取到所述多个分片数据为止。
可选地,所述处理模块包括:
确定单元,用于每当获取到所述多个分片数据中的一个分片数据时,从所述N个数据处理任务中确定一个空闲的数据处理任务;
处理单元,用于根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理。
可选地,所述映射关系包括所述目标数据的过滤规则和转换规则;
所述处理单元具体用于:
通过所述空闲的数据处理任务,按照所述过滤规则,对所述获取的分片数据进行过滤;
通过所述空闲的数据处理任务,按照所述转换规则,对过滤后的分片数据进行转换。
可选地,所述分布式数据库包括多个分区,所述目标数据表中的数据存储于所述多个分区中的至少一个分区中;
所述处理模块包括:
第四获取单元,用于获取所述目标数据表的分区信息,所述分区信息包括所述目标数据表中的数据在所述至少一个分区的数据边界;
划分单元,用于根据所述分区信息,对处理后的所述多个分片数据进行划分,得到所述至少一个分区对应的数据;
加载单元,用于将所述至少一个分区对应的数据,对应加载至所述至少一个分区中。
可选地,所述加载单元具体用于:
对于所述至少一个分区中的一个分区A,确定所述分区A的数据文件数,所述数据文件数是预先为所述分区A配置的加载数据文件的数量;
根据所述数据文件数,将所述分区A对应的数据划分为T个数据集,所述T等于所述数据文件数;
将所述T个数据集对应生成所述T个数据文件;
将所述T个数据文件加载至所述分区A中。
可选地,所述加载单元具体用于:
通过所述分布式数据库的批量加载接口,将所述T个数据文件批量加载至所述分区A中。
第三方面,提供了一种数据迁移装置,所述数据迁移装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述数据迁移方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现上述数据迁移方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,可以获取源数据表中待迁移的目标数据的数据描述信息,并创建数据迁移装置与关系型数据库之间的M个数据连接以及N个数据处理任务,然后按照预设分批策略和预设分片策略,将获取的数据描述信息进行分批和分片的划分,以得到多批描述信息且每批描述信息中包括多个分片描述信息,之后即可根据该多批描述信息对该目标数据进行分批迁移,且每批数据可以通过这M个数据连接和N个数据处理任务并行地进行迁移,如此,可以提高数据库的数据迁移效率,避免对数据迁移装置的处理性能的影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种数据迁移系统的示意图;
图2是本发明实施例提供的一种数据迁移方法的流程图;
图3是本发明实施例提供的一种数据迁移装置的结构示意图;
图4是本发明实施例提供的一种数据迁移装置400的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在对本发明实施例进行详细地解释说明之前,先对本发明实施例的涉及的专业术语进行解释。
关系型数据库
关系型数据库是指建立在关系模型基础上的数据库,关系模型是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。具体地,关系型数据库可以为Oracle数据库、DB2数据库或SQL(Structured Query Language,结构化查询语言)数据库等。
分布式数据库(Distributed Database)
分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成的一个逻辑上统一的数据库。具体地,分布式数据库可以为HBase(HadoopDatabase,海杜普数据库)等。其中,HBase是一种分布式的、面向列的开源数据库,且HBase不同于一般的关系型数据库,它适应于非结构化数据存储。
本发明实施例中提供的数据迁移方法应用于对数据库中存储的数据进行迁移的场景中,具体应用于将原本存储在传统的关系型数据库中的数据迁移至目前新提出的分布式数据库中的场景中。例如,对于一些原本将用户数据存储在传统的关系型数据库中的企业,随着用户数据的增长,该企业可以将原本存储在关系型数据库中的用户数据迁移至分布式数据库中。
图1是本发明实施例提供的一种数据迁移系统的示意图,如图1所示,该数据迁移系统包括关系型数据库10、数据迁移装置20和分布式数据库30。
其中,数据迁移装置20可以分别与关系型数据库10和分布式数据库30进行连接,以将关系型数据库10中的数据迁移至分布式数据库30中。具体地,数据迁移装置20可以通过关系型数据库10的数据库接口与关系型数据库10进行连接,以及通过分布式数据库30的数据库接口与分布式数据库30进行连接。
实际应用中,数据迁移装置20可以为终端、服务器或者计算引擎等。例如,该数据迁移装置20为Spark,Spark是一种为大规模数据处理而设计的通用计算引擎。
相关技术中,在对关系型数据库中的数据进行迁移时,通常利用数据迁移装置进行整表迁移,且会将关系型数据库中待迁移的源数据表进行整体迁移,这样可能会影响数据迁移装置的处理性能,且迁移效率也较低。因此,为了提高数据迁移效率,本发明实施例提供了一种可以对关系型数据库中待迁移的目标数据进行分批迁移,且对每批数据还可以进行分片,并对每批数据中的多个分片数据进行并行迁移的方法。
具体地,数据迁移装置20用于获取源数据表中待迁移的目标数据的数据描述信息,以及源数据表与目标数据表之间的映射关系,其中,源数据表是指关系型数据库中的任一数据表,目标数据表是指分布式数据库30中该目标数据待迁移至的一个数据表;然后创建数据迁移装置20与关系型数据库10之间的M个数据连接,并创建N个数据处理任务,其中,M大于或等于该N且小于该关系型数据库允许的数据连接数,N为该分布式数据库的内核数量;之后,可以按照预设分批策略和预设分片策略,将该数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息,并从该多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完该多批描述信息中的每批描述信息为止:
通过该M个数据连接并行地从该源数据表中依次获取与该选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据该映射关系,通过该N个数据处理任务对该多个分片数据并行进行处理,将处理后的该多个分片数据加载至目标数据表中。
图2是本发明实施例提供的一种数据迁移方法的流程图,该方法应用于数据迁移装置中。参见图2,该方法包括:
步骤201:获取源数据表中待迁移的目标数据的数据描述信息,以及源数据表与目标数据表之间的映射关系,源数据表是指关系型数据库中的任一数据表,目标数据表是指分布式数据库中目标数据待迁移至的一个数据表。
其中,目标数据为源数据表中待迁移的数据,具体为源数据表的一个子集。目标数据的数据描述信息用于指示源数据表的数据迁移范围,即源数据表中的哪些数据为待迁移的目标数据。实际应用中,该目标数据的数据描述信息可以由用户预先配置,也即是,可以由用户配置源数据表的数据迁移范围。
本发明实施例中,通过获取源数据表中目标数据的数据描述信息,以根据目标数据的数据描述信息对源数据表中的目标数据进行迁移,可以向用户提供自由选择待迁移数据的能力,相较于相关技术中只能进行整表迁移的方式,数据迁移方式更加灵活,能够进一步满足用户的数据迁移需求,提高了用户体验。
具体地,目标数据的数据描述信息可以为目标数据在源数据表中的位置信息和/或满足的数据条件,该位置信息可以为行数和/或列数,该数据条件可以为where条件。例如,该目标数据的数据描述信息可以为指定的列和数据条件,用于指示该目标数据为源数据表中位于指定的列且满足该数据条件的数据。实际应用中,目标数据的数据描述信息可以为SQL语句,以通过SQL语句指示目标数据在源数据表中的位置信息和/或满足的数据条件。
其中,源数据表与目标数据表之间的映射关系主要用于配置源数据表中的数据迁移至目标数据表后的数据形式,进一步地,还可以用于配置目标数据表的元信息。实际应用中,该映射关系可以由用户配置,也可以由该数据迁移装置默认设置,本发明实施例对此不做限定。
具体地,该映射关系至少包括目标数据迁移过程中的数据处理规则,该数据处理规则可以包括过滤规则和转换规则,实际应用中,过滤规则和转换规则通常为函数形式。进一步地,该映射关系还可以包括源数据表中各列数据的源列名和映射在目标数据表中的目标列名、源数据表中各列数据的数据类型和映射在目标数据表中的数据类型以及源数据表中各列数据的约束条件和映射在目标数据表中的约束条件。实际应用中,源数据表中各列数据的数据类型和约束条件与其映射在目标数据表中的数据类型和约束条件通常都相同,即迁移前的数据和迁移后的数据的数据类型和约束条件通常都一致。
进一步地,该映射关系还可以包括目标数据表的配置信息,目标数据表的配置信息可以包括目标数据表的标识和各列的列名,该目标数据表的标识可以为目标数据表的名称或编号等。进一步地,当该分布式数据库包括多个分区,该目标数据表中的数据存储于该多个分区中的至少一个分区中时,该目标数据表的配置信息还可以包括该目标数据表的分区信息,该分区信息可以包括该目标数据表中数据在该至少一个分区的数据边界。例如,该分区信息可以为该目标数据表中数据在该至少一个分区的splitkey(分隔点)。进一步地,该目标数据表的配置信息还可以包括该至少一个分区的数据文件数,每个分区的数据文件数用于指示在该分区中加载数据时能够加载的数据文件的数量。另外,当该分布式数据库为Hbase时,该目标数据表的配置信息还可以包括列族。
示例的,该映射关系的详细内容可以如下表1所示,表1中的“_”表示对应列的数据值。
表1
源列名 | 数据类型 | 目标列名 | 非空 | 过滤规则 | 转换规则 |
pass_id | Long | cf.passId | Yes | _!=302L | plus(12) |
pass_time | String | cm.passTime | No | —— | getfirstDayOfMonth(_) |
… | … | … | … | … | … |
如表1所示,源数据表中源列名为“pass_id”的这列数据迁移至分布式数据库中之后,位于目标数据表中目标列名为“cf.passId”的列中,且迁移前和迁移后的数据类型均为Long型、约束条件均为非空。另外,该列数据的过滤规则为“_!=302L,即该列数据在数据迁移过程中需要过滤掉302L的数据,该列数据的转换规则为plus(12),即该列数据在数据迁移过程中需要加12。
实际应用中,可以通过SQL语句配置该目标数据的数据描述信息和该映射关系,示例的,用于配置该目标数据的数据描述信息和该映射关系的SQL语句可以如下所示:
select t.pass_id as pass_id,to_char(t.pass_time,'yyyy-mm-dd hh24:mi:ss')as pass_time,t.lane_no as lane_no,t.plate_no as plate_no from traffic_vehicle_pass t where t.pass_time>=to_timestamp('2015-04-01 00:00:00','yyyy-mm-dd hh24:mi:ss')and t.pass_time<=to_timestamp('2015-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss')
其中,“select t.pass_id as pass_id”用于指示选择迁移源数据表中列名为“pass_id”的列数据,且“as”前为选择迁移的数据在源数据表中的源列名,“as”后为数据迁移至目标列表之后在目标数据表中的目标列名,即可以通过“as”设置目标数据的别名。“where t.pass_time>=to_timestamp('2015-04-01 00:00:00','yyyy-mm-dd hh24:mi:ss')and t.pass_time<=to_timestamp('2015-05-01 00:00:00','yyyy-mm-dd hh24:mi:ss')”用于指示选择迁移时间范围在2015-04-01 00:00:00至2015-05-01 00:00:00之间的数据,且“yyyy-mm-dd hh24:mi:ss”为对应的数据转换规则。
进一步地,在数据迁移之前,还可以获取关系型数据库和分布式数据库的链接信息,以根据该关系型数据库的链接信息链接至该关系型数据库,以及根据该分布式数据库的链接信息链接至该分布式数据库。
其中,该关系型数据库的链接信息可以由该关系型数据库的URL(UniformResource Locator,统一资源定位符)以及用户的用户名和密码组成,该用户名和密码是指用户在该关系型数据库中注册的用户名和密码,只有根据该用户名和密码才能成功登录该关系型数据库,进而获取该用户在该关系型数据库中存储的数据。实际应用中,不同的关系型数据库的URL的格式相应不同。例如,以该关系型数据库为Oracle数据库为例,该Oracle数据库的地址信息可以为:jdbc:oracle:thin:@IP地址:端口/数据库实例名?user=用户名&password=密码。其中,“?”之前为该Oracle数据库的URL,“?”之后为用户名和密码。
其中,该分布式数据库的链接信息至少包括分布式数据库的地址信息和目标数据表的标识。该地址信息可以为zookeeper信息,zookeeper信息相当于分布式数据库的IP(Internet Protocol,网络之间互连的协议)信息。
需要说明的是,该目标数据表可以为该分布式数据库中已建立的一个数据表,也可以为未建立的数据表。当该目标数据表为未建立的数据表时,可以从该映射关系中获取该目标数据表的配置信息,并根据该配置信息在该分布式数据库中建立该目标数据表。在根据该配置信息在该分布式数据库中建立该目标数据表的过程中,当该分布式数据库为Hbase时,还可以根据各个列名的前缀对各列进行聚合和分类,以得到该目标数据表中的列族。
示例的,目标数据表的建表语句可以如下所示:
create'tablename',{NAME=>'cf',BLOCKSIZE=>'1048576',TTL=>'94867200',COMPRESSION=>'SNAPPY'},{NAME=>'cm',BLOCKSIZE=>'1048576',TTL=>'94867200',COMPRESSION=>'SNAPPY'},SPLITS=>['1501','15011000','15012000','15013000','15014000','15015000','15016000',……]
步骤202:创建该数据迁移装置与关系型数据库之间的M个数据连接,并创建N个数据处理任务,M大于或等于N且小于或等于关系型数据库允许的数据连接数,N为分布式数据库的内核数量。
其中,该数据迁移装置可以利用关系型数据库的数据库接口,创建与关系型数据库之间的数据连接。实际应用中,关系型数据库的数据库接口可以为JDBC(Java DatabaseConnectivity,java数据库连接)接口。
在一个实施例中,关系型数据库允许的数据连接数可以为关系型数据库能够提供的数据库接口的个数,该数据迁移装置可以利用关系型数据库提供的M个数据库接口,创建与关系型数据库之间的M个数据连接。通过创建该M个数据连接,可以便于后续通过该M个数据连接并行地从关系型数据库中获取目标数据,以提高数据获取效率,继而提高数据迁移效率。
其中,分布式数据库的内核数量用于指示分布式数据库能够并行处理任务的数量。通过创建与分布式数据库的内核数量相对应的数据处理任务,可以充分利用分布式数据库的内核资源并发地处理数据,以提高数据处理效率,且可以保证数据处理任务不会超出可利用的机器资源。
步骤203:按照预设分批策略和预设分片策略,将该数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息。
其中,该多批描述信息用于指示该目标数据包括的多批数据,每批描述信息中包括的多个分片描述信息用于指示每批描述信息对应的每批数据包括的多个分片数据。通过按照预设分批策略和预设分片策略,将该数据描述信息进行分批和分片的划分,可以实现对该目标数据进行分批和分片,从而便于后续对目标数据的分批迁移,以及每批数据中多个分片数据的并行迁移。
具体地,可以按照预设分批策略对该数据描述信息进行分批的划分,以得到多批描述信息,然后再按照预设分片策略,对该多批描述信息中的每批描述信息进行分片的划分,得到每批描述信息中的多个分片描述信息。
具体地,按照预设分批策略对该数据描述信息进行分批的划分可以包括以下两种实现方式:
第一种实现方式:按照第一预设数据间隔,对该数据描述信息进行分批的划分,以使划分得到的多批描述信息所对应的数据的数据间隔为该第一预设数据间隔。
其中,该第一预设数据间隔可以由该数据迁移装置默认设置,也可以由用户设置,本发明实施例对此不做限定。该多批描述信息所对应的数据的数据间隔为该第一预设数据间隔是指该多批描述信息中任意连续的两批描述信息所对应的两批数据中的前一批数据的第一个数据和后一批数据的第一个数据之间的数据间隔为该第一预设数据间隔。
实际应用中,目标数据通常包括多列数据,目标数据的数据描述信息可以包括多列数据的数据描述信息。因此还可以先从目标数据中选择数据类型为整型的一列数据,然后根据该第一预设数据间隔和选择的一列数据的数据描述信息,对该目标数据的数据描述信息进行分批的划分,以使划分得到的该多批描述信息所述对应的数据的数据间隔为该第一预设数据间隔。其中,所述整型可以为int型或long型等。
例如,假设目标数据的数据总量为TotalCount,该第一预设数据间隔为PatchCount,则若按照该第一预设时间间隔进行划分,目标数据的数据描述信息需要划分为patchNum=TotalCount/PatchCount个批次。假设选择的一列数据的数据类型为long型、列名为pass_id,若SQL中where条件有pass_id的限制,如pass_id>=startId and pass_id<=endId,则第一批描述信息为pass_id>=startId and pass_id<startId+PatchCount,第二批描述信息为pass_id>=startId+PatchCount and pass_id<startId+2*PatchCount,以此类推,第S批描述信息为pass_id>=startId+(S-1)*PatchCount andpass_id<startId+n*PatchCount。另外,若SQL中where条件没有pass_id的限制,则需要通过查表确定该目标数据中相隔该第一预设数据间隔的数据对应的每批描述信息中的最大pass_id和最小pass_id,然后将该最大pass_id和最小pass_id确定为每批描述信息的边界值。
第二种实现方式:按照第一预设时间间隔,对该数据描述信息进行分批的划分,以使划分得到的多批描述信息所述对应的数据的时间间隔为该第一预设时间间隔。
其中,该第一预设时间间隔可以由该数据迁移装置默认设置,也可以由用户设置,本发明实施例对此不做限定。该多批描述信息所对应的数据的时间间隔为该第一预设时间间隔是指该多批描述信息中任意连续的两批描述信息所对应的两批数据中的前一批数据的第一个数据和后一批数据的第一个数据对应的时间间隔为该第一预设时间间隔。
实际应用中,目标数据通常包括多列数据,目标数据的数据描述信息可以包括多列数据的数据描述信息。因此还可以先从目标数据中选择数据类型为时间类型的一列数据,然后根据该第一预设时间间隔和选择的一列数据的数据描述信息,对该目标数据的数据描述信息进行分批的划分,以使划分得到的多批描述信息所对应的数据的时间间隔为该第一预设时间间隔。其中,时间类型可以为日期类型,实际应用中,日期类型可以为String类型等。
具体地,按照预设分片策略,对该多批描述信息中的每批描述信息进行分片的划分可以包括:对于该多批描述信息中的每批描述信息,按照第二预设数据间隔对该批描述信息进行分片的划分,以使划分得到的多个分片描述信息所对应的数据的数据间隔为该第二预设数据间隔,且该第二预设数据间隔小于该第一预设数据间隔。或者,对于该多批描述信息中的每批描述信息,按照第二预设时间间隔对该批描述信息进行分片的划分,以使划分得到的多个分片描述信息所对应的数据的时间间隔为该第二预设时间间隔,该第二预设时间间隔小于该第一预设时间间隔。需要说明的是,具体地分片过程可以参考上述分批过程,本发明实施例在此不再赘述。
步骤204:从该多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下步骤205所述的处理,直至处理完该多批描述信息中的每批描述信息为止。
也即是,可以根据该多批描述信息,将该目标数据从该关系型数据库分批迁移至该分布式数据库中,对于该目标数据中的每批数据可以按照如下步骤205进行迁移。
通过对目标数据进行分批迁移,可以合理地利用数据迁移装置处理资源,避免了整体迁移时对数据迁移装置的处理性能的影响,提高了迁移效率。另外,相关技术中进行整表迁移时,如果迁移出错则需要人工重新配置,如果迁移停止则需要人工启动,因此需要较多的人工干预,而本发明实施例中,通过对目标数据进行分批,可以在一批数据迁移完成后自动迁移下一批数据,从而可以实现海量数据无需人工干预迁移,节省了人工成本,提高了迁移效率。
具体地,对于该多批描述信息,可以依次从该多批描述信息中选择出一批描述信息,然后将与选择出的一批描述信息对应的一批数据从关系型数据库迁移至该分布式数据库中,直至迁移完与该多批描述信息对应的多批数据为止。其中,将与选择出的一批描述信息对应的一批数据从关系型数据库迁移至该分布式数据库中的操作可以通过如下步骤205实现。
步骤205:通过该M个数据连接并行地从源数据表中依次获取与选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据该映射关系,通过该N个数据处理任务对该多个分片数据并行进行处理,将处理后的多个分片数据加载至目标数据表中。
也即是,对于每批数据包括的多个分片数据,可以一边通过该M个数据连接并行地获取分片数据,一边通过该N个数据处理任务对获取的分片数据并行地进行处理,之后再将处理后的分片数据加载至分布式数据库中,从而实现了对该多个分片的并行迁移,进一步提高了数据迁移效率。而且,在处理过程中,充分利用了分布式数据库的多核技术,实现了处理资源的合理利用,避免了对该数据迁移装置的处理性能的影响。
具体地,通过该M个数据连接并行地从源数据表中依次获取与选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据的操作包括如下步骤1)-4):
1)将选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中。
2)按照先进先出的原则,从该分片队列中获取M个分片描述信息。
例如,当该分片队列是通过队尾入队、队首出队时,可以获取该分片队列中位于队首的前M个分片描述信息。
3)根据该M个分片描述信息,分别通过该M个数据连接,从该关系型数据库中获取与该M个分片描述信息一一对应的M个分片数据。
也即是,可以通过该M个数据连接并行地从该关系型数据库中获取该M个分片数据,从而可以提高每批数据的获取效率,继而提高每批数据的迁移效率。
4)当该M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从该分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过该对应的数据连接获取对应的分片数据,直至获取到该多个分片数据为止。
也即是,在从该分片队列中获取M个分片描述信息之后,可以实时地或者周期性地判断该M个数据连接中是否存在空闲数据连接,当该M个数据连接中的任一数据连接空闲下来时,即可通过该数据连接继续获取下一个分片数据,从而实现该M个数据连接的并行获取。
具体地,根据该映射关系,通过该N个数据处理任务对该多个分片数据并行进行处理的操作包括:每当获取到该多个分片数据中的一个分片数据时,从该N个数据处理任务中确定一个空闲的数据处理任务,并根据该映射关系,通过该空闲的数据处理任务对获取的分片数据进行处理,直至完成对该多个分片数据的处理为止。
实际应用中,由于M大于或等于N,且每个分片数据的获取时长往往小于处理时长,因此分片数据的获取效率通常大于分片数据的处理效率,获取到分片数据之后,如果该N个数据处理任务中不存在空闲的数据处理任务,可以先等待,直至该N个数据处理任务中存在一个空闲的数据处理任务,再通过该空闲的数据处理任务对获取到的分片数据中最先获取的一个分片数据进行处理。
具体地,该映射关系可以包括目标数据的过滤规则和转换规则,根据该映射关系,通过该空闲的数据处理任务对获取的分片数据进行处理可以包括:通过该空闲的数据处理任务,按照该过滤规则对获取的分片数据进行过滤,然后通过该空闲的数据处理任务,按照该转换规则对过滤后的分片数据进行转换。
也即是,在对每个分片数据进行处理时,需要先进行过滤,再进行转换。另外,由于过滤规则和转换规则都是针对单列数据,而每个分片数据通常包括多行数据,该多行数据的每行数据又由多列组成,且处理过程中通常都是按照一行一行进行处理的,因此再对该目标数据进行处理之前,可以先从该映射关系中获取该目标数据包括的多列数据中每列数据的过滤规则,然后将该多列数据的过滤规则进行组合,得到一个组合过滤规则,并从该映射关系中获取该多列数据的转换规则,在对该分片数据进行处理的过程中,可以先根据该组合过滤规则对该分片数据的每行数据进行过滤,之后再根据各列数据的转换规则,对过滤后的每行数据中的各列数据分别进行转换。
实际应用中,可以通过“and”组合对该多列数据的过滤规则进行组合,得到一个过滤表达式,并将该过滤表达式确定为该组合过滤规则。从该映射关系中获取该多列数据的转换规则之后,可以按照对应的列顺序将该多列数据的转换规则进行排列,之后可以按照该多列数据的转换规则的排列顺序,对过滤后的每行数据中的多列数据分别进行转换。
在一个实施例中,将该目标数据包括的多列数据的过滤规则进行组合,得到一个组合过滤规则,以及按照对应的列顺序将该多列数据的转换规则进行排列,得到一个转换规则集之后,可以将该组合过滤规则作为数据处理链的第一位,并将该转换规则集作为数据处理链的第二位,之后在对分片数据的每行数据进行处理时,可以按照该数据处理链的模式顺序执行,即先按照组合过滤规进行过滤,再按照该转换规则集进行转换。
实际应用中,当该分布式数据库可以包括多个分区,该目标数据表中的数据存储于该多个分区中的至少一个分区中时,将处理后的该多个分片数据加载至该目标数据表中可以包括:获取该目标数据表的分区信息,该分区信息包括该目标数据表中的数据在该至少一个分区的数据边界;根据该分区信息,对处理后的多个分片数据进行划分,得到至少一个分区对应的数据;将该至少一个分区对应的数据,对应加载至该至少一个分区中。
通过按照目标数据表的分区结构,对处理后的该多个分片数据重新划分为至少一个分区对应的数据,即重新划分为不跨分区的至少一个数据集,可以保证按照分区加载数据,即保证数据加载时不会发生跨分区操作,从而不会对分布式数据库的实时使用产生较大影响,提高了数据迁移的精确度。
具体地,将该至少一个分区对应的数据,对应加载到该至少一个分区中可以包括:对于该至少一个分区中的一个分区A,确定该分区A的数据文件数,该数据文件数是预先为该分区A配置的加载数据文件的数量;根据该数据文件数,将该分区A对应的数据划分为T个数据集,该T等于该数据文件数;将该T个数据集对应生成该T个数据文件;将该T个数据文件加载至该分区A中。
实际应用中,当该分布式数据库为Hbase时,该T个数据文件的数据文件格式可以为Hfile。
相关技术中,通常是将数据处理后得到的整个数据集对应加载到一个分区中,但是当加载的数据集的数据量过大时,将会导致该分区出现内存溢出错误。而本发明实施例中,可以预先为每个分区配置数据文件数,在数据加载之前,可以根据每个分区的数据文件数将每个分区对应的数据划分为多个数据集,然后将多个数据集生成多个数据文件,并将该多个数据文件加载到对应分区中,如此可以避免一个分区仅加载一个数据集时数据量过大导致的内存溢出错误。另外,通过将多个数据集生成多个数据文件,还可以便于后续对该多个数据文件的批量加载。
具体地,将该T个数据文件加载至该分区A中可以包括:通过该分布式数据库的批量加载接口,将该T个数据文件批量加载至该分区A中。
通过对该T个数据集生成T个数据文件,并通过该分布式数据库的批量加载接口批量加载,可以使得加载过程中仅消耗极少的分布式数据库的处理资源,避免了对分布式数据库访问性能的影响和用户访问行为的干扰。
具体地,可以将该T个数据文件批量加载至该分区A中该目标数据表的数据目录下。进一步地,将该T个数据文件批量加载至该分区A中之后,还可以对该目标数据表的元信息进行更新,目标数据表的元信息是指目标数据表的概要信息,具体可以包括该目标数据表所属的分区个数以及每个分区下存储的数据文件信息等。
本发明实施例中,可以获取源数据表中待迁移的目标数据的数据描述信息,并创建数据迁移装置与关系型数据库之间的M个数据连接以及N个数据处理任务,然后按照预设分批策略和预设分片策略,将获取的数据描述信息进行分批和分片的划分,以得到多批描述信息且每批描述信息中包括多个分片描述信息,之后即可根据该多批描述信息对该目标数据进行分批迁移,且每批数据可以通过这M个数据连接和N个数据处理任务并行地进行迁移,如此,可以提高数据库的数据迁移效率,避免对数据迁移装置的处理性能的影响。而且,由于可以根据源数据表中待迁移的目标数据的数据描述信息对源数据表中的目标数据进行迁移,因此还可以配置源数据表的数据迁移范围,相较于相关技术中只能进行整表迁移的方式,数据迁移方式更加灵活。
图3是本发明实施例提供的一种数据迁移装置的结构示意图,如图3所示,该装置包括获取模块301、创建模块302、分批分片模块303和处理模块304。
获取模块301,用于获取源数据表中待迁移的目标数据的数据描述信息,以及该源数据表与目标数据表之间的映射关系,该源数据表是指关系型数据库中的任一数据表,该目标数据表是指分布式数据库中该目标数据待迁移至的一个数据表;
创建模块302,用于创建该数据迁移装置与该关系型数据库之间的M个数据连接,并创建N个数据处理任务,该M大于或等于该N且小于或等于该关系型数据库允许的数据连接数,该N为该分布式数据库的内核数量;
分批分片模块303,用于按照预设分批策略和预设分片策略,将该数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息;
处理模块304,用于从该多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完该多批描述信息中的每批描述信息为止:
通过该M个数据连接并行地从该源数据表中依次获取与该选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据该映射关系,通过该N个数据处理任务对该多个分片数据并行进行处理,将处理后的该多个分片数据加载至该目标数据表中。
可选地,该处理模块304包括:
存储单元,用于将该选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中;
第一获取单元,用于按照先进先出的原则,从该分片队列中获取M个分片描述信息;
第二获取单元,用于根据该M个分片描述信息,分别通过该M个数据连接,从该关系型数据库中获取与该M个分片描述信息一一对应的M个分片数据;
第三获取单元,用于当该M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从该分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过该对应的数据连接获取对应的分片数据,直至获取到该多个分片数据为止。
可选地,该处理模块304包括:
确定单元,用于每当获取到该多个分片数据中的一个分片数据时,从该N个数据处理任务中确定一个空闲的数据处理任务;
处理单元,用于根据该映射关系,通过该空闲的数据处理任务对获取的分片数据进行处理。
可选地,该映射关系包括该目标数据的过滤规则和转换规则;
该处理单元具体用于:
通过该空闲的数据处理任务,按照该过滤规则,对该获取的分片数据进行过滤;
通过该空闲的数据处理任务,按照该转换规则,对过滤后的分片数据进行转换。
可选地,该分布式数据库包括多个分区,该目标数据表中的数据存储于该多个分区中的至少一个分区中;
该处理模块304包括:
第四获取单元,用于获取该目标数据表的分区信息,该分区信息包括该目标数据表中的数据在该至少一个分区的数据边界;
划分单元,用于根据该分区信息,对处理后的该多个分片数据进行划分,得到该至少一个分区对应的数据;
加载单元,用于将该至少一个分区对应的数据,对应加载至该至少一个分区中。
可选地,该加载单元具体用于:
对于该至少一个分区中的一个分区A,确定该分区A的数据文件数,该数据文件数是预先为该分区A配置的加载数据文件的数量;
根据该数据文件数,将该分区A对应的数据划分为T个数据集,该T等于该数据文件数;
将该T个数据集对应生成该T个数据文件;
将该T个数据文件加载至该分区A中。
可选地,该加载单元具体用于:
通过该分布式数据库的批量加载接口,将该T个数据文件批量加载至该分区A中。
本发明实施例中,可以获取源数据表中待迁移的目标数据的数据描述信息,并创建数据迁移装置与关系型数据库之间的M个数据连接以及N个数据处理任务,然后按照预设分批策略和预设分片策略,将获取的数据描述信息进行分批和分片的划分,以得到多批描述信息且每批描述信息中包括多个分片描述信息,之后即可根据该多批描述信息对该目标数据进行分批迁移,且每批数据可以通过这M个数据连接和N个数据处理任务并行地进行迁移,如此,可以提高数据库的数据迁移效率,避免对数据迁移装置的处理性能的影响。而且,由于可以根据源数据表中待迁移的目标数据的数据描述信息对源数据表中的目标数据进行迁移,因此还可以配置源数据表的数据迁移范围,相较于相关技术中只能进行整表迁移的方式,数据迁移方式更加灵活。
需要说明的是:上述实施例提供的数据迁移装置在进行数据迁移时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据迁移装置与数据迁移方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的一种数据迁移装置400的结构示意图。该数据迁移装置400可以是终端、服务器或通用计算引擎等后。具体来讲:
数据迁移装置400包括中央处理单元(CPU)401、随机存取存储器(RAM)402和只读存储器(ROM)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。数据迁移装置400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。
基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为数据迁移装置400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。
根据本发明的各种实施例,数据迁移装置400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即数据迁移装置400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。所述一个或者一个以上程序包含用于进行本发明实施例提供的数据迁移方法的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (16)
1.一种数据迁移方法,其特征在于,应用于数据迁移装置,所述方法包括:
获取源数据表中待迁移的目标数据的数据描述信息,以及所述源数据表与目标数据表之间的映射关系,所述源数据表是指关系型数据库中的任一数据表,所述目标数据表是指分布式数据库中所述目标数据待迁移至的一个数据表,所述目标数据的数据描述信息包括所述目标数据在所述源数据表中的位置信息和/或满足的数据条件,所述位置信息为行数和/或列数;
创建所述数据迁移装置与所述关系型数据库之间的M个数据连接,并创建N个数据处理任务,所述M大于或等于所述N且小于或等于所述关系型数据库允许的数据连接数,所述N为所述分布式数据库的内核数量;
按照预设分批策略和预设分片策略,将所述数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息;
从所述多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完所述多批描述信息中的每批描述信息为止:
通过所述M个数据连接并行地从所述源数据表中依次获取与所述选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,将处理后的所述多个分片数据加载至所述目标数据表中。
2.如权利要求1所述的方法,其特征在于,所述通过所述M个数据连接并行地从所述源数据表中依次获取与选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,包括:
将所述选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中;
按照先进先出的原则,从所述分片队列中获取M个分片描述信息;
根据所述M个分片描述信息,分别通过所述M个数据连接,从所述关系型数据库中获取与所述M个分片描述信息一一对应的M个分片数据;
当所述M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从所述分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过所述对应的数据连接获取对应的分片数据,直至获取到所述多个分片数据为止。
3.如权利要求1所述的方法,其特征在于,所述根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,包括:
每当获取到所述多个分片数据中的一个分片数据时,从所述N个数据处理任务中确定一个空闲的数据处理任务;
根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理。
4.如权利要求3所述的方法,其特征在于,所述映射关系包括所述目标数据的过滤规则和转换规则;
所述根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理,包括:
通过所述空闲的数据处理任务,按照所述过滤规则,对所述获取的分片数据进行过滤;
通过所述空闲的数据处理任务,按照所述转换规则,对过滤后的分片数据进行转换。
5.如权利要求1-4任一所述的方法,其特征在于,所述分布式数据库包括多个分区,所述目标数据表中的数据存储于所述多个分区中的至少一个分区中;
所述将处理后的所述多个分片数据加载至所述目标数据表中,包括:
获取所述目标数据表的分区信息,所述分区信息包括所述目标数据表中的数据在所述至少一个分区的数据边界;
根据所述分区信息,对处理后的所述多个分片数据进行划分,得到所述至少一个分区对应的数据;
将所述至少一个分区对应的数据,对应加载至所述至少一个分区中。
6.如权利要求5所述的方法,其特征在于,所述将所述至少一个分区对应的数据,对应加载到所述至少一个分区中,包括:
对于所述至少一个分区中的一个分区A,确定所述分区A的数据文件数,所述数据文件数是预先为所述分区A配置的加载数据文件的数量;
根据所述数据文件数,将所述分区A对应的数据划分为T个数据集,所述T等于所述数据文件数;
将所述T个数据集对应生成所述T个数据文件;
将所述T个数据文件加载至所述分区A中。
7.如权利要求6所述的方法,其特征在于,所述将所述T个数据文件加载至所述分区A中,包括:
通过所述分布式数据库的批量加载接口,将所述T个数据文件批量加载至所述分区A中。
8.一种数据迁移装置,其特征在于,所述装置包括:
获取模块,用于获取源数据表中待迁移的目标数据的数据描述信息,以及所述源数据表与目标数据表之间的映射关系,所述源数据表是指关系型数据库中的任一数据表,所述目标数据表是指分布式数据库中所述目标数据待迁移至的一个数据表,所述目标数据的数据描述信息包括所述目标数据在所述源数据表中的位置信息和/或满足的数据条件,所述位置信息为行数和/或列数;
创建模块,用于创建所述数据迁移装置与所述关系型数据库之间的M个数据连接,并创建N个数据处理任务,所述M大于或等于所述N且小于或等于所述关系型数据库允许的数据连接数,所述N为所述分布式数据库的内核数量;
分批分片模块,用于按照预设分批策略和预设分片策略,将所述数据描述信息进行分批和分片的划分,以得到多批描述信息,每批描述信息中包括多个分片描述信息;
处理模块,用于从所述多批描述信息中选择出一批描述信息,对于选择出的一批描述信息执行如下处理,直至处理完所述多批描述信息中的每批描述信息为止:
通过所述M个数据连接并行地从所述源数据表中依次获取与所述选择出的一批描述信息包括的多个分片描述信息一一对应的多个分片数据,并根据所述映射关系,通过所述N个数据处理任务对所述多个分片数据并行进行处理,将处理后的所述多个分片数据加载至所述目标数据表中。
9.如权利要求8所述的装置,其特征在于,所述处理模块包括:
存储单元,用于将所述选择出的一批描述信息包括的多个分片描述信息依次存储在分片队列中;
第一获取单元,用于按照先进先出的原则,从所述分片队列中获取M个分片描述信息;
第二获取单元,用于根据所述M个分片描述信息,分别通过所述M个数据连接,从所述关系型数据库中获取与所述M个分片描述信息一一对应的M个分片数据;
第三获取单元,用于当所述M个分片数据中的任一分片数据通过对应的数据连接获取完成时,继续按照先进先出的原则,从所述分片队列中获取一个分片描述信息,并根据获取的分片描述信息,通过所述对应的数据连接获取对应的分片数据,直至获取到所述多个分片数据为止。
10.如权利要求8所述的装置,其特征在于,所述处理模块包括:
确定单元,用于每当获取到所述多个分片数据中的一个分片数据时,从所述N个数据处理任务中确定一个空闲的数据处理任务;
处理单元,用于根据所述映射关系,通过所述空闲的数据处理任务对获取的分片数据进行处理。
11.如权利要求10所述的装置,其特征在于,所述映射关系包括所述目标数据的过滤规则和转换规则;
所述处理单元具体用于:
通过所述空闲的数据处理任务,按照所述过滤规则,对所述获取的分片数据进行过滤;
通过所述空闲的数据处理任务,按照所述转换规则,对过滤后的分片数据进行转换。
12.如权利要求8-11任一所述的装置,其特征在于,所述分布式数据库包括多个分区,所述目标数据表中的数据存储于所述多个分区中的至少一个分区中;
所述处理模块包括:
第四获取单元,用于获取所述目标数据表的分区信息,所述分区信息包括所述目标数据表中的数据在所述至少一个分区的数据边界;
划分单元,用于根据所述分区信息,对处理后的所述多个分片数据进行划分,得到所述至少一个分区对应的数据;
加载单元,用于将所述至少一个分区对应的数据,对应加载至所述至少一个分区中。
13.如权利要求12所述的装置,其特征在于,所述加载单元具体用于:
对于所述至少一个分区中的一个分区A,确定所述分区A的数据文件数,所述数据文件数是预先为所述分区A配置的加载数据文件的数量;
根据所述数据文件数,将所述分区A对应的数据划分为T个数据集,所述T等于所述数据文件数;
将所述T个数据集对应生成所述T个数据文件;
将所述T个数据文件加载至所述分区A中。
14.如权利要求13所述的装置,其特征在于,所述加载单元具体用于:
通过所述分布式数据库的批量加载接口,将所述T个数据文件批量加载至所述分区A中。
15.一种数据迁移装置,其特征在于,所述数据迁移装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1-7任一项所述的数据迁移方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1-7任一项所述的数据迁移方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810458295.5A CN110555012B (zh) | 2018-05-14 | 2018-05-14 | 数据迁移方法及装置 |
PCT/CN2019/086871 WO2019219010A1 (zh) | 2018-05-14 | 2019-05-14 | 数据迁移方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810458295.5A CN110555012B (zh) | 2018-05-14 | 2018-05-14 | 数据迁移方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110555012A CN110555012A (zh) | 2019-12-10 |
CN110555012B true CN110555012B (zh) | 2022-03-25 |
Family
ID=68539498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810458295.5A Active CN110555012B (zh) | 2018-05-14 | 2018-05-14 | 数据迁移方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110555012B (zh) |
WO (1) | WO2019219010A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111241060A (zh) * | 2020-01-08 | 2020-06-05 | 苏州科达科技股份有限公司 | 数据迁移方法、系统、设备及存储介质 |
CN111291403B (zh) * | 2020-01-15 | 2023-09-19 | 上海新炬网络信息技术股份有限公司 | 基于分布式集群的数据脱敏装置 |
CN111291023A (zh) * | 2020-02-09 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种数据迁移的方法、系统、设备以及介质 |
CN112015716B (zh) * | 2020-08-04 | 2024-02-09 | 北京人大金仓信息技术股份有限公司 | 数据库数据迁移方法、装置、介质和电子设备 |
CN112445801A (zh) * | 2020-11-27 | 2021-03-05 | 杭州海康威视数字技术股份有限公司 | 数据表的元信息管理方法、装置及存储介质 |
CN112650736A (zh) * | 2020-12-31 | 2021-04-13 | 中国农业银行股份有限公司 | 一种数据迁移方法及装置 |
CN112835986B (zh) * | 2021-03-25 | 2024-02-20 | 中国工商银行股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113190534A (zh) * | 2021-05-26 | 2021-07-30 | 中国工商银行股份有限公司 | 数据库数据迁移方法及装置 |
CN113986825B (zh) * | 2021-12-27 | 2022-03-22 | 北京星汉未来网络科技有限公司 | 数据迁移的系统、方法、装置、电子设备及可读存储介质 |
CN114443581B (zh) * | 2022-04-11 | 2022-06-17 | 苏州浪潮智能科技有限公司 | 一种下载控制方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744949A (zh) * | 2013-12-31 | 2014-04-23 | 金蝶软件(中国)有限公司 | 数据集成方法和系统 |
CN105930389A (zh) * | 2016-04-14 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 数据结转的方法和系统 |
CN106612308A (zh) * | 2015-10-22 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 数据传输方法及装置 |
CN106649418A (zh) * | 2015-11-04 | 2017-05-10 | 江苏引跑网络科技有限公司 | 一种在驱动中直连分片实现分布式数据库数据导入的高性能方法 |
CN107436733A (zh) * | 2017-06-29 | 2017-12-05 | 华为技术有限公司 | 分片管理方法和分片管理装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262190A1 (en) * | 2003-08-27 | 2005-11-24 | Ascential Software Corporation | Client side interface for real time data integration jobs |
WO2012083679A1 (zh) * | 2011-07-13 | 2012-06-28 | 华为技术有限公司 | 一种数据迁移方法、数据迁移装置及数据迁移系统 |
CN103793424B (zh) * | 2012-10-31 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 数据库数据迁移方法及系统 |
US9183271B2 (en) * | 2012-12-04 | 2015-11-10 | Pivotal Software, Inc. | Big-fast data connector between in-memory database system and data warehouse system |
CN103631907B (zh) * | 2013-11-26 | 2016-09-07 | 中国科学院信息工程研究所 | 一种将关系型数据迁移至HBase的方法及系统 |
CN105630778A (zh) * | 2014-10-27 | 2016-06-01 | 青岛金讯网络工程有限公司 | 数据库数据迁移方法及系统 |
CN106095940A (zh) * | 2016-06-14 | 2016-11-09 | 齐鲁工业大学 | 一种基于任务负载的数据迁移方法 |
-
2018
- 2018-05-14 CN CN201810458295.5A patent/CN110555012B/zh active Active
-
2019
- 2019-05-14 WO PCT/CN2019/086871 patent/WO2019219010A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744949A (zh) * | 2013-12-31 | 2014-04-23 | 金蝶软件(中国)有限公司 | 数据集成方法和系统 |
CN106612308A (zh) * | 2015-10-22 | 2017-05-03 | 阿里巴巴集团控股有限公司 | 数据传输方法及装置 |
CN106649418A (zh) * | 2015-11-04 | 2017-05-10 | 江苏引跑网络科技有限公司 | 一种在驱动中直连分片实现分布式数据库数据导入的高性能方法 |
CN105930389A (zh) * | 2016-04-14 | 2016-09-07 | 北京京东尚科信息技术有限公司 | 数据结转的方法和系统 |
CN107436733A (zh) * | 2017-06-29 | 2017-12-05 | 华为技术有限公司 | 分片管理方法和分片管理装置 |
Non-Patent Citations (2)
Title |
---|
MongoDB based ship database construction and batch migration technology of its data;Pan M Y;《Journal of Dalian Maritime University》;20161231;全文 * |
Oracle数据库矢栅数据一体化存储与管理;吴政;《测绘学报》;20171231;第46卷(第05期);第639-648页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110555012A (zh) | 2019-12-10 |
WO2019219010A1 (zh) | 2019-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110555012B (zh) | 数据迁移方法及装置 | |
US20190213175A1 (en) | Data migration method and system | |
CN109063196B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
EP2954403B1 (en) | Cloud-based streaming data receiver and persister | |
US11429566B2 (en) | Approach for a controllable trade-off between cost and availability of indexed data in a cloud log aggregation solution such as splunk or sumo | |
CN108874803B (zh) | 数据存储方法、装置及存储介质 | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
EP2564318A1 (en) | Data center operation | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
CN110727738B (zh) | 基于数据分片的全局路由系统、电子设备及存储介质 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN110955704A (zh) | 一种数据管理方法、装置、设备及存储介质 | |
CN111694793A (zh) | 一种日志存储方法、装置及日志查询方法、装置 | |
CN113849499A (zh) | 数据的查询方法、装置、存储介质及电子装置 | |
WO2016175880A1 (en) | Merging incoming data in a database | |
KR20170130178A (ko) | 분산 환경 기반 빅데이터 실시간 분석을 위한 인-메모리 db 연결 지원형 스케줄링 방법 및 시스템 | |
US20220215021A1 (en) | Data Query Method and Apparatus, Computing Device, and Storage Medium | |
CN115952238A (zh) | 一种数据同步的方法及装置 | |
CN115525603A (zh) | 存储统计方法、装置、计算机可读存储介质与ai设备 | |
US11698911B2 (en) | System and methods for performing updated query requests in a system of multiple database engine | |
CN111881086B (zh) | 大数据的存储方法、查询方法、电子装置及存储介质 | |
CN114003580A (zh) | 一种运用于分布式调度系统的数据库构建方法及装置 | |
CN109063201B (zh) | 一种基于混合存储方案的impala在线交互式查询方法 | |
CN113407562A (zh) | 分布式数据库系统的通信方法及装置 | |
CN112035413A (zh) | 元数据信息查询方法、装置及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |