CN106569731A - 极限存储方法、装置及设备 - Google Patents
极限存储方法、装置及设备 Download PDFInfo
- Publication number
- CN106569731A CN106569731A CN201510654080.7A CN201510654080A CN106569731A CN 106569731 A CN106569731 A CN 106569731A CN 201510654080 A CN201510654080 A CN 201510654080A CN 106569731 A CN106569731 A CN 106569731A
- Authority
- CN
- China
- Prior art keywords
- limit
- data
- limit storage
- source data
- subregion
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种极限存储方法、装置及设备,所述方法包括:接收用于触发对源数据表执行极限存储任务的极限存储命令;根据所述极限存储命令生成极限存储计划;按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;将所述目标数据写入目标数据表。应用本申请实施例执行极限存储时,无需将极限存储过程分为多个步骤,而是根据一条存储命令生成存储计划,并基于该存储计划执行完整的极限存储任务,由于极限存储过程无需依赖步骤之间的关联,因此简化了极限存储流程,提高了极限存储的成功率。
Description
技术领域
本申请涉及大数据存储技术领域,尤其涉及极限存储方法、装置及设备。
背景技术
在大数据处理领域,为了提高数据存储容量,提出了极限存储方案。极限存储是数据仓库中的数据压缩方式,极限存储就是通过给数据表中记录的表项设定生命周期,从而减少重复存储的表项,因此数据表中包含的表项越多,则极限存储带来的效果越明显。
现有技术中,在对数据表执行极限存储任务时,将该极限存储任务分为由多个指令触发的步骤,每个步骤的输入数据为前一个步骤的执行结果数据,且每个步骤的执行结果数据均会存入中间结果集中,最后对中间结果集中的数据进行处理后写入数据表中,从而覆盖数据表中的原有数据,完成一次极限存储任务。但是,由于每个步骤的执行均依赖前一个步骤的结果,因此步骤之间的依赖性较强,当其中任一步骤出现错误时,将导致整个极限存储任务失败;另外在任务出错时,需要人为进行数据比对,从而找出发生错误的步骤,并重新执行极限存储任务,因此极限存储效率较低。
发明内容
本申请提供极限存储方法、装置及设备,以解决现有极限存储方式中步骤之间的依赖性较强,容易导致极限存储失败的问题。
根据本申请实施例的第一方面,提供一种极限存储方法,所述方法包括:
接收用于触发对源数据表执行极限存储任务的极限存储命令;
根据所述极限存储命令生成极限存储计划;
按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
将所述目标数据写入目标数据表。
根据本申请实施例的第二方面,提供一种极限存储装置,所述装置包括:
接收单元,用于接收用于触发对源数据表执行极限存储任务的极限存储命令;
生成单元,用于根据所述极限存储命令生成极限存储计划;
执行单元,用于按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
写入单元,用于将所述目标数据写入目标数据表。
根据本申请实施例的第三方面,提供一种存储设备,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收用于触发对源数据表执行极限存储任务的极限存储命令;
根据所述极限存储命令生成极限存储计划;
按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
将所述目标数据写入目标数据表。
应用本申请实施例执行极限存储时,无需将极限存储过程分为多个步骤,而是根据一条存储命令生成存储计划,并基于该存储计划执行完整的极限存储任务,由于极限存储过程无需依赖步骤之间的关联,因此简化了极限存储流程,提高了极限存储的成功率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为应用本申请实施例进行极限存储的系统架构示意图;
图2为本申请极限存储方法的一个实施例流程图;
图3为本申请极限存储方法的另一个实施例流程图;
图4为本申请极限存储装置所在设备的一种硬件结构图;
图5为本申请极限存储装置的一个实施例框图。
具体实施方式
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参见图1,为应用本申请实施例进行极限存储的系统架构示意图:
图1中示出的系统架构可以为对基于业务的大数据进行处理的系统,例如ODPS(Open Data Processing Service,开放数据处理服务)系统,该系统中可以包括:由用于存储各种业务数据表的若干存储服务器组成的服务器集群,以及可以对数据表执行极限存储任务的执行设备。极限存储通过给数据表中记录的表项设定生命周期,从而减少重复存储的表项,能够进行极限存储的数据表通常来说数据变化量较小,数据相对稳定,例如,用户表、商品表、成交表、订单表等。
基于图1示出的系统架构,本申请实施例中,当执行设备接收到极限存储命令后,可以根据极限存储命令生成极限存储计划,按照该极限存储计划对服务器集群中存储的源数据表执行极限存储任务,得到目标数据,然后再将目标数据写入服务器集群中的目标数据表,从而完成极限存储。本申请实施例的极限存储任务由一个极限存储命令触发,极限存储过程无需依赖步骤之间的关联,因此简化了极限存储流程,提高了极限存储的成功率。下面将结合具体的实施例对申请进行详细描述。
参见图2,为本申请极限存储方法的一个实施例流程图,该实施例可以应用在业务服务器侧,包括如下步骤:
步骤201:接收用于触发对源数据表执行极限存储任务的极限存储命令。
结合图1示出的系统架构,本实施例中的源数据表主要指还未执行过极限存储的原始数据表,源数据表可以保存在服务器集群中,以源数据表为用户数据表(src)为例,其表项字段通常可以包括用户名字段,用户标识字段,用户信息字段,以及表项分区字段等,通常用户数据表在服务器集群中以分区为单位对用户数据进行保存。其中,可以将每一天作为一个分区,则每个分区的用户数据表中,表项分区字段的字段信息即为对应分区的日期表示,比如,在分区20140803(表示2014年8月3日)的用户数据表中,每个表项的分区字段的字段信息即为“20140803”。
当系统管理员需要对用户数据表中某个分区的源数据表进行极限存储时,可以向执行设备发送极限存储命令,该极限存储命令中携带的用以执行极限存储任务的任务参数可以包括:源数据表的表名、分区名、以及指定主键。仍然以对用户数据表中分区20140803进行极限存储为例,则源数据表的表名即为用户数据表的表名“src”,分区名即为“20140803”,指定主键可以为用户标识。通常在某个数据表中,可以将一个字段或多个字段的组合作为数据表的主键(PRIMARY KEY),主键可以唯一标识一个表项。
步骤202:根据极限存储命令生成极限存储计划。
执行设备在接收到极限存储命令后,可以获取该极限存储命令中携带的任务参数,包括源数据表的表名和分区名,以及指定主键;通常服务器集群中还保存了数据表的元数据,元数据中记录了包括数据结构在内的数据表的属性信息,因此执行设备可以根据源数据表的表名查找到源数据表的元数据,从而获得源数据表的数据结构。
在获得了任务参数和数据结构后,执行设备根据上述任务参数和数据结构为源数据表生成极限存储任务,该极限存储任务包括检查任务和处理任务。其中,处理任务定义了执行极限存储过程中的执行内容,检查任务定义了在执行极限存储过程中需要检查的异常情况,在步骤203中将结合处理任务和检查任务的具体执行过程对上述两种任务进行详细描述。
步骤203:按照极限存储计划对源数据表执行极限存储任务,得到目标数据。
本步骤中,在按照极限存储任务的处理任务对源数据表进行极限存储时,可以根据源数据表的表名和分区名从源数据表中获取源数据分区,例如,当表名为“src”,分区名为“20140803”,则表示要对源数据表src中的源数据分区20140803执行极限存储,该源数据分区中包含了2014年8月3日保存的用户数据表项;根据源数据表的数据结构生成中间过程表,该中间过程表与源数据表的数据结构一致,以用户数据表为例,则源数据表和中间过程表中均包含用户名字段,用户标识字段和用户信息字段,进一步,该中间过程表中还包含用于表示用户数据表项存活周期的开始字段和结束字段;按照指定主键遍历源数据分区,获得指定主键的每个主键信息所对应的表项数据的存活周期,并将遍历得到的表项数据和对应的存活周期写入中间过程表,将中间过程表作为待写入的目标数据。例如,指定主键为用户标识,当遍历到源数据分区20140803中用户标识为“001”的表项时,以用户标识“001”查找源数据表src中的其他数据分区,假设根据查找结果确定用户标识为“001”的表项在数据分区20140801中首次创建,则可知该表项的存活周期的开始字段为“20140801”,结束字段为“20140803”。
在执行上述极限存储的过程中,可以同时按照极限存储任务的检查任务对极限存储过程中的异常情况进行检查,检查任务可以包括:判断是否对源数据分区执行过极限存储任务,若执行过,则确定发生异常。或者,可以根据指定主键检查源数据分区中的主键信息是否重复,若重复,则确定发生异常。或者,可以判断中间过程表与源数据表的数据结构是否一致,若不一致,则确定发生异常。
步骤204:将目标数据写入目标数据表。
在步骤203中得到作为目标数据的中间过程表后,可以在服务器集群中为中间过程表中的每一个存活周期划分对应的目标数据分区,然后从中间过程表中识别出属于同一存活周期的表项数据,其中,属于同一存活周期的表项数据的开始字段和结束字段的字段信息相同,将识别出的表项数据写入为其所属存活周期划分的目标数据分区,所有目标数据分区组成目标数据表。例如,对源数据分区20140803执行极限存储生成的中间过程表中,有至少一个表项的存活周期为“20140801-20140803”,即该至少一个表项的开始字段为20140801,结束字段为20140803,则可以在服务器集群中为存活周期“20140801-20140803”划分目标数据分区,并将上述至少一个表项存入该存活周期“20140801-20140803”的目标数据分区。
上述实施例在执行极限存储时,无需将极限存储过程分为多个步骤,而是根据一条存储命令生成存储计划,并基于该存储计划执行完整的极限存储任务,由于极限存储过程无需依赖步骤之间的关联,因此简化了极限存储流程,提高了极限存储的成功率。
参见图3,为本申请极限存储方法的另一个实施例流程图,该实施例结合一个具体的例子对极限存储过程进行详细描述:
步骤301:接收用于触发对源数据表执行极限存储任务的极限存储命令。
本实施例中的源数据表主要指还未执行过极限存储的原始数据表,以源数据表为用户数据表(src)为例,其表项字段通常可以包括用户名字段,用户标识字段,用户信息字段,以及表项分区字段等,通常用户数据表在服务器集群中以分区为单位对用户数据进行保存。其中,可以将每一天作为一个分区,则每个分区的用户数据表中,表项分区字段的字段信息即为对应分区的日期表示。
如下述表1至表3分别示出了源数据表src中三个分区的用户数据表项,分别是分区名(partition,pt)为“20140801”的表1,记录了2014年8月1日的用户数据;分区名为“20140802”的表2,记录了2014年8月2日的用户数据;以及分区名为“20140803”的表3,记录了2014年8月3日的用户数据。
表1(pt=20140801)
用户名 | 用户标识 | 用户信息 | 分区字段 |
A | 001 | **** | 20140801 |
B | 002 | **** | 20140801 |
C | 003 | **** | 20140801 |
D | 004 | **** | 20140801 |
表2(pt=20140802)
用户名 | 用户标识 | 用户信息 | 分区字段 |
A | 001 | **** | 20140802 |
B | 002 | **** | 20140802 |
C | 003 | **** | 20140802 |
D | 004 | **** | 20140802 |
E | 005 | **** | 20140802 |
表3(pt=20140803)
用户名 | 用户标识 | 用户信息 | 分区字段 |
A | 001 | **** | 20140803 |
C | 003 | **** | 20140803 |
D | 004 | **** | 20140803 |
E | 005 | **** | 20140803 |
F | 006 | **** | 20140803 |
当系统管理员需要对用户数据表中某个分区进行极限存储时,可以向执行设备发送极限存储命令,该极限存储命令中携带的用以执行极限存储任务的任务参数可以包括:源数据表的表名、分区名、以及指定主键。在一个例子中,极限存储命令的格式可以为:exstore tablename partition value;其中,exstore表示极限存储,tablename表示表名,partition value表示分区名。以上述用户数据表src为例,假设要对pt=20140803的表3进行极限存储,且指定主键为用户标识(USER ID),则极限存储命令可以具体为:exstore srcpt(20140803),PRIMARY KEY=USER ID。
步骤302:根据极限存储命令生成极限存储计划,该极限存储计划包括检查任务和处理任务。
执行设备在接收到极限存储命令后,可以获取该极限存储命令中携带的任务参数,并获取源数据表的数据结构,然后根据上述任务参数和数据结构为源数据表生成极限存储任务,极限存储任务包括检查任务和处理任务。本步骤与前述步骤202一致,在此不再赘述。
步骤303:按照处理任务对源数据表进行极限存储,得到目标数据。
本步骤中,在按照极限存储任务的处理任务对源数据表进行极限存储时,可以根据源数据表的表名和分区名从源数据表中获取源数据分区,根据源数据表的数据结构生成中间过程表,该中间过程表与源数据表的数据结构一致,以用户数据表为例,则源数据表和中间过程表中均包含用户名(USER NAME)字段,用户标识(USER ID)字段和用户信息(USER INFO)字段,进一步,该中间过程表中还包含用于表示用户数据表项存活周期的开始字段(pt_start)和结束字段(pt_end);然后按照指定主键遍历源数据分区,获得指定主键的每个主键信息所对应的表项数据的存活周期,并将遍历得到的表项数据和对应的存活周期写入中间过程表,将中间过程表作为待写入的目标数据。
下面分别对前述表1至表3进行极限存储从而获得中间过程表的过程进行描述,其中:
对前述表1所示的源数据分区20140801做极限存储时,对应的极限存储命令为“exstore src pt(20140801)”,PRIMARY KEY=USER ID,对应生成的中间过程表src_exst如下表4所示:
表4
用户名 | 用户标识 | 用户信息 | 开始字段 | 结束字段 |
A | 001 | **** | 20140801 | 201408_INFINITY |
B | 002 | **** | 20140801 | 201408_INFINITY |
C | 003 | **** | 20140801 | 201408_INFINITY |
D | 004 | **** | 20140801 | 201408_INFINITY |
上表4中,A、B、C、D四个用户的表项的存活周期均为20140801-201408_INFINITY。
对前述表2所示的源数据分区20140802做极限存储时,对应的极限存储命令为“exstore src pt(20140802)”,PRIMARY KEY=USER ID,对应生成的中间过程表src_exst如下表5所示:
表5
用户名 | 用户标识 | 用户信息 | 开始字段 | 结束字段 |
A | 001 | **** | 20140801 | 201408_INFINITY |
B | 002 | **** | 20140801 | 201408_INFINITY |
C | 003 | **** | 20140801 | 201408_INFINITY |
D | 004 | **** | 20140801 | 201408_INFINITY |
E | 005 | **** | 20140802 | 201408_INFINITY |
前述表1与表2相比增加了用户E,相应的,表5与表4相比增加了用户E的表项,且用户E的表项的存活周期为20140802-201408_INFINITY。
对前述表3所示的源数据分区20140803做极限存储时,对应的极限存储命令为“exstore src pt(20140803)”,PRIMARY KEY=USER ID,对应生成的中间过程表src_exst如下表6所示:
表6
用户名 | 用户标识 | 用户信息 | 开始字段 | 结束字段 |
A | 001 | **** | 20140801 | 201408_INFINITY |
B | 002 | **** | 20140801 | 20140803 |
C | 003 | **** | 20140801 | 201408_INFINITY |
D | 004 | **** | 20140801 | 201408_INFINITY |
E | 005 | **** | 20140802 | 201408_INFINITY |
F | 006 | **** | 20140803 | 201408_INFINITY |
前述表3与表2相比,删除了用户B,增加了用户F,相应的,表6与表5相比,用户B的表项的存活周期发生变化,变为20140801-20140803,并增加了用户F的表项,且用户F的表项的存活周期为20140803-201408_INFINITY。
步骤304:按照检查任务对极限存储过程中的异常情况进行检查。
在执行上述极限存储的过程中,可以同时按照极限存储任务的检查任务对极限存储过程中的异常情况进行检查,检查任务可以包括:判断是否对源数据分区执行过极限存储任务,若执行过,则确定发生异常;例如,可以为执行过极限存储任务的源数据分区设置执行标识,通过读取该执行标识确定是否执行过极限存储任务。或者,可以根据指定主键检查源数据分区中的主键信息是否重复,若重复,则确定发生异常;例如,可以根据指定主键“用户标识”检查源数据分区中,每个用户标识是否能唯一标识一个表项,如果某个用户标识可以标识两个或两个以上的表项,则说明主键信息重复。或者,可以判断中间过程表与源数据表的数据结构是否一致,若不一致,则确定发生异常;例如,中间过程表与源数据表相比,除了不包含分区字段,并增加了存活周期字段外,其他字段均要求一致,如果不一致,则说明极限存储过程出现异常。或者,可以判断系统本身是否出现运行故障,若出现运行故障,则确定发生异常。
步骤305:判断是否发生异常,若是,则执行步骤306;否则,执行步骤307。
步骤306:对异常情况进行处理,结束当前流程。
在根据检查结果确定发生异常时,根据异常情况的不同可以执行不同的处理。其中,如果检查结果为系统异常,或者源数据表已经做过极限存储,则可以直接结束极限存储过程,如果检查结果为主键信息重复,或者中间过程表与源数据表的数据结构不一致,则可以启动重试机制,重新执行极限存储过程。
步骤307:判断极限存储任务是否完成,若是,则执行步骤308;否则,返回步骤303。
步骤308:将目标数据写入目标数据表,结束当前流程。
在得到作为目标数据的中间过程表后,可以在服务器集群中为中间过程表中的每一个存活周期划分对应的目标数据分区,然后从中间过程表中识别出属于同一存活周期的表项数据,其中,属于同一存活周期的表项数据的开始字段和结束字段的字段信息相同,将识别出的表项数据写入为其所属存活周期划分的目标数据分区,所有目标数据分区组成目标数据表。
例如,在得到前述表4至表6所示的极限存储表后,其中,表4中仅包含一个存活周期,则为该存活周期20140801-201408_INFINITY划分目标数据分区,在该目标数据分区下,对应存储用户A、B、C、D的表项;表5中包含两个存活周期,其中已为存活周期20140801-201408_INFINITY划分过目标数据分区,则只需要为存活周期20140802-201408_INFINITY划分目标数据分区,并在该目标数据分区下存储用户E的表项;表6中包括四个存活周期,其中为新增存活周期20140801-20140803和20140803-201408_INFINITY划分目标数据分区,并将用户B的数据表项写入20140801-20140803对应的目标数据分区,同时从20140801-201408_INFINITY对应的目标数据分区中将用户B的表项删除,以及将用户F的表项写入20140803-201408_INFINITY对应的目标数据分区。
在将极限存储的目标数据写入目标数据表的过程中,如果写入失败,可以启动保障机制重新写入。例如,在ODPS系统中,可以通过DDL(DataDefinition Language,数据库模式定义语言)Task(任务)记录数据写入过程中的日志信息,在写入失败时,可以对日志信息进行分析,并根据分析结果重新执行极限存储过程。
上述实施例在执行极限存储时,无需将极限存储过程分为多个步骤,而是根据一条存储命令生成存储计划,并基于该存储计划执行完整的极限存储任务,由于极限存储过程无需依赖步骤之间的关联,而是将极限存储任务作为一个整体,因此简化了极限存储流程,提高了极限存储的成功率;并且,由于在极限存储出现异常时,可以根据存储计划重新执行完整的极限存储任务,无需对中间步骤进行纠错,因此进一步提升了极限存储完成速度。
与本申请极限存储方法的实施例相对应,本申请还提供了极限存储装置及设备的实施例。
本申请极限存储装置的实施例可以应用在极限存储设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本申请极限存储装置所在设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,图4中不再一一示出。
参见图5,为本申请极限存储装置的一个实施例框图:
该装置包括:接收单元510、生成单元520、执行单元530和写入单元540。
其中,接收单元510,用于接收用于触发对源数据表执行极限存储任务的极限存储命令;
生成单元520,用于根据所述极限存储命令生成极限存储计划;
执行单元530,用于按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
写入单元540,用于将所述目标数据写入目标数据表。
在一个可选的实现方式中,所述生成单元520可以包括(图5中未示出):
参数获取子单元,用于获取所述极限存储命令中携带的任务参数,所述任务参数包括所述源数据表的表名和分区名,以及指定主键;
元数据获取子单元,用于获取所述源数据表的数据结构;
任务生成子单元,用于根据所述任务参数和所述数据结构生成所述极限存储任务的检查任务和处理任务。
在另一个可选的实现方式中,所述执行单元530可以包括(图5中未示出):
执行存储子单元,用于按照所述处理任务对所述源数据表进行极限存储;
执行检查子单元,用于按照所述检查任务对所述极限存储过程中的异常情况进行检查。
其中,所述存储执行子单元可以包括:
源数据分区获取模块,用于根据所述源数据表的表名和分区名从所述源数据表中获取源数据分区;
中间过程表生成模块,用于根据所述源数据表的数据结构生成中间过程表,所述中间过程表中还包含用于表示表项数据存活周期的开始字段和结束字段;
源数据分区遍历模块,用于按照所述指定主键遍历所述源数据分区,获得所述指定主键的每个主键信息所对应的表项数据的存活周期;
中间过程表写入模块,用于将遍历得到的表项数据和对应的存活周期写入所述中间过程表,将所述中间过程表作为目标数据。
其中,所述执行检查子单元可以包括至少一个下述模块:
第一检查模块,用于根据所述指定主键检查所述源数据分区中的主键信息是否重复,若重复,则确定发生异常;
第二检查模块,用于根据所述指定主键检查所述源数据分区中的主键信息是否重复,若重复,则确定发生异常;
第三检查模块,用于判断所述中间过程表与所述源数据表的数据结构是否一致,若不一致,则确定发生异常。
在另一个可选的实现方式中,所述写入单元540可以包括(图5中未示出):
目标数据分区划分子单元,用于为所述中间过程表中的每一个存活周期划分对应的目标数据分区;
表项数据识别子单元,用于从所述中间过程表中识别出属于同一存活周期的表项数据,其中,属于同一存活周期的表项数据的开始字段和结束字段的字段信息相同;
目标数据分区写入子单元,用于将识别出的表项数据写入为其所属存活周期划分的目标数据分区,所有目标数据分区组成目标数据表。
在另一个可选的实现方式中,所述装置还可以包括(图5中未示出):
返回单元,用于当所述执行检查子单元检查到所述极限存储过程中出现异常时,返回所述接收单元。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,在执行极限存储时,无需将极限存储过程分为多个步骤,而是根据一条存储命令生成存储计划,并基于该存储计划执行完整的极限存储任务,由于极限存储过程无需依赖步骤之间的关联,因此提高了极限存储的成功率;并且,由于在极限存储出现异常时,可以根据存储计划重新执行完整的极限存储任务,无需对中间步骤进行纠错,因此简化了极限存储流程,提高了极限存储的成功率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (15)
1.一种极限存储方法,其特征在于,所述方法包括:
接收用于触发对源数据表执行极限存储任务的极限存储命令;
根据所述极限存储命令生成极限存储计划;
按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
将所述目标数据写入目标数据表。
2.根据权利要求1所述的方法,其特征在于,所述根据所述极限存储命令生成极限存储计划,包括:
获取所述极限存储命令中携带的任务参数,所述任务参数包括所述源数据表的表名和分区名,以及指定主键;
获取所述源数据表的数据结构;
根据所述任务参数和所述数据结构生成所述极限存储任务的检查任务和处理任务。
3.根据权利要求2所述的方法,其特征在于,所述按照所述极限存储计划对所述源数据表执行极限存储任务,包括:
按照所述处理任务对所述源数据表进行极限存储;以及
按照所述检查任务对所述极限存储过程中的异常情况进行检查。
4.根据权利要求3所述的方法,其特征在于,所述按照所述处理任务对所述源数据表进行极限存储,包括:
根据所述源数据表的表名和分区名从所述源数据表中获取源数据分区;
根据所述源数据表的数据结构生成中间过程表,所述中间过程表中还包含用于表示表项数据存活周期的开始字段和结束字段;
按照所述指定主键遍历所述源数据分区,获得所述指定主键的每个主键信息所对应的表项数据的存活周期;
将遍历得到的表项数据和对应的存活周期写入所述中间过程表,将所述中间过程表作为目标数据。
5.根据权利要求4所述的方法,其特征在于,所述按照所述检查任务对所述极限存储过程中的异常情况进行检查,包括至少下述一项:
判断是否对所述源数据分区执行过极限存储任务,若执行过,则确定发生异常;
根据所述指定主键检查所述源数据分区中的主键信息是否重复,若重复,则确定发生异常;
判断所述中间过程表与所述源数据表的数据结构是否一致,若不一致,则确定发生异常。
6.根据权利要求4所述的方法,其特征在于,所述将所述目标数据写入目标数据表,包括:
为所述中间过程表中的每一个存活周期划分对应的目标数据分区;
从所述中间过程表中识别出属于同一存活周期的表项数据,其中,属于同一存活周期的表项数据的开始字段和结束字段的字段信息相同;
将识别出的表项数据写入为其所属存活周期划分的目标数据分区,所有目标数据分区组成目标数据表。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当检查到所述极限存储过程中出现异常时,返回执行接收用于触发对源数据表执行极限存储任务的极限存储命令。
8.一种极限存储装置,其特征在于,所述装置包括:
接收单元,用于接收用于触发对源数据表执行极限存储任务的极限存储命令;
生成单元,用于根据所述极限存储命令生成极限存储计划;
执行单元,用于按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
写入单元,用于将所述目标数据写入目标数据表。
9.根据权利要求8所述的装置,其特征在于,所述生成单元包括:
参数获取子单元,用于获取所述极限存储命令中携带的任务参数,所述任务参数包括所述源数据表的表名和分区名,以及指定主键;
元数据获取子单元,用于获取所述源数据表的数据结构;
任务生成子单元,用于根据所述任务参数和所述数据结构生成所述极限存储任务的检查任务和处理任务。
10.根据权利要求9所述的装置,其特征在于,所述执行单元包括:
执行存储子单元,用于按照所述处理任务对所述源数据表进行极限存储;
执行检查子单元,用于按照所述检查任务对所述极限存储过程中的异常情况进行检查。
11.根据权利要求10所述的装置,其特征在于,所述存储执行子单元包括:
源数据分区获取模块,用于根据所述源数据表的表名和分区名从所述源数据表中获取源数据分区;
中间过程表生成模块,用于根据所述源数据表的数据结构生成中间过程表,所述中间过程表中还包含用于表示表项数据存活周期的开始字段和结束字段;
源数据分区遍历模块,用于按照所述指定主键遍历所述源数据分区,获得所述指定主键的每个主键信息所对应的表项数据的存活周期;
中间过程表写入模块,用于将遍历得到的表项数据和对应的存活周期写入所述中间过程表,将所述中间过程表作为目标数据。
12.根据权利要求11所述的装置,其特征在于,所述执行检查子单元包括至少一个下述模块:
第一检查模块,用于根据所述指定主键检查所述源数据分区中的主键信息是否重复,若重复,则确定发生异常;
第二检查模块,用于根据所述指定主键检查所述源数据分区中的主键信息是否重复,若重复,则确定发生异常;
第三检查模块,用于判断所述中间过程表与所述源数据表的数据结构是否一致,若不一致,则确定发生异常。
13.根据权利要求11所述的装置,其特征在于,所述写入单元包括:
目标数据分区划分子单元,用于为所述中间过程表中的每一个存活周期划分对应的目标数据分区;
表项数据识别子单元,用于从所述中间过程表中识别出属于同一存活周期的表项数据,其中,属于同一存活周期的表项数据的开始字段和结束字段的字段信息相同;
目标数据分区写入子单元,用于将识别出的表项数据写入为其所属存活周期划分的目标数据分区,所有目标数据分区组成目标数据表。
14.根据权利要求10所述的装置,其特征在于,所述装置还包括:
返回单元,用于当所述执行检查子单元检查到所述极限存储过程中出现异常时,返回所述接收单元。
15.一种极限存储设备,其特征在于,包括:
处理器;用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收用于触发对源数据表执行极限存储任务的极限存储命令;
根据所述极限存储命令生成极限存储计划;
按照所述极限存储计划对所述源数据表执行极限存储任务,得到目标数据;
将所述目标数据写入目标数据表。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510654080.7A CN106569731B (zh) | 2015-10-10 | 2015-10-10 | 极限存储方法、装置及设备 |
PCT/CN2016/101449 WO2017059799A1 (zh) | 2015-10-10 | 2016-10-08 | 极限存储方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510654080.7A CN106569731B (zh) | 2015-10-10 | 2015-10-10 | 极限存储方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106569731A true CN106569731A (zh) | 2017-04-19 |
CN106569731B CN106569731B (zh) | 2020-08-04 |
Family
ID=58487403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510654080.7A Active CN106569731B (zh) | 2015-10-10 | 2015-10-10 | 极限存储方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106569731B (zh) |
WO (1) | WO2017059799A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764702A (zh) * | 2019-10-16 | 2020-02-07 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN112015804A (zh) * | 2019-05-28 | 2020-12-01 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
CN103198132A (zh) * | 2013-04-12 | 2013-07-10 | 中国农业银行股份有限公司 | 数据处理方法和装置 |
US20150095344A1 (en) * | 2008-11-28 | 2015-04-02 | International Business Machines Corporation | Database Access Using Partitioned Data Areas |
CN104899199A (zh) * | 2014-03-04 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 一种数据仓库数据处理方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916261B (zh) * | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
CN102073712B (zh) * | 2010-12-31 | 2012-08-08 | 北京四方继保自动化股份有限公司 | 基于动态变化帧的过程数据全息归档和反演方法 |
CN103605805B (zh) * | 2013-12-09 | 2016-10-26 | 冶金自动化研究设计院 | 一种海量时序数据的存储方法 |
CN103942035B (zh) * | 2014-04-11 | 2017-08-29 | 华为技术有限公司 | 处理指令的方法、编译器及指令处理器 |
-
2015
- 2015-10-10 CN CN201510654080.7A patent/CN106569731B/zh active Active
-
2016
- 2016-10-08 WO PCT/CN2016/101449 patent/WO2017059799A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150095344A1 (en) * | 2008-11-28 | 2015-04-02 | International Business Machines Corporation | Database Access Using Partitioned Data Areas |
CN101504664A (zh) * | 2009-03-18 | 2009-08-12 | 中国工商银行股份有限公司 | 对全量源数据进行抽取转换加载的装置及方法 |
CN103198132A (zh) * | 2013-04-12 | 2013-07-10 | 中国农业银行股份有限公司 | 数据处理方法和装置 |
CN104899199A (zh) * | 2014-03-04 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 一种数据仓库数据处理方法和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015804A (zh) * | 2019-05-28 | 2020-12-01 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、设备及存储介质 |
CN110764702A (zh) * | 2019-10-16 | 2020-02-07 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN110764702B (zh) * | 2019-10-16 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017059799A1 (zh) | 2017-04-13 |
CN106569731B (zh) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9372908B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
US20150278310A1 (en) | Database device | |
US8306945B2 (en) | Associating database log records into logical groups | |
US11036608B2 (en) | Identifying differences in resource usage across different versions of a software application | |
CN107122368A (zh) | 一种数据校验方法、装置及电子设备 | |
CN107436794A (zh) | 容器图像管理系统及方法 | |
CN105095247B (zh) | 符号数据分析方法和系统 | |
CN107741903A (zh) | 应用程序兼容性测试方法、装置、计算机设备和存储介质 | |
US20190286629A1 (en) | Method for processing transactions using blockchain network, and transaction management server using the same | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
CN104778179B (zh) | 一种数据迁移测试方法和系统 | |
CN107590207A (zh) | 数据同步方法及装置、电子设备 | |
US9128962B2 (en) | View based table replacement for applications | |
CN106970958A (zh) | 一种流文件的查询与存储方法和装置 | |
CN108055340A (zh) | 客户资源分配方法、装置、计算机设备和存储介质 | |
US9965355B2 (en) | System and method for dynamic collection of system management data in a mainframe computing environment | |
CN106569731A (zh) | 极限存储方法、装置及设备 | |
JP4177833B2 (ja) | リンクリストへのマルチプロセスアクセス方法および装置 | |
CN107783728A (zh) | 数据存储方法、装置和设备 | |
CN110928941B (zh) | 一种数据分片抽取方法及装置 | |
Scherbaum et al. | Spline: Spark lineage, not only for the banking industry | |
CN105760283B (zh) | 一种日志输出方法和装置 | |
US20120291004A1 (en) | System and method for analysis of a large code base using partitioning | |
CN114022148B (zh) | 基于区块链的交易冲突检测方法、装置、设备和存储介质 | |
CN106227502A (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 |