CN103246549A - 一种数据转存的方法及系统 - Google Patents
一种数据转存的方法及系统 Download PDFInfo
- Publication number
- CN103246549A CN103246549A CN2012100267244A CN201210026724A CN103246549A CN 103246549 A CN103246549 A CN 103246549A CN 2012100267244 A CN2012100267244 A CN 2012100267244A CN 201210026724 A CN201210026724 A CN 201210026724A CN 103246549 A CN103246549 A CN 103246549A
- Authority
- CN
- China
- Prior art keywords
- data
- storage device
- task
- subtask
- information
- 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.)
- Granted
Links
Images
Abstract
本申请公开了一种数据转存的方法及系统,其中,所述数据转存的方法用于基于一分布式系统将存储于第一储存装置的数据存储到第二储存装置中,所述方法包括:所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;所述分布式系统将所述任务分成至少一个子任务;所述分布式系统将所述至少一个子任务分发给所述分布式系统的至少一个进程;通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
Description
技术领域
本申请涉及数据处理领域,尤其涉及一种数据转存的方法及系统。
背景技术
随着计算机及网络的技术不断发展,通过计算机处理的数据的量和业务种类也是越来越多,通常会采用数据库技术,以提高对数据的处理效率,以更好地实现对业务的处理。
在传统的互联网领域,作为核心关键数据的存储中心的数据库,承担了基于全部前端页面的访问。目前常见的访问数据库、获取数据的方法,主要有两种,一种是通过单机按照一定的顺序对数据库中各个数据表的数据进行转存;另一种是通过脚本协同一组机器对数据库中的各个数据表进行数据转存。
如图1所示,其为通过脚本协同一组机器对数据库中的各个数据表进行数据转存的流程图,主要包括如下步骤:
S101:定义需要数据转存的数据表的集合M,即有M张数据表需要进行数据转存;
S102:定义可用的机器资源集合N,即有N台机器可以使用;
S103:以数据表为单位给每个机器平均分配资源,即每个机器平均分得M/N个数据表的数据转存任务;
S104:在每台机器上并行执行如下操作:使用数据库接口依次对分配到每个机器的数据表的数据进行数据转存操作;
S105:判断该数据表是否是本机的最后一张数据表,如果判断结果为否,转向S104;如果判断结果为是,转向S106;
S106:反馈信息给总控脚本告知本机数据转存任务完成;
S107:总控脚本收到所有机器的完成信息后,整体并行任务结束。
在实现本申请实施例中技术方案的过程中,申请人发现现有技术中至少存在如下问题:
(1)由于在现有技术中,采用的是单机或者多机对数据表中的数据进行数据转存,其机器规模小并且需要机器本地读和写各一次,故而存在着数据转存速率慢、效率低的技术问题;
(2)由于在现有技术中,机器的硬件容量有限制,而对数据转存又需要大频率的读写操作,故而存在着机器的损坏率较高的技术问题;
(3)由于在现有技术中,进行数据转存的硬件环境并不稳定,故而存在着如果发生死机等情况,数据转存的任务无法进行转移和恢复的技术问题;
(4)由于在现有技术中,进行数据转存时的软件也不稳定,比如数据库或者网络链路会偶尔出现不稳定的情况,故而在此种情况下存在着数据转存任务失败并且不能自动恢复的技术问题;
(5)由于在现有技术中,对于系统进行扩展和控制比较困难,故而不能控制对数据库的访问压力;
(6)由于在现有技术中,难以系统的管理数据转存的过程和转存出的数据,故而存在着在数据转存过程中,任何一张数据表出现错误后该数据表中的数据都不易恢复、以及转存出的数据分散于各个机器难以统一管理的技术问题。
发明内容
本申请提供一种数据转存的方法及系统,用以解决现有技术中存在的数据转存效率低和速度慢的技术问题。
本申请通过本申请中的实施例,提供如下技术方案:
一方面,本申请通过本申请中的一个实施例,提供如下技术方案:
一种数据转存方法,用于基于一分布式系统将存储于第一储存装置的数据存储到第二储存装置中,所述方法包括:
所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
所述分布式系统将所述任务分成至少一个子任务;
所述分布式系统将所述至少一个子任务分发给所述分布式系统的至少一个进程;
通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
另一方面,本申请通过本申请中的另一实施例提供如下技术方案:
一种数据转存的系统,用于将存储于第一储存装置的数据存储到第二储存装置中,所述系统包括:
文件单元:用于获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
处理单元:所述处理单元具体包括:
分割模块:用于将所述任务分成至少一个子任务;
分发模块:用于将所述至少一个子任务分发给分布式系统的至少一个进程;
转存模块:用于通过在所述至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例针对不同的数据库以及不同类型的数据进行转存时,采用不同的方案。对于没有经过分库分表处理的数据库,在进行全表数据转存时,获取该数据库中的段信息、起始行ID、结束行ID,然后基于这些索引信息,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息;对其进行增量数据转存时,获得该数据库中的段信息、增量数据的行ID,然后基于这些索引信息,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息;对于经过分库分表处理的数据库,直接获取该数据库中数据表的连接语句,比如SQL语句,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息。进而提高了数据转存的速度和稳定性以及降低单机的损耗。
附图说明
图1为本申请现有技术中利用多机进行数据转存的流程图;
图2为本申请实施例一中一种数据转存的方法的流程图;
图3为本申请实施例一中基于数据库获得配置信息的流程图;
图4为本申请实施例一中基于Oracle数据库获取配置信息的流程图;
图5为本申请实施例一中segmentList.txt的示意图;
图6A为本申请实施例一中在T1时刻块766中数据的示意图;
图6B为本申请实施例一中在T2时刻块766中数据的示意图;
图6C为本申请实施例一中rowidList.txt的示意图;
图7为本申请实施例一中当执行子任务出现错误时的处理流程图;
图8为本申请实施例二中数据转存系统的方框图。
具体实施方式
现有技术在对数据进行转存时,由于只是基于单机或者多机对数据表中的数据进行数据转存,而机器规模小并且需要机器本地读和写各一次,故而在速度上、容量上都不能满足大规模的数据转存的需要,另外,大规模的读写操作对于单机硬盘的损坏也较大,并且进行数据转存的软件不够稳定以及在出现错误的时候没法纠正,故而存在着在进行数据转存任务失败时没法恢复并且对单机损坏较大的技术问题。
本申请实施例提出一种数据转存的方法和系统,旨在提高数据转存的速度和稳定性以及降低单机的损耗。
为了使本申请所属技术领域中的技术人员更清楚地理解本申请,下面结合附图,通过具体实施例对本申请技术方案作详细描述。
实施例一
请参考图2至图7,本申请实施例一提供一种数据转存的方法,用于将存储于第一储存装置的数据存储到第二储存装置中。
在具体实施过程中,进行数据转存的系统为一分布式系统,比如Hadoop分布式系统,所述分布式系统由两部分组成,一部分为HDFS(Hadoop DistributedFile System,分布式文件系统),另一部分为MapReduce(计算系统);所述第一储存装置可以是数据库,比如Oracle数据库、MYSQL数据库等,而第二储存装置一般为分布式系统的HDFS。进行数据转存的过程,也就是将位于数据库中的数据转存于分布式系统的HDFS上。
如图2所示,所述数据转存的方法包括如下步骤:
S201:所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
在具体实施过程中,所述任务基于数据库的不同,表现为不同的形式。如果要进行数据转存的数据库,对于还没有进行分库分表处理的,所述任务主要可包括要进行数据转存的数据库的数据的索引信息;而如果进行数据转存的数据库,已经经过分库分表处理,那么所述任务可包括所述数据库的连接语句信息。比如,如果需要进行数据转存的数据库为Oracle数据库,那么这里的任务为所述要进行数据转存的数据库的段信息、段中的数据的起始行ID,结束行ID;而对于MYSQL数据库,那么这里的任务就包括连接该数据库的SQL语句。除此之外,所述任务还包括如下信息:数据转存的输出设置信息和数据库连接信息等。所述输出设置可包括:数据转存完成之后的数据输出路径、数据输出格式等;所述数据库连接信息可包括:用户名、密码、数据库名等。通过所述数据输出设置信息可以方便地增加要进行数据转存的数据表,灵活设置输出路径、格式等,故而能够很好地满足数据转存的需要。下面分别针对没有经过分库分表处理的数据库和经过分库分表处理的数据库的获取任务过程进行分别详细介绍。
所述步骤201,获得基于所述第一储存装置的目录信息建立的与将所述第一储存装置中数据存储到所述第二储存装置相关的任务,如图3所示,具体包括如下步骤:
S301:获得配置信息,所述配置信息中包含所述第一储存装置的第一连接信息,以及所述第一储存装置中每一个需要进行数据转存的数据表的第二连接信息;
在具体实施过程中,于启动数据转存的单机上获得所述配置信息,所述配置信息包括如下内容:
(1)数据库连接信息,其中,数据库连接信息可包括用户名、密码、数据库名等;
(2)需要做数据转存的数据表的连接信息;
(3)数据转存的数据输出设置,数据输出设置项可包括数据转存完成之后的数据输出路径、数据输出格式以及数据获取的所述任务的储存地址等;
(4)数据库的类型,比如是Oracle数据库、MYSQL数据库或者其它数据库;
(5)数据转存的类型,比如是进行全表数据转存还是进行增量数据转存;
通过配置信息可以方便的增加要进行数据转存的数据表,灵活设置输出路径、很好的满足数据转存的需要。
S302:判断存储于所述第一储存装置中的数据是否经过分库分表处理,如果判断为否,执行步骤S303;如果判断为是,执行步骤S304;
在获得配置信息之后,就可以基于前面获得的配置信息中包含的数据库的类型来判断该数据库是否经过分库分表处理,比如如果是Oracle数据库,那么说明该数据库没有经过分库分表处理,而如果是MYSQL数据库,则表示该数据库经过分库分表处理。由于经过分库分表处理的数据库,在存储时已经按照一定的规则,比如按ID取模,把数据均匀的存储到不同机器的分库和分表之中,故而在处理的时候比较直观,直接基于连接语句进行数据转存即可,而对于没有经过分库分表处理的数据库,在处理的时候要采取一系列的优化措施,故而较为复杂,因此,对于经过分库分表处理的数据库和没有经过分库分表处理的数据库,在进行数据转存时,其处理方法是不同的。
S303:获取所述第一储存装置中每一个需要进行数据转存的数据表中的每一个数据块的索引信息;以及基于所述索引信息建立所述任务。
下面,以所述第一储存装置中存放的数据库为Oracle数据库为例来介绍对没有经过分库分表处理的数据库建立任务的方法。其中,所述Oracle数据库中包含至少一个数据表信息、每一个数据表信息又包含至少一个段信息、每一个段信息包含至少一个数据块信息。
进一步的,所述步骤S303,获取所述第一储存装置中每一个需要进行数据转存的数据表的中的每一个数据块的索引信息;基于所述索引信息建立所述任务,如图4所示,具体包括如下步骤:
S401:判断对所述第一储存装置是进行全表数据转存还是增量数据转存:如果对所述第一储存装置是进行全表数据转存,执行步骤S402;如果对所述第一储存装置是进行增量数据转存,执行步骤S403;
由于在配置信息中,已经预先设置了数据转存的类型,比如是进行全表数据转存还是进行增量数据转存。那么,在基于索引信息建立所述任务时,就可以基于该数据转存类型来判断对比储存装置是进行全表数据转存还是增量数据转存,其中,对于数据库是进行全表数据转存还是增量数据转存,是基于没有经过分库分表处理数据库的,对于已经经过分库分表处理的数据库,并无全表数据转存还是增量数据转存之分。
S402:基于所述第一储存装置中每一个数据表的段信息、每一个段信息对应的段中的数据块ID以及所述数据块ID对应的数据块中数据的起始行ID和结束行ID,建立所述任务;
还是以Oracle数据库为例,在进行全表数据转存时,首先,可设计两个单机程序dumpSegment和dumpTemplate,具体为:
dumpSegment:获取当前时间点下的数据库表对应的段信息,该程序的输出记录是dumptemplate的输入;
dumpTemplate:根据前面获得的段信息,就可以得到段信息、起始行ID、结束行ID,那么基于这三个信息,就可以获得需要进行数据转存的数据的索引信息。
一般索引信息存储为一个segmentList.txt文件,每一行由块号block_id+块的起始start_rowid+块的结束end_rowid组成,并且各行按start_rowid增序排序。segmentList.txt文件会被上传到hdfs上。如图5所示,为一segmentList.txt的示意图,其中:
501:表示进行数据转存的数据的块号,也就是block_id;
502:表示一个块中进行数据转存的数据的起始行id,也就是start_rowid;
503:表示一个块中进行数据转存的数据的结束行id,也就是end_rowid。
如图中segmentList.txt所示,需要进行数据转存的数据分别为:块115中的第23行至27行,块116中的第22行至31行,块118中的第11行至22行。
S403:基于所述第一储存装置中每一个数据表中增量数据的数据块ID以及所述数据块中增量数据的行ID,建立所述任务。
依然以Oracle数据库为例,在进行全表数据转存时,首先设计两个个单机的数据转存程序dumpRowid和dumpTemplate,具体为:
dumpRowid,获取表的增量数据的行ID,其中,增量数据指的是两次数据转存之间的更新数据。
在对于Oracle的增量数据转存时,为避免对Oracle数据库进行全表扫描,造成对时间和资源的浪费,故而设计出dumpRowid程序。该程序主要是使用语句select rowid from table_a where gmt_modified>$start_time and gmt_modified<=$end_time,从而预先取出符合增量数据转存条件的所有记录的行ID,存放为rowidList.txt文件,每一行由块号block_id+以逗号分隔的行ID串组成。同样rowidList.txt文件会被上传到hdfs上。如图6A所示,为在T1时刻一数据表的块766的数据示意图,图6B为在T1时刻之后的T2时刻该数据表的示意图。由图6A和图6B可知,在该数据表中,只有第2、3、5行增加了数据,那么该数据表进行增量数据转存的数据的rowidList.txt为如图6C所示。其中:
601:表示块号,也就是进行数据转存的数据块为766;
602:表示行ID,也就是进行数据转存的数据为块766中的第2、3、5行。
在具体实施过程中,对于进行过分库分表处理的数据库并基于不同的数据库类型,可以采用不同的优化方式。只要所采用的优化方式所能达到的技术效果和本申请实施例中的技术效果等同,也即是所采用的优化方式能够将庞大数据表的中数据索引划分了一个个小部分,都属于本申请的范围内。
S304:基于所述第二连接信息建立所述任务。
在具体实施过程中,对于经过分库分表处理过的数据库,由于一个数据表中的信息,单机已经足够处理,故而不用再基于这些数据表中的索引信息建立任务,而只要获得这些数据表的连接信息即可。
前面已经基于Oracle数据库介绍了没有经过分库分表处理的数据库的获取任务的过程,下面通过MYSQL数据库来介绍对经过分库分表处理的数据库获取任务的过程。
对于MYSQL数据库,在这里获取的任务,为要进行数据转存的所有数据的SQL语句。
在具体实施过程中,上述经过分库分表处理的数据库不限于MYSQL数据库,只要该数据库中的数据经过分库分表处理划分为一个个数据量能够被单机处理的数据表,都属于本申请范围内。另外,基于不同的数据表有不同的连接语句,并不限于SQL语句。
S202:所述分布式系统将所述任务分成至少一个子任务;
这里对任务进行分割,是基于分布式系统完成的,例如,采用Hadoop分布式系统的Hadoop streamig工具。
其中,进行任务分割时,其具体实现过程为:
于获取任务的单机上,启动Hadoop streamig工具,所述Hadoop streamig会创建一类Map作业,所述Map作业的输入为前面获得的存储于所述分布式系统的HDFS的任务,如果为对Oracle数据库进行全表数据转存,那么输入即为前面的segmentList.txt;如果为对Oracle数据库进行增量数据转存,那么其输入则为前面的rowidList.txt;如果为对MYSQL数据库进行转存,那么其输入则为前面获得的SQL语句。
在基于MAP作业获得前面的segmentList.txt、rowidList.txt或SQL语句后,就基于分布式系统的Partitioner作业将这些索引信息分割成多个子任务。
如果是对Oracle数据库进行全表数据转存,将segmentList.txt分割成多个部分;而对于Oracle数据库的增量数据转存,则是对rowidList.txt进行分割;而对于MYSQL数据库进行的数据转存,则直接对连接数据表的SQL语句进行分割。
故而,Partitioner作业的输出分别为:
如果是对Oracle数据库进行全表数据转存,那么其输出为一个个小的segmentList.txt;
如果是对Oracle数据库进行增量数据转存,那么其输出为一个个小的rowidList.txt;
如果是对MYSQL数据库进行数据转存,那么其输出为一个SQL语句。
S203:所述分布式系统将所述至少一个子任务分发给所述分布式系统的至少一个进程;
在Hadoop分布式系统中,这一步主要是将Partitioner作业分割的多个子任务分发给由Hadoop streamig工具创建的Reduce作业。其中,一个Reduce作业,可以获得多个Partitioner作业分割的子任务。
S204:通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
Reduce作业在接收到Map分割的子任务后,基于这些子任务获取这些子任务对应的数据,因为,这些子任务要么是没有经过分库分表处理的数据库的索引信息、要么是经过分库分表处理的数据库的SQL连接语句,基于这些索引信息或者连接语句,直接就可以获得要进行数据转存的数据。
在具体实施过程中,基于不同的数据库,其进行数据转存的方式也不相同。在对Oracle数据库进行全表数据转存时,Reduce作业读入segmentList.txt的每一行的start_rowid和end_rowid,负责对这个起止行ID段内的数据进行数据转存。
而对于Oracle数据库进行增量数据转存时,Reduce作业只读入rowidList.txt的每一行的行ID串,只对这些行ID记录的数据进行数据转存。
而对于MYSQL数据库进行数据转存时,每一个单机执行Reduce作业时,只需要连接该数据表对应的SQL语句及其连接信息即可。
在基于Reduce作业获得该Reduce作业所对应的数据后,会基于Reduce作业对这些数据进行排序,以方便后续处理。
在具体实施过程中,对于数据库中的数据进行数据转存不限于上述Oracle数据库和MYSQL数据库,其进行数据转存的方式,也不限于上述三种方式,只要本领域技术人员对数据库中的数据进行数据转存所达到的技术效果和本申请实施例中的技术效果等同,都属于本申请范围内。
在具体实施过程中,在数据转存过程中可能会出现错误,有些分布式系统能够具有容错特性,为了纠正在数据转存过程中出现的错误,如图7所示,还可以进行如下步骤:
S701:在所述至少一个子任务中任一子任务执行过程出现错误,将所述子任务对应的计数器的计数值加1;
S702:判断所述子任务对应的计数器的计数值是否大于一预设阈值,如果判断结果为否,执行所述子任务;如果判断结果为是,执行下一个子任务。
在具体实施过程中,有一些分布式系统具有通过软件方式兼容错误的特点,并且当子任务执行出错时,能够自动恢复子任务。比如Hadoop分布式系统,在执行数据转存任务时,是以Hadoop的Map/Reduce作业的方式在Hadoop分布式系统上运行的,而分布式系统Hadoop的Map/Reduce作业内在的支持三次失败重试机制,也就是一次数据转存操作分割成多个子任务,而,每一个子任务执行失败,Hadoop分布式系统都会重试三次。当然,在具体实施过程中,这个重试过程,可以基于不同的情况,设置不同的次数,也可以设置不重试,并且所述分布式系统也不限于Hadoop,只要本领域所属技术人员所采用的分布式系统以及所采用的重试机制和本申请实施例中的技术效果等同,都属于本申请范围内。
进一步的,在所述通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置之后,还包括如下步骤:
如果需要新增加进行数据转存的数据表,那么将所述数据表的第三连接信息加入所述配置信息。
在具体实施过程中,由于目前需要进行数据转存的数据表都写在配置信息中,故而,如果需要新增加进行数据转存的数据表的话,将该数据表的连接信息放入该配置信息即可。
并且,在具体实施过程中,本申请中的数据库并不限于上面所述的Oracle数据库和MYSQL数据库,只要分布式系统提供了相关数据库的接口,那么这些数据库中的数据表都能分配给分布式系统的进程执行。
实施例二
请参考图8,本申请实施例二提供一种数据转存的系统,用于将存储于第一储存装置的数据存储到第二储存装置中,所述系统包括:
文件单元801:用于获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
处理单元802:所述处理单元802具体包括:
划分模块8021:用于将所述任务分成至少一个子任务;
分发模块8022:用于将所述至少一个子任务分发给分布式系统的至少一个进程;
转存模块8023:用于通过在所述至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
由于本申请实施二中的系统为与实施本申请实施例一中的方法所对应的系统,所以基于本申请实施例一中的方法,本领域所属技术人员能够了解本申请实施二中的系统的具体实施方法以及本申请实施二的系统的各种变化形式。所以在此对于该系统的运行不再详细介绍,只要本领域所属技术人员基于本申请实施例一中的方法所采用的系统,都属于本申请所欲保护的范围。
本申请提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请实施例针对不同的数据库以及不同类型的数据进行转存时,采用不同的方案。对于没有经过分库分表处理的数据库,在进行全表数据转存时,获取该数据库中的段信息、起始行ID、结束行ID,然后基于这些索引信息,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息;对其进行增量数据转存时,获得该数据库中的段信息、增量数据的行ID,然后基于这些索引信息,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息;对于经过分库分表处理的数据库,直接获取该数据库中数据表的连接语句,比如SQL语句,采用分布式系统的Map/Reduce作业来高效获取数据库中的信息。进而提高了数据转存的速度和稳定性以及降低单机的损耗。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种数据转存方法,用于基于一分布式系统将存储于第一储存装置的数据存储到第二储存装置中,其特征在于,所述方法包括:
所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
所述分布式系统将所述任务分成至少一个子任务;
所述分布式系统将所述至少一个子任务分发给所述分布式系统的至少一个进程;
通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
2.如权利要求1所述的方法,其特征在于,所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中的数据存储到所述第二储存装置相关,具体包括:
获得配置信息,所述配置信息中包含所述第一储存装置的第一连接信息,以及所述第一储存装置中每一个需要进行数据转存的数据表的第二连接信息;
判断存储于所述第一储存装置中的数据是否经过分库分表处理;
如果判断结果为否,获取所述第一储存装置中每一个需要进行数据转存的数据表中的每一个数据块的索引信息;
基于所述索引信息建立所述任务。
3.如权利要求2所述的方法,其特征在于,所述第一储存装置为一存储了Oracle数据库的服务器,其中,所述Oracle数据库中包含至少一个数据表信息、每一个数据表信息又包含至少一个段信息、每一个段信息包含至少一个数据块信息。
4.如权利要求3所述的方法,其特征在于,所述获取所述第一储存装置中每一个需要进行数据转存的数据表的中的每一个数据块的索引信息;基于所述索引信息建立所述任务,具体包括:
判断对所述第一储存装置是进行全表数据转存还是增量数据转存;
如果对所述第一储存装置是进行全表数据转存,基于所述第一储存装置中每一个数据表的段信息、每一个段信息对应的段中的数据块ID以及所述数据块ID对应的数据块中数据的起始行ID和结束行ID,建立所述任务;
如果对所述第一储存装置是进行增量数据转存,基于所述第一储存装置中每一个数据表中增量数据的数据块ID以及所述数据块中增量数据的行ID,建立所述任务。
5.如权利要求1所述的方法,其特征在于,所述分布式系统获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关,具体为:
获得配置信息,所述配置信息中包含所述第一储存装置的第一连接信息,以及第一储存装置中每一个需要进行数据转存的数据表的第二连接信息;
判断存储于所述第一储存装置中的数据是否经过分库分表处理;
如果判断结果为是,基于所述第二连接信息建立所述任务。
6.如权利要求1所述的方法,其特征在于,在所述通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置之后,还包括:
如果需要新增加进行数据转存的数据表,那么将所述数据表的第三连接信息加入所述配置信息。
7.如权利要求1所述的方法,其特征在于,所述通过在所述分布式系统的至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置具体包括:
基于所述至少一个子任务,获取所述至少一个子任务对应的数据,并将所述数据存储于所述第二储存装置。
8.如权利要求7所述的方法,其特征在于,所述基于所述至少一个子任务,获取所述至少一个子任务对应的数据,并将所述数据存储于所述第二储存装置,还包括:
如果所述至少一个子任务中任一子任务执行过程出现错误,将所述子任务对应的计数器的计数值加1;
判断所述子任务对应的计数器的计数值是否大于一预设阈值,如果判断结果为否,执行所述子任务;如果判断结果为是,执行下一个子任务。
9.一种数据转存的系统,用于将存储于第一储存装置的数据存储到第二储存装置中,其特征在于,所述系统包括:
文件单元:用于获得一任务,所述任务基于所述第一储存装置的目录信息建立,并且所述任务与将所述第一储存装置中数据存储到所述第二储存装置相关;
处理单元:所述处理单元具体包括:
分割模块:用于将所述任务分成至少一个子任务;
分发模块:用于将所述至少一个子任务分发给分布式系统的至少一个进程;
转存模块:用于通过在所述至少一个进程内启动所述至少一个子任务,将存储于所述第一存储装置的数据存储到第二储存装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210026724.4A CN103246549B (zh) | 2012-02-07 | 2012-02-07 | 一种数据转存的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210026724.4A CN103246549B (zh) | 2012-02-07 | 2012-02-07 | 一种数据转存的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246549A true CN103246549A (zh) | 2013-08-14 |
CN103246549B CN103246549B (zh) | 2016-12-14 |
Family
ID=48926080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210026724.4A Active CN103246549B (zh) | 2012-02-07 | 2012-02-07 | 一种数据转存的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103246549B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014180411A1 (zh) * | 2013-12-17 | 2014-11-13 | 中兴通讯股份有限公司 | 分布式索引的生成方法及装置 |
CN104615594A (zh) * | 2013-11-01 | 2015-05-13 | 阿里巴巴集团控股有限公司 | 一种数据更新方法及装置 |
CN105069149A (zh) * | 2015-08-24 | 2015-11-18 | 电子科技大学 | 一种面向结构化列式数据的分布式并行数据导入方法 |
CN106294009A (zh) * | 2016-08-05 | 2017-01-04 | 北京小米移动软件有限公司 | 数据库归档方法及系统 |
CN107402950A (zh) * | 2017-04-28 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及系统 |
CN111414362A (zh) * | 2020-02-28 | 2020-07-14 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN113791739A (zh) * | 2021-09-26 | 2021-12-14 | 重庆紫光华山智安科技有限公司 | 数据转存方法、系统、电子设备及可读存储介质 |
-
2012
- 2012-02-07 CN CN201210026724.4A patent/CN103246549B/zh active Active
Non-Patent Citations (3)
Title |
---|
GUOYUNSKY: "Sqoop源码分析(四) Sqoop中通过hadoop mapreduce从关系型数据库import数据分析", 《HTTP://GUOYUNSKY.ITEYE.COM/BLOG/1213966》 * |
觉先: "Hadoop学习总结之三:Map-Reduce入门", 《HTTP://WWW.CNBLOGS.COM/FORFUTURE1978/ARCHIVE/2010/11/14/1877086.HTML》 * |
觉先: "Hadoop学习总结之四:Map-Reduce的过程解析", 《HTTP://WWW.CNBLOGS.COM/FORFUTURE1978/ARCHIVE/2010/11/19/1882268.HTML》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615594B (zh) * | 2013-11-01 | 2018-04-03 | 阿里巴巴集团控股有限公司 | 一种数据更新方法及装置 |
CN104615594A (zh) * | 2013-11-01 | 2015-05-13 | 阿里巴巴集团控股有限公司 | 一种数据更新方法及装置 |
WO2014180411A1 (zh) * | 2013-12-17 | 2014-11-13 | 中兴通讯股份有限公司 | 分布式索引的生成方法及装置 |
CN105069149A (zh) * | 2015-08-24 | 2015-11-18 | 电子科技大学 | 一种面向结构化列式数据的分布式并行数据导入方法 |
CN105069149B (zh) * | 2015-08-24 | 2019-03-12 | 电子科技大学 | 一种面向结构化列式数据的分布式并行数据导入方法 |
CN106294009A (zh) * | 2016-08-05 | 2017-01-04 | 北京小米移动软件有限公司 | 数据库归档方法及系统 |
CN106294009B (zh) * | 2016-08-05 | 2019-09-10 | 北京小米支付技术有限公司 | 数据库归档方法及系统 |
CN107402950A (zh) * | 2017-04-28 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN107402950B (zh) * | 2017-04-28 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 基于分库分表的文件处理方法和装置 |
CN109492000A (zh) * | 2018-10-09 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种数据库表的复制方法及系统 |
CN111414362A (zh) * | 2020-02-28 | 2020-07-14 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
WO2021169496A1 (zh) * | 2020-02-28 | 2021-09-02 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN111414362B (zh) * | 2020-02-28 | 2023-11-10 | 平安科技(深圳)有限公司 | 数据读取方法、装置、设备及存储介质 |
CN113791739A (zh) * | 2021-09-26 | 2021-12-14 | 重庆紫光华山智安科技有限公司 | 数据转存方法、系统、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103246549B (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246549A (zh) | 一种数据转存的方法及系统 | |
US11169978B2 (en) | Distributed pipeline optimization for data preparation | |
CN102129458B (zh) | 关系型数据库的存储方法及装置 | |
US20200210399A1 (en) | Signature-based cache optimization for data preparation | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN102243660A (zh) | 一种数据访问方法及设备 | |
CN105718507A (zh) | 一种数据迁移方法和装置 | |
US10642815B2 (en) | Step editor for data preparation | |
CN102306168A (zh) | 日志操作方法、装置及文件系统 | |
CN102033948A (zh) | 一种数据更新方法和装置 | |
CN103440301A (zh) | 一种数据多副本混合存储方法及系统 | |
US20200293506A1 (en) | Bulk-load for b-trees | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN105677904A (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN106991190A (zh) | 一种数据库自动创建子数据库系统 | |
CN104182295A (zh) | 一种数据备份方法及装置 | |
CN103365740A (zh) | 一种数据冷备方法及装置 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
CN102955808A (zh) | 一种数据获取方法和分布式文件系统 | |
CN102495838B (zh) | 数据处理方法及装置 | |
CN104537016A (zh) | 一种确定文件所在分区的方法及装置 | |
JP2013088920A (ja) | 計算機システム及びデータ管理方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
US9158767B2 (en) | Lock-free indexing of documents | |
US11288447B2 (en) | Step editor for data preparation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1184565 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1184565 Country of ref document: HK |