掌桥专利:专业的专利平台
掌桥专利
首页

数据管理的方法、装置、系统及存储介质

文献发布时间:2024-04-18 19:52:40


数据管理的方法、装置、系统及存储介质

技术领域

本申请涉及通信领域,特别涉及一种数据管理的方法、装置、系统及存储介质。

背景技术

数据库是互联网技术(internet technology,IT)系统的核心资产,IT系统使用数据库来存储数据。通过建立相隔较远的两个数据库,该两个数据库相互容灾,使该两个数据库内保存的数据一致,从而保证IT系统中的数据安全性。这样当其中一处数据库因意外(如火灾或地震等)停止工作,另一处数据库继续提供服务。

为了便于说明,将该两个数据库分别称为第一数据库和第二数据库,在IT系统的结构化查询语言(structured query language,SQL)接入层设置代理模块,IT系统接收用于存储数据的SQL语句,IT系统的代理模块基于该SQL语句同时向第一数据库和第二数据库存储相同的数据。如此,使第一数据库中保存的数据和第二数据库中保存的数据保持一致。

目前需要对SQL接入层进行改造,使SQL接入层包括代理模块,使代理模块基于接收的SQL语句同步向两个数据库存储相同数据,然而对SQL接入层的改造难度大,运营成本高且维护困难。

发明内容

本申请提供了一种数据管理的方法、装置、系统及存储介质,以降低运营成本以及维护难度。所述技术方案如下:

第一方面,本申请提供了一种数据管理的方法,在所述方法中,获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。基于第一描述信息将第一行组保存到第二存储系统中。

由于第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,如此能够基于第一描述信息获取第一存储系统保存的第一行组。也就是说,在第一存储系统执行完用于保存第一行组的过程后,获取第一描述信息,基于第一描述信息从第一存储系统中得到第一行组,向第二存储系统中保存第一行组,保证第一存储系统中的数据和第二存储系统中的数据保持一致。这样对于第一存储系统保存数据的过程,不会修改该过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

在一种可能的实现方式中,第一描述信息包括第一事务的事务信息,第一事务是第一存储系统在指定时间段内执行完的事务。确定所述第一事务;从第一存储系统已产生的描述信息中,选择包括第一事务的事务信息的第一描述信息。由于第一事务是第一存储系统在指定时间段内执行完的事务,如此基于第一事务可以得到第一存储系统在指定时间段内新增的第一描述信息,从而基于第一描述信息得到第一存储系统在指定时间段内新增的第一行组。

在另一种可能的实现方式中,获取第一事务集合,第一事务集合包括第一存储系统在指定时间段的结束时刻执行的事务,且第一事务集合用于反映第一存储系统在该结束时刻之前已执行完的事务。基于第一事务集合确定第一事务。由于第一事务集合用于反映第一存储系统在该结束时刻之前已执行完的事务,从而通过第一事务集合能够准确地得到第一存储系统在指定时间段内执行完的第一事务。

在另一种可能的实现方式中,获取第二事务集合,第二事务集合包括第一存储系统在指定时间段的起始时刻执行的事务,且第二事务集合用于反映第一存储系统在该起始时刻之前已执行完的事务。基于第一事务集合和第二事务集合确定第一事务。由于第一事务集合用于反映第一存储系统在该结束时刻之前已执行完的事务,第二事务集合用于反映第一存储系统在该起始时刻之前已执行完的事务,从而通过第一事务集合和第二事务集合能够准确地得到第一存储系统在指定时间段内执行完的第一事务。

在另一种可能的实现方式中,基于行组范围,从第一存储系统已产生的描述信息中选择至少一个描述信息,该行组范围包括第一存储系统在指定时间段内操作的行组,至少一个描述信息中的每个描述信息包括的组标识对应的行组属于行组范围。从至少一个描述信息中,选择包括第一事务的事务信息的第一描述信息。

由于通过该行组范围选择至少一个描述信息,再从该至少一个描述信息中选择包括第一事务的事务信息的第一描述信息,这样在选择第一描述信息的过程中可以减少需要分析的描述信息数量,提高得到第一描述信息的效率。

在另一种可能的实现方式中,第一描述信息包括第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据,第一存储系统和第二存储系统为相同类型的存储系统。基于该存储位置,获取该数据片段。向第二存储系统发送文件,该文件包括数据片段,该文件用于触发第二存储系统保存该数据片段。

由于第一存储系统和第二存储系统为相同类型的存储系统,所以第一存储系统保存第一行组的方式和第二存储系统保存第一行组的方式应当相同。由于该文件包括该数据片段,这样可以使第二存储系统保存该数据片段,使第一存储系统保存第一行组的方式和第二存储系统保存第一行组的方式相同,避免出现存储错误。

在另一种可能的实现方式中,该文件还包括第一行状态信息,第一行状态信息用于指示第一行组中未被删除的数据,该文件还用于触发第二存储系统保存第一行状态信息或基于第一行状态信息从该数据片段中删除第一行组中被删除的数据。如此,通过第一行状态信息,使第一存储系统保存的第一行组和第二存储系统保存的第一行组保持一致。

在另一种可能的实现方式中,该文件还包括第一行组的组标识和/或第一行组中的每列数据对应的列标识,该文件还用于触发第二存储系统基于第一行组的组标识和该每列数据对应的列标识获取第二描述信息,第二描述信息用于描述第一行组。由于第二描述信息用于描述第一行组,这样便于第二存储系统基于第二描述信息恢复第一行组。

在另一种可能的实现方式中,该文件还包括该每列数据对应的统计信息,第二描述信息还包括该每列数据对应的统计信息。该每列数据的统计信息可用于帮助第二存储系统从数据表中快速查询所需要的数据,该数据表为第一行组属于的数据表,即可提高查询数据的效率。

在另一种可能的实现方式中,第一描述信息包括第一行组的组标识和第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据。基于该组标识和该存储位置,获取第一行组。向第二存储系统发送插入语句,该插入语句包括第一行组中的每行数据,该插入语句用于触发第二存储系统保存第一行组中的每行数据。由于获取的插入语句包括第一行组中的每行数据,这样第二存储系统接收该插入语句,通过执行该插入语句,便可快速向第一行组保存在第二存储系统中。

在另一种可能的实现方式中,获取第三描述信息,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,第二行组为第一存储系统中保存的一个行组,第二存储系统保存有第二行组。基于第三描述信息,删除第二存储系统中保存的至少一行数据。由于第一存储系统在指定时间段删除该至少一行数据,基于第三描述信息,删除第二存储系统中保存的至少一行数据,从而保证第一存储系统保存的数据和第二存储系统保存的数据保持一致。

在另一种可能的实现方式中,第一存储系统和第二存储系统是相同类型的存储系统,第三描述信息包括第二行组的组标识和第二行状态信息,第二行状态信息用于指示至少一行数据。由于第二行状态信息用于指示至少一行数据,这样向第二存储系统发送第三描述信息,从而第二存储系统可以基于第三描述信息删除该至少一行数据,保证第一存储系统保存的数据和第二存储系统保存的数据保持一致。

在另一种可能的实现方式中,第三描述信息包括第二行组的组标识和第二行状态信息,第二行状态信息用于指示至少一行数据。基于该组标识和第二行状态信息,获取该至少一行数据中的每行数据的行标识。向第二存储系统发送删除语句,该删除语句包括该每行数据的行标识,该删除语句用于触发第二存储系统删除该至少一行数据。由于第一存储系统在指定时间段删除该至少一行数据,该删除语句包括该至少一行数据中的每行数据的行标识,这样第二存储系统基于该删除语句删除第二存储系统中保存的至少一行数据,从而保证第一存储系统保存的数据和第二存储系统保存的数据保持一致。

在另一种可能的实现方式中,第一存储系统为数据库系统或数据仓库系统,第二存储系统为数据库系统或数据仓库系统。

在另一种可能的实现方式中,第一行组中的每行数据是指定业务的数据。指定业务可以为关键业务,这样可以通过第二存储系统对关键业务的数据进行备份。

第二方面,本申请提供了一种数据管理的方法,在所述方法中,接收第一行组,第一行组是第一存储系统基于第一描述信息得到的,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。向第二存储系统保存第一行组。

由于第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,接收第一行组并向第二存储系统保存第一行组,保证第一存储系统中的数据和第二存储系统中的数据保持一致。由于第一行组是在第一存储系统保存第一行组后基于第一描述信息从第一存储系统中得到的,这样不用改变第一存储系统保存数据的过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

在一种可能的实现方式中,第一存储系统和所述第二存储系统是相同类型的系统。接收文件,该文件包括第一行组对应的数据片段,该数据片段包括第一行组中的至少一行数据。向第二存储系统保存该数据片段。

由于第一存储系统和第二存储系统为相同类型的存储系统,所以第一存储系统保存第一行组的方式和第二存储系统保存第一行组的方式应当相同。由于该文件包括该数据片段,这样可以使第二存储系统保存该数据片段,使第一存储系统保存第一行组的方式和第二存储系统保存第一行组的方式相同,避免出现存储错误。

在另一种可能的实现方式中,生成第二描述信息,第二描述信息用于描述第一行组。通过第二存储系统保存第二描述信息。由于第二描述信息用于描述第一行组,这样便于第二存储系统基于第二描述信息恢复第一行组。

在另一种可能的实现方式中,该文件还包括第一行组的组标识和/或第一行组中的每列数据对应的列标识,第二描述信息包括第一行组的组标识和该数据片段的存储位置,该存储位置是基于该每列数据对应的列标识得到的。

在另一种可能的实现方式中,该文件还包括第一行组中的每列数据对应的统计信息,第二描述信息还包括该每列数据对应的统计信息。该每列数据的统计信息可用于帮助第二存储系统从数据表中快速查询所需要的数据,该数据表为第一行组属于的数据表,即可提高查询数据的效率。

在另一种可能的实现方式中,该文件还包括第一行状态信息,第一行状态信息用于指示第一行组中未被删除的数据。通过第二存储系统保存第一行状态信息;或者,基于第一行状态信息从该数据片段中删除第一行组中被删除的数据。如此,通过第一行状态信息,使第一存储系统保存的第一行组和第二存储系统保存的第一行组保持一致。

在另一种可能的实现方式中,接收插入语句,该插入语句包括第一行组中的每行数据。向第二存储系统保存第一行组中的每行数据。由于插入语句包括第一行组中的每行数据,这样通过执行该插入语句,便可快速向第一行组保存在第二存储系统中,提高保存效率。

在另一种可能的实现方式中,接收第三描述信息,第三描述信息用于描述第一存储系统在所述指定时间段内从第二行组中删除的至少一行数据,第二行组为第一存储系统中保存的一个行组,第二存储系统保存有第二行组。基于第三描述信息删除第二存储系统中保存的至少一行数据。由于第一存储系统在指定时间段删除该至少一行数据,基于第三描述信息,删除第二存储系统中保存的至少一行数据,可以保证第一存储系统保存的数据和第二存储系统保存的数据保持一致。

在另一种可能的实现方式中,接收删除语句,该删除语句包括第二行组的至少一行数据中的每行数据的行标识,第二行组的至少一行数据是第一存储系统在该指定时间段内删除的数据,第二行组为第一存储系统中保存的一个行组,第二存储系统保存有第二行组。基于该每行数据的行标识,从第二存储系统中删除该每行数据。由于删除语句包括第一存储系统在指定时间段删除第二行组的每行数据的行标识,这样基于删除语句,可快速删除第二存储系统中保存的至少一行数据,提高删除效率。

在另一种可能的实现方式中,第一行组中的每行数据为指定业务的数据。

在另一种可能的实现方式中,第一存储系统为数据库系统或数据仓库系统,第二存储系统为数据库系统或数据仓库系统。

第三方面,本申请提供了一种数据管理的方法,在所述方法中,第一存储系统获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。第一存储系统基于第一描述信息向第二存储系统发送第一行组。第二存储系统保存第一行组。

由于第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,如此第一存储系统能够基于第一描述信息获取第一存储系统保存的第一行组。也就是说,在第一存储系统保存第一行组后,获取第一描述信息,基于第一描述信息从第一存储系统中获取第一行组,向第二存储系统中保存第一行组。这样不用改变第一存储系统保存数据的过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

在一种可能的实现方式中,第一描述信息包括第一事务的事务信息,第一事务是第一存储系统在指定时间段内执行完的事务。第一存储系统确定所述第一事务;从第一存储系统已产生的描述信息中,选择包括第一事务的事务信息的第一描述信息。由于第一事务是第一存储系统在指定时间段内执行完的事务,如此基于第一事务可以得到第一存储系统在指定时间段内新增的第一描述信息,基于第一描述信息得到第一存储系统在指定时间段内新增的第一行组。

在另一种可能的实现方式中,第一描述信息包括第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据,第一存储系统和第二存储系统为相同类型的存储系统。第一存储系统基于该存储位置,获取该数据片段。向第二存储系统发送文件,该文件包括该数据片段。第二存储系统保存该数据片段。由于该文件包括该数据片段,这样可以使第二存储系统保存该数据片段,保证第一存储系统保存第一行组的方式和第二存储系统保存第一行组的方式相同,避免出现存储错误。

在另一种可能的实现方式中,第一描述信息包括第一行组的组标识和第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据。第一存储系统基于该组标识和该存储位置,获取所述第一行组;向第二存储系统发送插入语句,该插入语句包括第一行组中的每行数据。第二存储系统保存第一行组中的每行数据。由于第一存储系统获取的插入语句包括第一行组中的每行数据,这样第二存储系统接收该插入语句,通过执行该插入语句,便可快速向第一行组保存在第二存储系统中,提高保存数据的效率。

第四方面,本申请提供了一种数据管理的装置,用于执行第一方面或第一方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能的实现方式中的方法的单元。

第五方面,本申请提供了一种数据管理的装置,用于执行第二方面或第二方面的任意一种可能的实现方式中的方法。具体地,所述装置包括用于执行第二方面或第二方面的任意一种可能的实现方式中的方法的单元。

第六方面,本申请提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面或第一方面的任意可能的实现方式中的方法。

第七方面,本申请提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第二方面或第二方面的任意可能的实现方式中的方法。

第八方面,本申请提供了一种包含指令的计算机程序产品,当所述指令被计算设备集群运行时,使得所述计算设备集群执行上述第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式的方法。

第九方面,本申请提供了一种计算机可读存储介质,用于存储计算机程序,所述计算机程序被计算设备集群执行时,所述计算设备集群执行上述第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式的方法。

第十方面,本申请提供了一种芯片,包括存储器和处理器,存储器用于存储计算机指令,处理器用于从存储器中调用并运行该计算机指令,以执行上述第一方面、第二方面、第一方面任意可能的实现方式或第二方面任意可能的实现方式的方法。

第十一方面,本申请提供了一种数据管理的系统,所述系统包括第四方面所述的装置和第五方面所述的装置;或者,所述系统包括第六方面所述的计算设备集群和第七方面所述的计算设备集群。

附图说明

图1是本申请实施例提供的一种数据管理的系统结构示意图;

图2是本申请实施例提供的另一种数据管理的系统结构示意图;

图3是本申请实施例提供的另一种数据管理的系统结构示意图;

图4是本申请实施例提供的另一种数据管理的系统结构示意图;

图5是本申请实施例提供的另一种数据管理的系统结构示意图;

图6是本申请实施例提供的另一种数据管理的系统结构示意图;

图7是本申请实施例提供的一种存储数据的方法流程图;

图8是本申请实施例提供的一种文件的示意图;

图9是本申请实施例提供的另一种存储数据的方法流程图;

图10是本申请实施例提供的另一种文件的示意图;

图11是本申请实施例提供的一种删除数据的方法流程图;

图12是本申请实施例提供的一种数据管理的方法流程图;

图13是本申请实施例提供的另一种数据管理的方法流程图;

图14是本申请实施例提供的另一种数据管理的方法流程图;

图15是本申请实施例提供的另一种数据管理的方法流程图;

图16是本申请实施例提供的一种数据管理的装置结构示意图;

图17是本申请实施例提供的另一种数据管理的装置结构示意图;

图18是本申请实施例提供的另一种数据管理的系统结构示意图;

图19是本申请实施例提供的一种计算设备的结构示意图;

图20是本申请实施例提供的一种计算设备集群的结构示意图;

图21是本申请实施例提供的另一种计算设备集群的结构示意图;

图22是本申请实施例提供的另一种计算设备的结构示意图;

图23是本申请实施例提供的另一种计算设备集群的结构示意图;

图24是本申请实施例提供的另一种计算设备集群的结构示意图。

具体实施方式

下面将结合附图对本申请实施方式作进一步地详细描述。

参见图1,本申请实施例提供了一种数据管理的系统100,所述系统100包括:第一存储系统101和第二存储系统102,第一存储系统101和第二存储系统102通信。

在一些实施例中,第二存储系统102是第一存储系统101的备份系统,第二存储系统102用于备份第一存储系统101中的部分或全部数据。

在一些实施例中,该数据管理的系统100包括多个第一存储系统101,每个第一存储系统101与第二存储系统102通信。第二存储系统101用于备份每个第一存储系统101中的部分或全部数据。

在一些实施例中,第一存储系统101可能是裸金属服务器或设备集群等,第二存储系统102可能是裸机服务器或设备集群等。

在一些实施例中,第一存储系统101为数据库系统或数据仓库系统,第二存储系统102为数据库系统或数据仓库系统。

在一些实施例中,第一存储系统101和第二存储系统102是相同类型的存储系统,第一存储系统101采用的存储数据方式和第二存储系统102采用的存储数据方式相同。例如第一存储系统101采用列存方式来存储数据,第二存储系统102也采用列存方式来存储数据。

在一些实施例中,第一存储系统101和第二存储系统102是不同类型的存储系统,第一存储系统101采用的存储数据方式和第二存储系统102采用的存储数据方式相同或不同。例如第一存储系统101采用列存方式来存储数据,第二存储系统102也采用列存方式来存储数据;或者,第一存储系统101采用列存方式来存储数据,第二存储系统102采用除列存方式以外的方式来存储数据。

第一存储系统101包括至少一个数据表,该至少一个数据表与至少一个业务一一对应,对于任一个业务对应的数据表,该数据表用于保存属于该业务的数据。

对第一存储系统101的访问操作包括至少一个基础操作,该至少一个基础操作包括插入操作、删除操作和查询操作。该插入操作用于向第一存储系统101中保存数据,该删除操作用于从第一存储系统101中删除数据,查询操作用于查询第一存储系统101中的数据。

例如,对于更新操作,更新操作用于更新第一存储系统101中的数据,组成该更新操作的基础操作包括删除操作和插入操作。假设第一存储系统101包括如下表1所示的数据表“Table1”,该数据表“Table1”用于保存姓名与年龄的对应关系。第一存储系统101接收更新语句,该更新语句如下所示:

Update Table1

Set Age=21

Where Name=姓名1。

该更新语句用于将下表1中的包括姓名1和年龄“20”的一行数据更新为包括姓名1和年龄“21”的一行数据。第一存储系统101接收该更新语句后,基于该更新语句执行更新操作,即第一存储系统101从下表1所示的数据表“Table1”中删除包括姓名1和年龄“20”的一行数据,并在下表1所示的数据表“Table1”中插入包括姓名1和年龄“21”的一行数据,如表2所示。即更新操作能够拆分成删除操作+插入操作。

表1

表2

其中,插入操作和删除操作能够改变第一存储系统101中保存的数据,如插入操作用于向第一存储系统101中保存数据,删除操作用于从第一存储系统101中删除数据。

在一些实施例中,向第一存储系统101中保存数据实质是向第一存储系统101中的数据表保存一行或多行数据。从第一存储系统101中删除数据实质是从第一存储系统101中的数据表中删除一行或多行数据。

对于第一存储系统101中的数据表,该数据表是一个逻辑表,该数据表对应至少一个文件。第一存储系统101将该数据表中的数据压缩成至少一个数据片段,将该至少一个数据片段保存在该数据表对应的至少一个文件中,这样能够节省存储空间。可选地,该数据表对应一个文件,第一存储系统101将该数据表中的数据压缩成至少一个数据片段,将该至少一个数据片段保存在该数据表对应的一个文件中。或者,该数据表中的每列对应一个文件,对于该数据表中的任一列包括的数据,将该列包括的数据压缩成至少一个数据片段,将该至少一个数据片段保存在该列对应的文件中。

在一些实施例中,第一存储系统101接收需要存储的一行或多行数据,先缓存接收的每行数据,在缓存N行数据时,将该N行数据作为第一行组,N为指定数值,N为大于0的整数。第一行组中的每行数据是属于同一业务的数据,即第一行组中的每行数据是属于该业务对应的数据表中的数据。

可选地,第一存储系统101包括该数据表对应的一个文件,将第一行组压缩成一个数据片段,将该一个数据片段保存在该数据表对应的文件中,以实现保存第一行组。或者,

可选地,第一存储系统101包括该数据表对应的多个文件,该多个文件与该数据表中的多列一一对应,任一列对应的文件用于保存该列包括的数据。将第一行组缩成多个数据片段,第一行组中的多列与该多个数据片段一一对应,任一列对应的数据片段用于保存第一行组中的该列包括的数据,向该数据表中的每列对应的文件中分别保存每列对应的数据片段,以实现保存第一行组。

其中,第一存储系统101保存第一行组的详细实现过程,将在图7或图9所示的实施例进行详细说明,在此先不描述。

N为预先定义的行组包括的行数。

在一些实施例中,第一存储系统101接收删除语句,该删除语句包括该数据表的标识信息和删除条件。基于该标识信息获取该数据表对应的至少一个文件,基于该至少一个文件恢复该数据表,从该数据表中删除满足该删除条件的至少一行数据。其中,第一存储系统101删除该至少一行数据的详细实现过程,将在图11所示的实施例进行详细说明,在此先不描述。

例如,第一存储系统101接收如下所示的删除语句,该删除语句包括数据表的标识信息“Table1”和删除条件“Name=姓名1”,该删除语句用于指示从Table1中删除姓名列中的数据为姓名1的至少一行数据。

Delete Form Table1

Where Name=姓名1。

第一存储系统101基于“Table1”获取数据表“Table1”对应的两个文件,该两个文件包括姓名列对应的文件和年龄列对应的文件。基于姓名列对应的文件和年龄列对应的文件,恢复出数据表“Table1”,删除姓名列中的数据为姓名1的至少一行数据。

在一些实施例中,周期性地将第一存储系统101保存的行组存储到第二存储系统101中,也就是说,对于任一个周期,将第一存储系统101在该周期内存储的行组保存到第二存储系统102中。和/或,确定第一存储系统101在该周期内删除的至少一行数据,从第二存储系统102中删除该至少一行数据,如此使第一存储系统101中存储的数据和第二存储系统102中存储的数据保持一致。

在一些实施例中,参见图2,该系统100还包括第一调度工具103和第二调度工具104。第一调度工具103与第一存储系统101通信,第二调度工具104与第二存储系统102通信,第一调度工具103和第二调度工具104通信。第一调度工具103获取第一存储系统101在该周期内存储的行组,向第二调度工具104发送该行组,第二调度工具104向第二存储系统102保存该行组。和/或,第一调度工具103确定第一存储系统101在该周期内删除的至少一行数据,向第二调度工具104通知该至少一行数据,第二调度工具104从第二存储系统102中删除该至少一行数据。

在一些实施例中,参见图3,第一调度工具103是第一存储系统101的一部分,例如,第一调度工具103是第一存储系统101中的一个模块,或者,第一调度工具103是第一存储系统101中的一个设备。第二调度工具104是第二存储系统102的一部分,例如,第二调度工具104是第二存储系统102中的一个模块,或者,第二调度工具104是第二存储系统102中的一个设备。第一存储系统101通过第一调度工具103,获取第一存储系统101在该周期内存储的行组,向第二存储系统102发送该行组。第二存储系统102通过第二调度工具104,向第二存储系统102保存该行组。和/或,第一存储系统101通过第一调度工具103,确定第一存储系统101在该周期内删除的至少一行数据,向第二存储系统102通知该至少一行数据,第二存储系统102通过第二调度工具104,从第二存储系统102中删除该至少一行数据。

在一些实施例中,参见图4,第一调度工具103和第二调度工具104是同一设备,第一调度工具103(第二调度工具104)与第一存储系统101和第二存储系统102通信。第一调度工具103获取第一存储系统101在该周期内存储的行组,向第二存储系统102保存该行组。和/或,第一调度工具103确定第一存储系统101在该周期内删除的至少一行数据,从第二存储系统102中删除该至少一行数据。

在一些实施例中,第一存储系统101和第二存储系统102可能位于同一区域,也可能位于不同的区域。

在第一存储系统101和第二存储系统102位于同一区域时,第一存储系统101所在可用区(availability zone,AZ)和第二存储系统102所在的AZ不同。可选地,参见图5,第一存储系统101和第二存储系统102通过网络进行通信,或者,参见图6,对于与第一存储系统101通信的第一调度工具103,以及与第二存储系统102通信的第二调度工具104,第一调度工具103和第二调度工具104之间通过网络通信。可选地,AZ包括数据中心等。

在第一存储系统101和第二存储系统102位于不同区域时,第一存储系统101和第二存储系统102之间通过网络或云进行通信。可选地,参见图5,第一存储系统101和第二存储系统102通过网络或云进行通信,或者,参见图6,对于与第一存储系统101通信的第一调度工具103,以及与第二存储系统102通信的第二调度工具104,第一调度工具103和第二调度工具104之间通过网络或云通信。可选地,该云为公有云、私有云或混合云等。

第一存储系统101和第二存储系统102位于不同区域,如果第一存储系统101所在区域因灾害导致第一存储系统101无法使用,但第二存储系统102所在区域没有灾害,第二存储系统102正常。如此,能够使用第二存储系统102提供服务,提高了服务的可用性。

参见图7,本申请实施例提供了一种存储数据的方法700,所述方法700应用于图1、图2、图3、图4、图5或图6所示的系统100,在所述方法700中,第一存储系统采用列存方式存储数据。即第一存储系统将需要保存的行组压缩成多个数据片段,该多个数据片段与该行组的多列一一对应,任一列对应的数据片段用于保存该行组中的该列包括的数据,保存该多个数据片段。所述方法700包括如下步骤701至703的流程。

步骤701:第一存储系统获取需要保存的第一行组。

第一存储系统接收需要保存的一行或多行数据,缓存接收的一行或多行数据,在缓存的行数达到N时,将该需要保存的N行数据组成第一行组。

在一些实施例中,在组成第一行组时,第一存储系统还为第一行组分配组标识,该组标识用于在第一存储系统中标识第一行组。

在一些实施例中,该N行数据是同一业务的数据,该N行数据是该业务对应的数据表中的数据。可选地,第一存储系统接收到需要向某数据表保存的一行或多行数据,将该一行或多行数据缓存在该数据表对应的缓存空间,在该缓存空间中缓存N行数据时,将该N行数据组成第一行组。

在一些实施例中,第一存储系统接收插入语句,该插入语句包括数据表的标识信息和需要保存的一行或多行数据,该插入语句用于指示第一存储系统向该数据表中保存该一行或多行数据。第一存储系统基于该数据表的标识信息将该插入语句中包括的一行或多行数据缓存到该数据表对应的缓存空间中。和/或,第一存储系统接收用于更新该数据表的更新语句,该更新语句用于触发第一存储系统将该数据表中保存的X行数据更新为该更新语句指示的Y行数据,X和Y均为大于0的整数,该Y行数据是需要保存的数据,将该更新语句指示的Y行数据缓存到该数据表对应的缓存空间中。

例如,第一存储系统接收如下插入语句:

Insert into Table1(Name,Age)

Values(姓名3,25),(姓名4,22),(姓名5,25),(姓名6,27),(姓名7,24),(姓名8,30)。

该插入语句用于向如表1所示的Table1中保存六行数据。第一存储系统接收该插入语句,将该插入语句中的六行数据缓存在Table1对应的缓存空间中,该六行数据为(姓名3,25),(姓名4,22),(姓名5,25),(姓名6,27),(姓名7,24),(姓名8,30)。

再例如,第一存储系统接收如下更新语句:

Update Table1

Set Age=21

Where Name=姓名1。

该更新语句用于将如表1所示的Table1中保存包括姓名1的至少一行数据更新为包括姓名1和年龄“21”的一行数据。包括姓名1和年龄“21”的一行数据为需要保存的一行数据,第一存储系统接收该更新语句后,删除Table1中保存包括姓名1的至少一行数据,并将包括姓名1和年龄“21”的一行数据缓存在Table1对应的缓存空间中。

在一些实施例中,第一存储系统在获取到第一行组后,为第一行组分配第一事务,并执行第一事务,第一事务用于指示保存第一行组的时间。其中,第一存储系统执行第一事务的过程实质是第一存储系统存储第一行组的过程。第一存储系统执行完第一事务,表示第一存储系统存储完第一行组。

在一些实施例中,第一存储系统包括事务管理器,第一存储系统在获取到第一行组后,事务管理器为第一行组生成第一事务,并分配第一事务的事务号。可选地,事务管理器按事务号递增的顺序,为生成的每个事务分配事务号。例如,为生成的第一个事务分配的事务号为T0,为生成的第二个事务分配的事务号为T1,为生成的第三个事务分配的事务号为T2,……。

在事务管理器生成一个事务时,第一存储系统就执行该事务,第一存储系统中的事务包括已执行完的事务和正在执行的事务。

例如,假设N=6,Table1对应的缓存空间缓存有六行数据,该六行数据为(姓名3,25),(姓名4,22),(姓名5,25),(姓名6,27),(姓名7,24),(姓名8,30),第一存储系统将该六行数据组成如下表3所示的第一行组。第一存储系统中的事务管理器为第一行组生成第一事务,第一事务为事务号为T3的事务,第一存储系统执行第一事务,即第一存储系统开始保存第一行组。

表3

由于事务管理器按事务号递增的顺序,为生成的每个事务分配事务号,因此基于第一存储系统正在执行的事务的事务号,能够确定第一存储系统已执行的事务。

例如,第一存储系统正在执行事务号T3对应的第四个事务,事务号T5对应的第六个事务和事务号T6对应的第七个事务。基于正在执行的事务的事务号T3、T5和T6,确定第一存储系统已执行完的事务包括事务号T0对应的第一个事务,事务号T1对应的第二个事务,事务号T2对应的第三个事务和事务号T4对应的第五个事务。

步骤702:第一存储系统将第一行组压缩成多个数据片段,该多个数据片段与第一行组包括的多列一一对应,保存该多个数据片段。

在步骤702中,保存该多个数据片段,即实现了保存第一行组。

在一些实施例中,第一行组中的每行数据为同一业务的数据,即第一行组中的每行数据为该业务对应的数据表中的数据。该多个数据片段包括第一数据片段。对于与第一数据片段相对应的一列,第一数据片段用于保存第一行组中的该列包括的数据。

对于该业务对应的数据表,该数据表中的每列对应一个文件,每列对应的文件不同。对于该数据表中的任一列,该列对应的文件用于保存该数据表中的该列包括的数据。在步骤702中,针对第一行组中的该列包括的数据,第一存储系统将第一行组中的该列包括的数据压缩成一个数据片段,将该数据片段保存到该列对应的文件中。

例如,参见图8,对于表1所示的数据表,第一存储系统包括姓名列对应的第一文件和年龄列对应的第二文件。第一存储系统将上述表3所示的第一行组中的姓名列包括的数据(姓名3、姓名4、姓名5、姓名6、姓名7、姓名8)压缩成一个数据片段14,将该数据片段14保存在姓名列对应的文件中,将上述表3所示的第一行组中的年龄列包括的数据(25、22、25、27、24、30)压缩成一个数据片段24,将该数据片段24保存在年龄列对应的文件中。

步骤703:第一存储系统生成多个列存描述信息,该多个列存描述信息与第一行组中的多列一一对应,任一列对应的列存描述信息用于描述第一行组中的该列包括的数据,保存该多个列存描述信息。

由于任一列对应的列存描述信息用于描述第一行组中的该列包括的数据,该多个列存描述信息用于描述第一行组,第一存储系统基于该多个列存描述信息可以恢复出第一行组。

在一些实施例中,对于该业务对应的数据表,第一存储系统包括该数据表对应的描述信息列表。在步骤703中,第一存储系统将该多个列存描述信息保存在该数据表对应的描述信息列表中。

在一些实施例中,该多个列存描述信息包括第一列存描述信息,第一列存描述信息包括第一行组的组标识、第一事务的事务信息和第一数据片段的存储位置。第一数据片段用于保存第一列存描述信息对应的一列数据。可选地,第一数据片段的存储位置包括第一列存描述信息对应的一列的列标识和第一数据片段在该列对应的文件中的偏移量。

在一些实施例中,第一数据片段是对第一列存描述信息对应的一列数据进行压缩得到的数据片段。

在一些实施例中,第一列存描述信息还包括该一列数据的统计信息,该统计信息包括该一列数据的最大值和/或最小值等。

该一列数据的统计信息用于加快第一存储系统查询数据的速率。例如,第一存储系统需要在该数据表中查询该一列中的数据等于指定数据的行时,第一存储系统判断指定数据是否位于由该最小值和该最大值组成的数据范围内,如果指定数据位于该数据范围内,则在第一行组中查询该一列中的数据等于指定数据的行。如果指定数据不位于该数据范围内,则跳过第一行组,查询该数据表中的除第一行组之外的行组。

在一些实施例中,第一存储系统还生成第一状态描述信息,该第一状态描述信息包括第一行组的组标识、第一事务的事务信息和行状态信息,该行状态信息用于指示第一行组中的每行数据的状态。第一存储系统将该第一状态描述信息保存在该数据表对应的描述信息列表中。

在一些实施例中,该行状态信息用于指示第一行组中未被删除的数据和/或删除的数据。

在一些实施例中,该行状态信息是一个位图,该位图包括N个比特,该位图中的N个比特与第一行组中的N行数据一一对应,对于该位图中的任一个比特,该比特用于指示该比特对应的一行数据是否被删除。

参见下表4所示的描述信息列表,表4为上述表1或表2所示的数据表“Table1”对应的描述信息列表。例如,对于上述表3所示的第一行组,第一存储系统将第一行组中的姓名列对应的数据片段14保存在姓名列对应的文件中,并获取数据片段14在姓名列对应的文件中的偏移量“12”,生成用于描述该姓名列的一个列存描述信息,该列存描述信息包括第一行组的组标识“G3”、第一事务的事务信息“T3”和数据片段14的存储位置,该存储位置包括姓名列的列标识“Name”和数据片段14的偏移量“12”,将该列存描述信息保存在如表4所示的描述信息列表中,该列存描述信息为表3中的序号为10的记录。

第一存储系统将第一行组中的年龄列对应的数据片段24保存在年龄列对应的文件中。获取数据片段24在年龄列对应的文件中的偏移量“10”,生成用于描述该年龄列的一个列存描述信息,该列存描述信息包括第一行组的组标识“G3”、第一事务的事务信息“T3”和数据片段24的存储位置,该存储位置包括年龄列的列标识“Age”和数据片段24的偏移量“10”,将该列存描述信息保存在如表4所示的描述信息列表中,该列存描述信息为表4中的序号为11的记录。

第一存储系统还在如表4所示的描述信息列表中保存第一状态描述信息,该第一状态描述信息为表3中的序号为12的记录,该第一状态描述信息包括第一行组的组标识“G3”、第一事务的事务信息“T3”和行状态信息“000000”。可选地,该第一状态描述信息中还包括指示信息(如表4中的“-1”为指示信息),该指示信息用于表示该指示信息所在的描述信息为第一状态描述信息。

表4

在一些实施例中,第一存储系统还记录第一行组的组标识。

第一存储系统每当得到需要存储一个行组时,重复执行上述步骤701-703的过程,以保存一个行组。

参见图9,本申请实施例提供了一种存储数据的方法900,所述方法900应用于图1、图2、图3、图4、图5或图6所示的系统100,在所述方法900中,第一存储系统将需要保存的行组压缩成一个数据片段,保存该数据片段。所述方法900包括如下步骤901至903的流程。

步骤901:与图7所示实施例中的步骤701相同,在此不再详细说明。

步骤902:第一存储系统将第一行组压缩成一个数据片段,保存该一个数据片段。

在步骤902中,保存该一个数据片段,即实现了保存第一行组。

在一些实施例中,第一行组中的每行数据为同一业务的数据,即第一行组中的每行数据为该业务对应的数据表中的数据。对于该业务对应的数据表,该数据表对应一个文件,第一存储系统在将第一行组压缩成一个数据片段后,将该数据片段保存到该文件中。

例如,参见图10,对于上述表3所示的第一行组,第一存储系统将表3所示的第一行组中的六行数据压缩成一个数据片段4,将该数据片段4保存到数据表Table1对应的文件中。假设,数据片段4在文件中的偏移量为“12”。

步骤903:第一存储系统生成行组描述信息,该行组描述信息用于描述第一行组,保存该行组描述信息。

由于该行组描述信息用于描述第一行组,第一存储系统基于该行组描述信息可以恢复出第一行组。

在一些实施例中,对于该业务对应的数据表,第一存储系统包括该数据表对应的描述信息列表,第一存储系统将该行组描述信息保存在该描述信息列表中。

在一些实施例中,该行组描述信息包括第一行组的组标识,第一事务的事务信息和第一行组对应的数据片段的存储位置。第一行组对应的数据片段的存储位置包括该数据片段在该数据表对应的文件中的偏移量。

在一些实施例中,该行组描述信息还包括第一行组中的每列数据的统计信息。可选地,对于第一行组中的任一列,该列数据的统计信息包括该列数据的最大值和/或最小值等。

在一些实施例中,第一存储系统还生成第一状态描述信息,第一状态描述信息包括第一行组的组标识、第一事务的事务信息和行状态信息,该行状态信息用于指示第一行组中的每行数据的状态。第一存储系统将该第一状态描述信息保存在该数据表对应的描述信息列表中。

在一些实施例中,该行状态信息用于指示第一行组中的未被删除的数据。可选地,该行状态信息还用于指示第一行组中的被删除的数据。

参见下表5所示的描述信息列表,假设上述表3所示的第一行组的组标识为“G3”,第一事务的事务信息包括事务号“T3”,第一行组对应的数据片段4的偏移量为“12”,第一行组包括六行数据。第一存储系统生成行组描述信息,该行组描述信息包括第一行组的组标识“G3”,第一事务的事务信息“T3”和存储位置“12”,将该行组描述信息保存在如下表5所示的描述信息列表中,请见表5中序号为7的记录。第一存储系统还生成第一状态描述信息,第一状态描述信息包括第一行组的组标识“G3”,第一事务的事务信息“T3”和行状态信息“000000”,该行状态信息“000000”用于指示第一行组中的六行数据未被删除,将该第一状态描述信息保存在如下表5所示的描述信息列表中,请见表5中序号为8的记录。可选地,该第一状态描述信息中还包括指示信息(如表5中的“-1”为指示信息),该指示信息用于表示该指示信息所在的描述信息为第一状态描述信息。

表5

在一些实施例中,第一存储系统还记录第一行组的组标识。

第一存储系统每当需要存储一个行组时,重复执行上述步骤901-903的过程,以保存一个行组。

参见图11,本申请实施例提供了一种删除数据的方法1100,所述方法1100应用于图1、图2、图3、图4、图5或图6所示的系统100,所述系统100中的第一存储系统使用所述方法1100来删除数据。所述方法1100包括如下步骤1101至1105的流程。

步骤1101:第一存储系统接收删除语句,该删除语句包括数据表的标识信息和删除条件。

在一些实施例中,该删除条件包括该数据表中的至少一列的列标识和每列对应的指定数据,该删除条件指示该数据表中需要删除的至少一行数据。

例如,第一存储系统接收如下所示的删除语句,该删除语句包括数据表的标识信息“Table1”和删除条件“Name=姓名1”,该删除条列包括姓名列的列标识“Name”和该姓名列对应的指定数据“姓名1”。

删除语句为:

Delete Form Table1

Where Name=姓名1。

在一些实施例中,第一存储系统接收删除语句后,生成第二事务,并执行第二事务,第二事务用于指示删除该至少一行数据的时间。

第一存储系统除了在接收到删除语句的情况下删除数据,还可能在接收到更新语句的情况下也删除数据。该更新语句包括数据表的标识信息和删除条件。

例如,第一存储系统接收如下更新语句:

Update Table1

Set Age=21

Where Name=姓名1。

该更新语句包括数据表的标识信息“Table1”和删除条件“Name=姓名1”。该更新语句还用于指示需要向数据表“Table1”中保存的一行数据,该一行数据为包括姓名1和年龄“21”的一行数据。同时该更新语句还指示需要从数据表“Table1”中删除包括姓名1的至少一行数据。

在一些实施例中,第一存储系统接收更新语句后,生成第二事务,并执行第二事务,第二事务用于指示删除该删除条件指示的至少一行数据的时间。

步骤1102:第一存储系统基于该数据表的标识信息,获取属于该数据表中的每个行组对应的描述信息,行组对应的描述信息用于描述该行组。

第一存储系统采用如下两种存储方式来存储行组,第一存储方式是第一存储系统将行组压缩成多个数据片段并保存该多个数据片段,第二存储方式是第一存储系统将行组压缩成一个数据片段并保存该一个数据片段。

在第一存储方式中,第一存储系统将行组压缩成多个数据片段,该多个数据片段与该行组中的多列一一对应,该行组对应的描述信息包括该行组对应的多个列存描述信息和该行组对应的第一状态描述信息。在步骤1102中,第一存储系统基于该数据表的标识信息,获取该数据表对应的描述信息列表,获取该描述信息列表中保存的每个行组对应的多个列存描述信息和第一状态描述信息。

其中,同一行组对应的多个列存描述信息和第一状态描述信息均包括该行组的组标识。例如,参见表4所示的数据表“Table1”对应的描述信息列表,从该描述信息列表获取包括组标识“G0”的两个列存描述信息(表4中序号为1和2的两条记录)和第一状态描述信息(表4中序号为3的一条记录),获取包括组标识“G1”的两个列存描述信息(表4中序号为4和5的两条记录)和第一状态描述信息(表4中序号为6的记录)。重复上述获取操作,得到数据表“Table1”中的每个行组对应的多个列存描述信息和第一状态描述信息。

在第二存储方式中,第一存储系统将该行组压缩成一个数据片段,该行组对应的描述信息包括该行组对应的行组描述信息和该行组对应的第一状态描述信息。在步骤1102中,第一存储系统基于该数据表的标识信息,获取该数据表对应的描述信息列表,获取该描述信息列表中保存的每个行组对应的行组描述信息和第一状态描述信息。

其中,同一行组对应的行组描述信息和第一状态描述信息均包括该行组的组标识。例如,参见表5所示的数据表“Table1”对应的描述信息列表,从该描述信息列表获取包括组标识“G0”的行组描述信息(表5中序号为1的一条记录)和第一状态描述信息(表5中序号为2的一条记录),获取包括组标识“G1”的行组描述信息(表5中序号为3的一条记录)和第一状态描述信息(表5中序号为4的一条记录)。重复上述获取操作,得到数据表“Table1”中的每个行组的行组描述信息和第一状态描述信息。

步骤1103:第一存储系统基于每个行组对应的描述信息,恢复出每个行组,得到该数据表。

在步骤1103中,第一存储系统基于任一个行组对应的描述信息,恢复出该行组。在恢复出每个行组时,将每个行组组成该数据表。

在一些实施例中,对于该数据表中的任一个行组,第一存储系统通过如下11031-11032的操作恢复出该行组。

11031:第一存储系统基于该行组对应的描述信息获取该行组对应的至少一个数据片段。

在上述第一存储方式中,该行组对应的描述信息包括该行组对应的多个列存描述信息,该多个列存描述信息与该行组中的多列一一对应,该数据表中的每列对应一个文件。对于该行组中的任一列,该列对应的列存描述信息包括该列对应的数据片段的存储位置,该存储位置包括该列的列标识和该数据片段的偏移量。可选地,获取该列对应的数据片段的操作为:

基于该数据表的标识信息,获取该数据表中的每列对应的文件。基于该列的列标识确定该列对应的文件,基于该偏移量从该列对应的文件中获取该列对应的数据片段。按该方式获取该行组中的每列对应的数据片段。

在上述第二存储方式中,该行组对应的描述信息包括该行组对应的行组描述信息,该行组描述信息包括该行组对应的数据片段的存储位置,该存储位置包括该数据片段的偏移量。可选地,获取该行组对应的数据片段的操作为:基于该数据表的标识信息,获取该数据表对应的文件,基于该偏移量从该数据表对应的文件中获取该行组对应的数据片段。

11032:第一存储系统对该至少一个数据片段进行解压,基于该行组对应的行状态信息,从解压的该至少一个数据片段中获取该行组中的每行数据。

该行组对应的行状态信息用于指示该行组中的未被删除的数据和/或被删除的数据。

在上述第一存储方式中,该行组对应的描述信息包括该行组对应的第一状态描述信息,该第一状态描述信息包括该行组对应的行状态信息,且该行组中的每列对应一个数据片段。第一存储系统对该每列对应的数据片段进行解压,基于该行状态信息,从每列对应的解压后的数据片段中获取该行组中未被删除的数据,得到该行组。

在上述第二存储方式中,该行组对应的描述信息包括该行组对应的第一状态描述信息,该第一状态描述信息包括该行组对应的行状态信息,且该行组对应一个数据片段。第一存储系统对该数据片段进行解压,基于该行状态信息,从该行组对应的解压后的数据片段中获取该行组中未被删除的数据,得到该行组。

步骤1104:第一存储系统从该数据表中获取满足该删除条件的M行数据,M为大于0的整数,确定该M行数据中的每行数据属于的行组,确定的行组包括第二行组。

确定的行组可能包括一个或多个行组,即确定的行组除了包括第二行组外,还可能包括其他行组。

该删除条件包括列的列标识和该列对应的指定数据,第一存储系统基于该列标识,在该数据表中查询该列中的数据为指定数据的M行数据,该M行数据是需要删除的数据,确定该M行数据中的每行数据属于的行组,其中,第二行组包括至少一行需要删除的数据。

步骤1105:第一存储系统删除第二行组对应的第一状态描述信息,保存第二行组对应的第二状态描述信息,该第二状态描述信息用于描述第一存储系统从第二行组中删除的该至少一行数据。

如果确定的行组还包括其他行组,则第一存储系统删除其他行组对应的第一状态描述信息,并保存其他行组对应的第二状态描述信息。

在一些实施例中,第二行组对应的第三描述信息包括第二行组的组标识、第二事务的事务信息和行状态信息,该行状态信息用于描述第二行组中删除的该至少一行数据。该行状态信息还用于描述第二行组中未被删除的数据。

在一些实施例中,第一存储系统从描述信息列表中删除第二行组对应的第一状态描述信息,并将第二行组对应的第二状态描述信息保存在描述信息列表中。

例如,假设第二行组的组标识为“G1”,以及假设第一存储系统101需要从第二行组中删除第二和第三行的数据。

在上述第一存储方式中,第一存储系统中包括如表4所示的描述信息列表,表4中的序号为6的记录为第二行组对应的第一状态描述信息。第一存储系统从如表4所示的描述信息列表中删除第二行组对应的第一状态描述信息,并向表4所示的描述信息列表中保存第二行组对应的第二状态描述信息。参见下表6所示的序号为12的记录,该记录为第二行组对应的第二状态描述信息,该第二状态描述信息包括第二行组的组标识“G1”,第二事务的事务信息“T4”和行状态信息“011000”,该行状态信息“011000”用于指示从第二行组中删除第二和第三行数据。

表6

在上述第二存储方式中,第一存储系统中包括如表5所示的描述信息列表,表5中的序号为4的记录为第二行组的第一状态描述信息。第一存储系统从如表5所示的描述信息列表中删除第二行组对应的第一状态描述信息,并向表5所示的描述信息列表中保存第二行组对应的第二状态描述信息。参见下表7所示的序号为8的记录,该记录为第二行组对应的第二状态描述信息,该第二状态描述信息包括第二行组的组标识“G1”,第二事务的事务信息“T4”和行状态信息“011000”,该行状态信息“011000”用于指示从第二行组中删除第二和第三行数据。

表7

在一些实施例中,第一存储系统还记录第二行组的组标识。

在上述第一存储方式中,第二行组对应的多个数据片段,该多个数据片段仍保存有第二行组中需要删除的该至少一行数据。第一存储系统可能将该至少一行数据从该多个数据片段中删除,以节省存储空间;或者,第一存储系统也可能不将该至少一行数据从该多个数据片段中删除。

在将该至少一行数据从该多个数据片段中删除时,对于任一个数据片段,第一存储系统从该数据片段中删除属于该至少一行的数据。

在上述第二存储方式中,第二行组对应的一个数据片段,该一个数据片段仍保存有第二行组中需要删除的该至少一行数据。第一存储系统可能将该至少一行数据从该一个数据片段中删除,以节省存储空间;或者,第一存储系统也可能不将该至少一行数据从该一个数据片段中删除。

其中,第一存储系统通过图7所示的方法700或图9所示的方法900存储行组,以及通过图11所示的方法1100删除行组中的至少一行数据。为了使第二存储系统对第一存储系统进行备份,可以周期性地对第一存储系统中的数据进行管理,即对于任一个周期,将第一存储系统在该周期内存储的数据存储到第二存储系统,以及对于第一存储系统在该周期内删除的数据,从第二存储系统中也删除该数据,以使第一存储系统中保存的数据和第二存储系统中保存的数据保持一致。具体的数据管理过程,请参见如下任意实施例的实现。

参见图12,本申请实施例提供了一种数据管理的方法1200,所述方法1200应用于图1、图3或图5所示的系统100。在所述方法1200中,第一存储系统将其在指定时间段内保存的数据存储到第二存储系统中,所述方法1200包括如下步骤1201至1204。

步骤1201:第一存储系统获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。

在一些实施例中,第一存储系统包括第一调度工具,第一存储系统通过第一调度工具获取第一描述信息。

第一存储系统还可能获取第三描述信息,第三描述信息用于描述第一存储系统从第二行组中删除的至少一行数据,第一存储系统和第二存储系统均保存有第二行组。

第一描述信息是第一存储系统在指定时间段内保存的列存描述信息。或者,第一描述信息是第一存储系统在指定时间段内保存的行组描述信息。

在一些实施例中,第一存储系统还可能获取第一存储系统在指定时间段内保存的状态描述信息。该状态描述信息包括第一行组对应的第一状态描述信息和/或第二行组对应的第二状态描述信息,其中,第一存储系统在指定时间段内从第二行组中删除的至少一行数据,第二行组对应的第二状态描述信息用于描述从第二行组中删除的至少一行数据,第三描述信息包括第二行组对应的第二状态描述信息。

在一些实施例中,第一存储系统周期性地获取第一存储系统中保存的行组,并向第二存储系统保存获取的行组。指定时间段为一个周期,例如指定时间段为当前周期。

在步骤1201中,第一存储系统通过如下12011至12013的操作获取第一描述信息和第三描述信息等内容。

12011:第一存储系统获取第一事务集合,第一事务集合包括第一存储系统在指定时间段的结束时刻正在执行的事务。

在12011中,在指定时间段的结束时刻,第一存储系统通过对正在执行的事务进行快照,得到第一事务集合,第一事务集合包括第一存储系统在指定时间段的结束时刻正在执行的事务的事务信息。

在一些实施例中,事务的事务信息包括该事务的事务号等。

第一存储系统在指定时间段的结束时刻对第一存储系统正在执行的事务进行快照,得到第一事务集合。

第一事务集合用于反映第一存储系统在指定时间段的结束时刻之前已执行完的事务。

例如,第一存储系统的事务管理器依次生成事务号T0对应的第一个事务,事务号T1对应的第二个事务,事务号T2对应的第三个事务,事务号T3对应的第四个事务,……。假设第一事务集合包括事务号T6对应的第七个事务,事务号T8对应的第九个事务和事务号T9对应的第十个事务。基于第一事务集合可以确定第一存储系统在指定时间段的结束时刻之前已执行完的事务包括第一个至第六个事务以及第八个事务。

在一些实施例中,指定时间段为除第一个周期之外的周期,即指定时间段为第二个周期,第三个周期,第四个周期,……。第一存储系统还获取第二事务集合,第二事务集合包括第一存储系统在指定时间段的起始时刻正在执行的事务。

在一些实施例中,在指定时间段的起始时刻,第一存储系统获取并保存的第二事务集合。可选地,第二事务集合是在指定时间段的起始时刻,第一存储系统通过对正在执行的事务进行快照得到的,第二事务集合包括第一存储系统在指定时间段的起始时刻正在执行的事务的事务信息。

第二事务集合用于反映第一存储系统在指定时间段的起始时刻之前已执行完的事务。

12012:第一存储系统基于第一事务集合确定目标事务,目标事务是第一存储系统在指定时间段内执行完的事务。

在一些实施例中,在指定时间段为第一个周期,第一存储系统基于第一事务集合确定第一存储系统在指定时间段内执行完的目标事务。

在一些实施例中,在指定时间段为第二个周期,第三个周期,……,第一存储系统基于第一事务集合和第二事务集合确定第一存储系统在指定时间段内执行完的目标事务。

在12012中,目标事务可能是第一事务,第一事务用于指示第一存储系统存储第一行组的时间。或者,目标事务可能是第二事务,第二事务用于指示第一存储系统从第二行组中删除至少一行数据的时间。

12013:第一存储系统从第一存储系统已产生的描述信息中,选择包括目标事务的事务信息的描述信息。

在上述第一存储方式中,第一存储系统从第一存储系统已产生的描述信息中,选择包括目标事务的事务信息的描述信息,如果选择的描述信息包括多个列存描述信息和状态描述信息,确定目标事务是第一事务,第一描述信息包括该多个列存描述信息。如果选择的描述信息仅包括状态描述信息,确定目标事务是第二事务,第三描述信息包括该状态描述信息,该状态描述信息是第一存储系统在从第二行组中删除数据时保存的第二状态描述信息。

例如,参见上述表6,表6包括第一存储系统已产生的描述信息,假设确定的目标事务包括事务号T3对应的第四个事务和事务号T4对应的第五个事务。

第一存储系统从表6所示的描述信息列表中选择包括事务号T3的描述信息。其中,选择的描述信息包括两个列存描述信息(见表6中的序号为9和10的两条记录)和一个状态描述信息(见表6中的序号为11的一条记录),所以事务号T3对应的第四个事务是第一事务,用于指示存储第一行组的时间,第一描述信息包括该两个列存描述信息。

第一存储系统从表6所示的描述信息列表中选择包括事务号T4的描述信息。其中,选择的描述信息包括一个状态描述信息(见表6中的序号为12的一条记录),所以事务号T4对应的第五个事务是第二事务,用于指示从第二行组中删除至少一行数据的时间,第三描述信息包括该状态描述信息。

在上述第二存储方式中,第一存储系统从第一存储系统已产生的描述信息中,选择包括目标事务的事务信息的描述信息,如果选择的描述信息包括一个行组描述信息和状态描述信息,确定目标事务是第一事务,第一描述信息包括该行组描述信息。如果选择的描述信息仅包括状态描述信息,确定目标事务是第二事务,第三描述信息包括该状态描述信息,该状态描述信息是第一存储系统在从第二行组中删除数据时保存的第二状态描述信息,第三描述信息包括该状态描述信息。

例如,参见上述表7,表7包括第一存储系统已产生的描述信息,假设确定的目标事务包括事务号T3对应的第四个事务和事务号T4对应的第五个事务。

第一存储系统从表7所示的描述信息列表中选择包括事务号T3的描述信息。其中,选择的描述信息包括一个行组描述信息(见表7中的序号为6的一条记录)和一个状态描述信息(见表7中的序号为7的一条记录),所以事务号T4对应的第五个事务是第一事务,用于指示存储第一行组的时间,第一描述信息包括该一个行组描述信息。

第一存储系统从表7所示的描述信息列表中选择包括事务号T4的描述信息。其中,选择的描述信息包括一个状态描述信息(见表7中的序号为8的一条记录),所以事务号T4对应的第五个事务是第二事务,用于指示从第二行组中删除至少一行数据的时间,第三描述信息包括该状态描述信息。

在一些实施例中,第一存储系统基于行组范围,从第一存储系统已产生的描述信息中选择至少一个描述信息,该行组范围包括第一存储系统在指定时间段内操作的行组,该至少一个描述信息中的每个描述信息包括的组标识对应的行组属于该行组范围。从该至少一个描述信息中,选择包括目标事务的事务信息的描述信息。

在一些实施例中,在第一存储系统操作行组时,第一存储系统记录该行组的组标识。例如,在第一存储系统保存一个行组时,第一存储系统记录该行组的组标识,或者,在第一存储系统从某个行组中删除一行或多行数据时,第一存储系统记录该行组的组标识。所以该行组范围包括第一存储系统在指定时间段内记录的行组的组标识。

在一些实施例中,第一存储系统包括描述信息列表,该描述信息列表包括第一存储系统已产生的描述信息。

对于上述12012-12013的操作,接下来列举了一种实现该12012-12013的操作的实现实例,该实现实例通过如下(1)-(4)的操作来实现。

(1):第一存储系统从该描述信息列表中的第一个描述信息开始扫描,每当扫描一个描述信息,执行如下操作(2)。

在一些实施例中,第一存储系统在扫描到一个描述信息时,在该描述信息包括的组标识对应的行组是该行组范围内的行组,执行如下操作(2);在该描述信息包括的组标识对应的行组不是该行组范围内的行组,在该描述信息列表中扫描下一个扫描信息。

(2):第一存储系统确定该描述信息包括的事务信息对应的事务,基于第一事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。

在指定时间段为第一个周期时,第一存储系统基于第一事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。在指定时间段为第二个周期、第三个周期、……,第一存储系统基于第一事务集合和第二事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。

(3):如果该事务为第一存储系统在指定时间段内执行完的目标事务,第一存储系统选择该描述信息,该描述信息包括第一存储系统在指定时间段内保存的描述信息。

如果该描述信息包括指示信息,该指示信息用于指示该描述信息为状态描述信息,即该描述信息为状态描述信息。如果该描述信息不包括该指示信息,该描述信息为列存描述信息或行组描述信息。

(4):第一存储系统从已选择的描述信息中获取包括同一目标事务的事务信息的Z个描述信息,Z为大于0的整数。

在上述第一存储方式中,如果该Z个描述信息包括多个列存描述信息和一个状态描述信息,第一描述信息包括该多个列存描述信息。如果该Z个描述信息包括一个状态描述信息,第三描述信息包括该一个状态描述信息。

在上述第二存储方式中,如果该Z个描述信息包括一个行组描述信息和一个状态描述信息,第一描述信息包括该一个行组描述信息。如果该Z个描述信息包括一个状态描述信息,第三描述信息包括该一个状态描述信息。

其中,需要说明的是:对于第一存储系统在指定时间段内保存的第一行组,第一存储系统获取的描述信息包括第一行组对应的第一描述信息和第一行组对应的状态描述信息。对于第一存储系统在指定时间段从第二行组中删除的至少一行数据,第一存储系统获取的描述信息包括第二行组对应的第三描述信息。

步骤1202:第一存储系统基于第一描述信息获取第一行组。

在上述第一存储方式中,第一描述信息包括第一行组的多个列存描述信息,该多个列存描述信息与第一行组中的多列一一对应。在步骤1202中,第一存储系统分别在如下情况1或情况2下获取第一行组。

情况1,第一存储系统与第二存储系统是相同类型的系统,第一存储系统采用的存储数据方式和第二存储系统采用的存储数据方式相同,例如,第一存储系统采用列存方式来存储数据以及第二存储系统也采用列存方式来存储数据。在情况1下,第一存储系统获取的第一行组是第一行组对应的多个数据片段。

在一些实施例中,对于任一列对应的一个列存描述信息,该列存储描述信息包括第一行组的组标识和该列对应的数据片段的存储位置,该存储位置包括该列的列标识和该数据片段在该列对应的文件中的偏移量。第一存储系统基于该列标识从第一存储系统中获取该列对应的文件,基于该偏移量从该文件中获取该列对应的数据片段。按上述方式获取该第一行组中的每列对应的数据片段。

情况2,第一存储系统与第二存储系统可能是相同类型的系统或者可能是不同类型的系统,第一存储系统获取的第一行组中的每行数据。

在一些实施例中,对于任一列对应的一个列存描述信息,该列存储描述信息包括第一行组的组标识和该列对应的数据片段的存储位置,该存储位置包括该列的列标识和该数据片段在该列对应的文件中的偏移量。在步骤1201中,第一存储系统还获取第一行组对应的状态描述信息,该状态描述信息包括行状态信息,该行状态信息用于指示第一行组中未被删除的数据和/或删除的数据。第一存储系统基于该列标识从第一存储系统中获取该列对应的文件,基于该偏移量从该文件中获取该列对应的数据片段。按上述方式获取该第一行组中的每列对应的数据片段。第一存储系统基于该行状态信息和第一行组中的每列对应的数据片段,恢复出第一行组中的每行数据。

在第二存储方式中,第一描述信息包括第一行组的行组描述信息。在步骤1202中,第一存储系统分别在如下情况1和情况2下获取第一行组。

情况1,第一存储系统与第二存储系统是相同类型的系统,第一存储系统获取的第一行组是第一行组对应的一个数据片段。

在一些实施例中,该行组描述信息包括第一行组的组标识、第一行组对应的数据片段的存储位置,该存储位置包括该数据片段在该数据表对应的文件中的偏移量。第一存储系统从第一存储系统中获取该数据表对应的文件,基于该偏移量从该文件中获取第一行组对应的数据片段。

情况2,第一存储系统与第二存储系统可能是相同类型的系统或者可能是不同类型的系统,第一存储系统获取的第一行组中的每行数据。

在一些实施例中,该行组描述信息包括第一行组的组标识和第一行组对应的数据片段的存储位置。在步骤1201中,第一存储系统还获取第一行组对应的状态描述信息,该状态描述信息包括行状态信息,该行状态信息用于指示第一行组中未被删除的数据和/或删除的数据。第一存储系统从第一存储系统中获取该数据表对应的文件,基于该偏移量从该文件中获取第一行组对应的数据片段。基于该行状态信息和第一行组对应的数据片段,恢复出第一行组中的每行数据。

步骤1203:第一存储系统向第二存储系统发送第一行组。

针对上述情况1,第一存储系统向第二存储系统发送文件,该文件包括第一行组对应的一个数据片段,或者,第一行组对应的多个数据片段。

在第一存储系统获取第一行组对应的多个数据片段的情况,第一存储系统向第二存储系统发送文件,该文件包括该多个数据片段,该多个数据片段与第一行组的多列一一对应。可选地,该文件还包括该数据表的标识信息,第一行组的组标识,第一行组的每列的列标识、该行状态信息和/或第一行组中的每列数据的统计信息等。其中,任一列的列存描述信息包括第一行组中的该列数据的统计信息,第一存储系统从该列存描述信息中得到该列数据的统计信息。

在第一存储系统获取第一行组对应的一个数据片段的情况,第一存储系统向第二存储系统发送文件,该文件包括该一个数据片段。可选地,该文件还包括第一行组的组标识,该行状态信息和/或第一行组中的每列数据的统计信息等。其中,第一行组对应的行组描述信息包括第一行组中的每列数据的统计信息,第一存储系统从该行组描述信息中得到每列数据的统计信息。

如果第一存储系统还获取到第三描述信息,第一存储系统向第二存储系统发送第三描述信息和该数据表的标识信息。

在一些实施例中,在第一存储系统和第二存储系统采用云进行通信,第一存储系统将该文件保存在云上的指定位置处,第二存储系统从云中的指定位置处获取该文件,如此实现第一存储系统向第二存储系统发送第一行组。和/或,第一存储系统将第三描述信息和该数据表的标识信息保存在云上的指定位置处,第二存储系统从云中的指定位置处获取第三描述信息和数据表的标识信息,如此实现第一存储系统向第二存储系统发送第三描述信息和该数据表的标识信息。

针对上述情况2,第一存储系统向第二存储系统发送插入语句,该插入语句包括该数据表的标识信息和第一行组中的每行数据。

在一些实施例中,第一存储系统生成插入语句,该插入语句包括该数据表的标识信息和第一行组中的每行数据,向第二存储系统发送该插入语句。

在此情况2下,如果第一存储系统还获取到第三描述信息,第三描述信息包括第二行组的组标识和行状态信息,该行状态信息用于指示从第二行组中删除的至少一行数据,第一存储系统基于第二行组的组标识和该行状态信息,获取该至少一行数据中的每行数据的行标识;向第二存储系统发送删除语句,该删除语句包括该数据表的标识信息和该每行数据的行标识。

在一些实施例中,第一调存储系统获取该每行数据的行标识的操作为:

在上述第一存储方式中,第一存储系统基于第三描述信息包括的第二行组的组标识,获取包括该第二行组的组标识的多个列存描述信息,基于该多个列存描述信息获取第二行组中的每列对应的数据片段,基于每列对应的数据片段恢复出第二行组。基于该行状态信息,获取第二行组中被被删除的每行数据的行标识。或者,

在上述第二存储方式中,第一存储系统基于第三描述信息包括的第二行组的组标识,获取包括该第二行组的组标识的行组描述信息和状态描述信息,基于该行组存描述信息获取第二行组对应的一个数据片段,基于该数据片段恢复出第二行组。基于该行状态信息,获取第二行组中被被删除的每行数据的行标识。

在一些实施例中,一行数据的行标识包括该该行数据的主健。

在一些实施例中,在第一存储系统和第二存储系统采用云进行通信,第一存储系统将该插入语句和/或该删除语句保存在云上的指定位置处,第二存储系统从云中的指定位置处获取该插入语句和/或该删除语句,如此实现第一存储系统向第二存储系统发送插入语句和/或删除语句。

步骤1204:第二存储系统接收第一行组,保存第一行组。

在上述情况1下,即在第一存储系统发送文件的情况,第二存储系统接收该文件,保存该文件中的一个或多个数据片段,以实现保存第一行组,生成第二描述信息并保存第二描述信息,第二描述信息用于描述第一行组。

接收的文件可能包括第一行组对应的多个数据片段,即为如下情况11,或者,接收的文件可能包括第一行组对应的一个数据片段,即为如下情况12。接下来分别对该情况11和情况12进行详细说明。

在情况11中,该文件包括第一行组对应的多个数据片段,该多个数据片段与第一行组中的多列一一对应,该文件还包括该数据表的标识、第一行组中的每列的列标识、第一行组的组标识等信息。在步骤1204中,第二存储系统基于该数据表的标识信息获取该数据表中的每列对应的文件,对于任一列,基于该列的列标识,将该列对应的数据片段保存到该列对应的文件中,生成该列对应的列存描述信息,该列存描述信息包括第一行组的组标识、第三事务的事务信息和该数据片段的存储位置,该存储位置包括该列的列标识和该数据片段在该文件中的偏移量,第三事务用于指示保存该多个数据片段的时间。按上述相同方式得到每列对应的列存描述信息,第二描述信息包括该每列对应的列存描述信息,将该每列对应的列存描述信息保存到该数据表对应的描述信息列表中。

在一些实施例中,该文件还包括第一行组中的每列数据的统计信息,对于第一行组中的任一列,该列对应的列存描述信息还包括该列数据的统计信息。

在一些实施例中,该文件还包括第一行组的行状态信息,第二存储系统生成第一行组对应的状态描述信息,该状态描述信息包括第一行组的组标识、第三事务的事务信息和该行状态信息,将该状态描述信息保存到该数据表对应的描述信息列表中。和/或,基于该行状态信息从该多个数据片段中删除第一行组中被删除的数据。

在第二存储系统对多个第一存储系统进行备份的情况下,第一行组对应的每个列存描述信息包括源组标识和为第一行组分配的新组标识,以及第一行组对应的状态描述信息包括源组标识和为第一行组分配的新组标识,该源组标识为第一行组的组标识。

在情况11中,第二存储系统还接收到第三描述信息的数据表的标识信息,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,基于第三描述信息删除第二存储系统中保存的该至少一行数据。在实现时:

第三描述信息包括第二行组的组标识和行状态信息,该行状态信息指示需要从第二行组中删除的至少一行数据。第二存储系统基于该数据表的标识信息获取该数据表对应的描述信息列表,从该描述信息列表中获取包括该组标识的描述信息,该描述信息包括多个列存描述信息,该多个列存描述信息与第二行组的多列一一对应。任一列对应的列存描述信息包括数据片段的存储位置,该数据片段用于保存第二行组中的该列包括的数据,该存储位置包括该列的列标识和数据片段在该列对应的文件中的偏移量。第二存储系统基于该数据表的标识信息获取该数据表中的每列对应的文件,基于该偏移量从该列对应的文件中获取该数据片段。在获取到第二行组对应的每个数据片段后,从该多个数据片段中删除该行状态信息指示的至少一行数据。

在第二存储系统对多个第一存储系统进行备份的情况下,第二存储系统从该描述信息列表中获取包括该组标识的描述信息的操作为:第二存储系统将第二行组的组标识作为源组标识,从描述信息列表中获取包括该源组标识的描述信息。

在情况12中,该文件包括第一行组对应的一个数据片段。该文件还包括该数据表的标识信息和第一行组的组标识。在步骤1204中,第二存储系统基于该数据表的标识信息获取该数据表对应的文件,将该数据片段保存到该数据表对应的文件中,生成第一行组的行组描述信息,该行组描述信息包括第一行组的组标识、第三事务的事务信息和该数据片段的存储位置,该存储位置包括该数据片段在该文件中的偏移量,第三事务用于指示保存该多个数据片段的时间。其中,第二描述信息包括该行组描述信息,将该行组描述信息保存到该数据表对应的描述信息列表中。

在一些实施例中,该文件还包括第一行组中的每列数据的统计信息,该行组描述信息还包括该每列数据的统计信息。

在一些实施例中,该文件还包括第一行组的行状态信息,第二存储系统生成第一行组对应的状态描述信息,该状态描述信息包括第一行组的组标识、第三事务的事务信息和该行状态信息,将该状态描述信息保存到该数据表对应的描述信息列表中。和/或,基于该行状态信息从该数据片段中删除第一行组中被删除的数据。

在一些实施例中,在第二存储系统还接收到第三描述信息的情况,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,基于第三描述信息删除第二存储系统中保存的该至少一行数据。在实现时:

第三描述信息包括第二行组的组标识和行状态信息,该行状态信息指示需要从第二行组中删除的至少一行数据。第二存储系统基于该数据表的标识信息获取该数据表对应的描述信息列表,从描述信息列表中获取包括该组标识的描述信息,该描述信息包括一个行组描述信息,该行组描述信息包括第二行组对应的数据片段的存储位置,该数据片段用于保存第二行组中的每行数据,该存储位置包括该数据片段在该数据表对应的文件中的偏移量。第二存储系统基于该数据表的标识信息获取该数据表对应的文件,基于该偏移量从该文件中获取该数据片段,从该数据片段中删除该行状态信息指示的至少一行数据。

在上述情况2下,即在第一存储系统发送插入语句的情况,第二存储系统接收该插入语句,保存该插入语句包括的第二行组中的每行数据。

在一些实施例中,在第二存储系统还接收到删除语句的情况,该删除语句包括第二行组的至少一行数据中的每行数据的行标识,基于该每行数据的行标识,从第二存储系统中删除该每行数据。

在一些实施例中,在执行步骤1201之前,第一存储系统接收配置文件,该配置文件包括指定时间段的时间长度和第二存储系统的设备标识。基于该时间长度确定指定时间段,在该指定时间段的结束时刻,基于第二存储系统的设备标识通过上述步骤1201-1204向第二存储系统备份数据。

在一些实施例中,在第一存储系统和第二存储系统采用云进行通信的情况,该配置文件还包括云上的指定位置。可选地,第二存储系统还接收该指定位置。其中,第二存储系统接收第一存储系统发送的该指定位置或接收用户配置的该指定位置。

在一些实施例中,第一行组中的每行数据是指定业务的数据,也就是说,可以对指定业务的数据进行备份,指定业务为重要业务或关键业务等。

在一些实施例中,该配置文件还包括指定业务对应的数据表的标识信息,如此使得第一存储系统基于该标识信息,确定需要备份的数据表。即第一存储系统在得到属于该数据表的第一行组时,通过上述步骤1201-1204向第二存储系统备份数据。

在本申请实施例中,第一存储系统获取第一描述信息,第一描述信息是第一存储系统在指定时间段内保存的描述信息,包括第一存储系统在指定时间段内保存的列存描述信息或行组描述信息。基于第一描述信息从第一存储系统中获取第一存储系统在指定时间段内保存的第一行组,向第二存储系统发送第一行组,第二存储系统保存第一行组。由于在第一存储系统保存第一行组后,基于第一描述信息从第一存储系统中获取第一行组,这样不用对第一存储系统保存第一行组的过程进行修改,即不用对第一存储系统的SQL层进行修改,从而降低运营成本和维护难度。上述第一存储系统和第二存储系统可能是裸金属服务器,这样对于部署在裸金属服务器上的数据,可以采用另一个裸金属服务器对该裸金属服务器上的数据进行备份。另外,由于第一行组是指定业务的行组,这样可以采用第二存储系统对第一存储系统中指业务的数据进行备份,相比对第一存储系统中的全部业务的数据进行备份,减小备份成本。

参见图13,本申请实施例提供了一种数据管理的方法1300,所述方法1300应用于图1、图2或图6所示的系统100。在所述方法1300中,第一调度工具将第一存储系统在指定时间段内保存的数据存储到第二存储系统中,所述方法1300包括如下步骤1301至1304。

步骤1301:第一调度工具获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。

第一调度工具和第一存储系统是不同设备,这样在步骤1301中,第一调度工具通过与第一存储系统交互获取第一描述信息。

第一调度工具还可能获取第三描述信息,第三描述信息用于描述第一存储系统从第二行组中删除的至少一行数据,第一存储系统和第二存储系统均保存有第二行组。

第一描述信息是第一存储系统在指定时间段内保存的列存描述信息。或者,第一描述信息是第一存储系统在指定时间段内保存的行组描述信息。

在一些实施例中,第一存储系统还可能获取第一存储系统在指定时间段内保存的状态描述信息。该状态描述信息包括第一行组对应的第一状态描述信息和/或第二行组对应的第二状态描述信息,其中,第一存储系统在指定时间段内从第二行组中删除的至少一行数据,第二行组对应的第二状态描述信息用于描述从第二行组中删除的至少一行数据,第三描述信息包括第二行组对应的第二状态描述信息。

在一些实施例中,第一调度工具周期性地获取第一存储系统中保存的行组,并向第二存储系统保存获取的行组。指定时间段为一个周期,例如指定时间段为当前周期。

第一描述信息包括第一存储系统在指定时间段内新增的列存描述信息。或者,第一描述信息包括第一存储系统在指定时间段内新增的行组描述信息。

在步骤1301中,第一调度工具通过如下13011至13014的操作获取第一描述信息和第三描述信息等。

13011:第一调度工具获取第一事务集合,第一事务集合包括第一存储系统在指定时间段的结束时刻正在执行的事务。

在一些实施例中,第一调度工具在指定时间段的结束时刻向第一存储系统发送快照指令。第一存储系统基于该快照指令对第一存储系统正在执行的事务进行快照,得到第一事务集合,向第一调度工具发送第一事务集合,第一调度工具接收第一事务集合。

第一事务集合用于反映第一存储系统在指定时间段的结束时刻之前已执行完的事务。

在一些实施例中,指定时间段为除第一个周期之外的周期,即指定时间段为第二个周期,第三个周期,第四个周期,……。第一调度工具还获取第二事务集合,第二事务集合是第一调度工具上一次获取的事务集合,第二事务集合包括第一存储系统在指定时间段的起始时刻正在执行的事务。

在一些实施例中,在指定时间段的起始时刻,第一调度工具获取并保存的第二事务集合。第二事务集合用于反映第一存储系统在指定时间段的起始时刻之前已执行完的事务。

13012:第一调度工具基于第一事务集合确定目标事务,目标事务是第一存储系统在指定时间段内执行完的事务。

在一些实施例中,在指定时间段为第一个周期,第一调度工具基于第一事务集合确定第一存储系统在指定时间段内执行完的目标事务。

在一些实施例中,在指定时间段为第二个周期,第三个周期,……,第一调度工具基于第一事务集合和第二事务集合确定第一存储系统在指定时间段内执行完的目标事务。

在12013中,目标事务可能是第一事务,第一事务用于指示第一存储系统存储第一行组的时间。或者,目标事务可能是第二事务,第二事务用于指示第一存储系统从第二行组中删除至少一行数据的时间。

13013:第一调度工具获取第一存储系统已产生的描述信息。

在一些实施例中,第一存储系统包括描述信息列表,该描述信息列表包括第一存储系统已产生的描述信息。第一调度工具从第一存储系统中获取该描述信息列表。

13014:第一调度工具从第一存储系统已产生的描述信息中,选择包括目标事务的事务信息的描述信息,该选择的描述信息包括目标事务的事务信息。

在上述第一存储方式中,第一调度工具从描述信息列表中,选择包括目标事务的事务信息的描述信息,如果选择的描述信息包括多个列存描述信息和状态描述信息,确定目标事务是第一事务,第一描述信息包括该多个列存描述信息。如果选择的描述信息仅包括状态描述信息,确定目标事务是第二事务,第三描述信息包括该状态描述信息,该状态描述信息是第一存储系统在从第二行组中删除数据时保存的第二状态描述信息,第三描述信息包括该状态描述信息。

在上述第二存储方式中,第一调度工具从描述信息列表中,选择包括目标事务的事务信息的描述信息,如果选择的描述信息包括一个行组描述信息和状态描述信息,确定目标事务是第一事务,第一描述信息包括该行组描述信息。如果选择的描述信息仅包括状态描述信息,确定目标事务是第二事务,第三描述信息包括该状态描述信息,该状态描述信息是第一存储系统在从第二行组中删除数据时保存的第二状态描述信息,第三描述信息包括该状态描述信息。

在一些实施例中,第一调度工具基于行组范围,从描述信息列表中选择至少一个描述信息,该行组范围包括第一存储系统在指定时间段内操作的行组,该至少一个描述信息中的每个描述信息包括的组标识对应的行组属于该行组范围。从该至少一个描述信息中,选择包括目标事务的事务信息的描述信息。

在一些实施例中,在第一存储系统操作行组时,第一存储系统记录该行组的组标识。所以该行组范围包括第一存储系统在指定时间段内记录的行组的组标识。第一存储系统可以向第一调度工具发送该行组范围。

对于上述13012-13014的操作,接下来列举了一种实现该13012-13014的操作的实现实例,该实现实例通过如下1)-4)的操作来实现。

1):第一调度工具从该描述信息列表中的第一个描述信息开始扫描,每当扫描一个描述信息,执行如下操作2)。

在一些实施例中,第一调度工具在扫描到一个描述信息时,在该描述信息包括的组标识对应的行组是该行组范围内的行组,执行如下操作2);在该描述信息包括的组标识对应的行组不是该行组范围内的行组,在该描述信息列表中扫描下一个扫描信息。

2):第一调度工具确定该描述信息包括的事务信息对应的事务,基于第一事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。

在指定时间段为第一个周期时,第一调度工具基于第一事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。在指定时间段为第二个周期、第三个周期、……,第一调度工具基于第一事务集合和第二事务集合确定该事务是否为第一存储系统在指定时间段内执行完的事务。

3):如果该事务为第一存储系统在指定时间段内执行完的事务,第一调度工具选择该描述信息,该描述信息包括第一存储系统在指定时间段内产生的描述信息。

如果该描述信息包括指示信息,该指示信息用于指示该描述信息为状态描述信息,即该描述信息为状态描述信息。如果该描述信息不包括该指示信息,该描述信息为列存描述信息或行组描述信息。

4):第一调度工具从描述信息列表中获取包括同一目标事务的事务信息的Z个描述信息,Z为大于0的整数。

在上述第一存储方式中,如果该Z个描述信息包括多个列存描述信息和一个状态描述信息,第一描述信息包括该多个列存描述信息。如果该Z个描述信息包括一个状态描述信息,第三描述信息包括该一个状态描述信息。

在上述第二存储方式中,如果该Z个描述信息包括一个行组描述信息和一个状态描述信息,第一描述信息包括该一个行组描述信息。如果该Z个描述信息包括一个状态描述信息,第三描述信息包括该一个状态描述信息。

其中,需要说明的是:对于第一存储系统在指定时间段内保存的第一行组,第一调度工具获取的描述信息包括第一行组对应的第一描述信息和第一行组对应的状态描述信息。对于第一存储系统在指定时间段从第二行组中删除的至少一行数据,第一调度工具获取的描述信息包括第二行组对应的第三描述信息。

步骤1302:第一调度工具基于第一描述信息获取第一行组。

在一些实施例中,在步骤1302中,第一调度工具向第一存储系统发送第一描述信息,第一存储系统基于第一描述信息获取第一行组对应的数据片段,向第一调度工具发送第一行组对应的数据片段。第一调度工具接收第一行组对应的数据片段,即实现获取第一行组。

第一存储系统获取第一行组对应的数据片段的操作,请参见上述图12所示方法1200的步骤1202中的相关内容,在此不再详细说明。在上述第一存储方式中,第一行组对应的数据片段包括多个,在上述第二存储方式中,第一行组对应的数据片段包括一个。

在一些实施例中,在步骤1302中,第一调度工具向第一存储系统发送第一描述信息,第一存储系统基于第一描述信息获取第一行组中的每行数据,向第一调度工具发送第一行组的每行数据。第一调度工具接收第一行组的每行数据。

第一存储系统获取第一行组的每行数据的操作,请参见上述图12所示方法1200的步骤1202中的相关内容,在此不再详细说明。

步骤1303:第一调度工具向第二调度工具发送第一行组。

在一些实施例中,第一调度工具向第二调度工具发送文件,该文件包括第一行组对应的一个数据片段,或者,第一行组对应的多个数据片段。

在第一调度工具获取第一行组对应的多个数据片段的情况,第一调度工具向第二调度工具发送文件,该文件包括该多个数据片段,该多个数据片段与第一行组的多列一一对应。可选地,该文件还包括该数据表的标识信息,第一行组的组标识,第一行组的每列的列标识、该行状态信息和/或第一行组中的每列数据的统计信息等。其中,任一列的列存描述信息包括第一行组中的该列数据的统计信息,第一调度工具从该列存描述信息中得到该列数据的统计信息。

在第一调度工具获取第一行组对应的一个数据片段的情况,第一调度工具向第二调度工具发送文件,该文件包括该一个数据片段。可选地,该文件还包括第一行组的组标识,该行状态信息和/或第一行组中的每列数据的统计信息等。其中,第一行组对应的行组描述信息包括第一行组中的每列数据的统计信息,第一调度工具从该行组描述信息中得到每列数据的统计信息。

如果第一调度工具还获取到第三描述信息,第一调度工具向第二调度工具发送第三描述信息和该数据表的标识信息。

在一些实施例中,在第一调度工具和第二调度工具采用云进行通信,第一调度工具将该文件保存在云上的指定位置处,第二调度工具从云中的指定位置处获取该文件。和/或,第一调度工具将第三描述信息和该数据表的标识信息保存在云上的指定位置处,第二调度工具从云中的指定位置处获取第三描述信息和数据表的标识信息。

在一些实施例中,第一调度工具向第二调度工具发送插入语句,该插入语句包括该数据表的标识信息和第一行组中的每行数据。

在一些实施例中,第一调度工具生成插入语句,该插入语句包括该数据表的标识信息和第一行组中的每行数据,向第二存储系统发送该插入语句。

在一些实施例中,如果第一调度工具还获取到第三描述信息,第三描述信息包括第二行组的组标识和行状态信息,该行状态信息用于指示从第二行组中删除的至少一行数据。第一调度工具基于第二行组的组标识和该行状态信息,获取该至少一行数据中的每行数据的行标识;向第二调度工具发送删除语句,该删除语句包括该数据表的标识信息和该每行数据的行标识。

在一些实施例中,第一调度工具获取该每行数据的行标识的操作为:第一调度工具向第一存储系统发送第三描述信息。

第一存储系统基于第三描述信息包括的第二行组的组标识,获取包括该第二行组的组标识的多个列存描述信息和状态描述信息,基于该多个列存描述信息获取第二行组中的每列对应的数据片段,基于每列对应的数据片段获取第二行组,基于该行状态信息,获取第二行组中被删除的该至少一行数据中的每行数据的行标识。或者,

第一存储系统基于第三描述信息包括的第二行组的组标识,获取包括该第二行组的组标识的行组描述信息和状态描述信息,基于该行组存描述信息获取第二行组对应的一个数据片段,基于该一个数据片段获取第二行组。基于该状态描述信息获取第二行组中被删除的的该至少一行数据中的每行数据的行标识。

第一存储系统向第一调度工具发送该至少一行数据中的每行数据的行标识。第一调度工具接收该至少一行数据中的每行数据的行标识。

在一些实施例中,在第一调度工具和第二调度工具采用云进行通信,第一调度工具将该插入语句和/或该删除语句保存在云上的指定位置处,第二调度工具从云中的指定位置处获取该插入语句和/或该删除语句。

步骤1304:第二调度工具接收第一行组,向第二存储系统保存第一行组。

在第一调度工具发送文件的情况,第二调度工具接收该文件,保存该文件中的一个或多个数据片段,生成第二描述信息并向第二存储系统保存第二描述信息,第二描述信息用于描述第一行组。

在一些实施例中,该文件包括第一行组对应的多个数据片段,该多个数据片段与第一行组中的多列一一对应。在步骤1304中,对于任一列,第二调度工具基于该数据表的标识信息和该列的列标识,从第二存储系统中获取该列对应的文件。将该列对应的数据片段保存到该列对应的文件中,生成该列对应的列存描述信息,该列存描述信息包括第一行组的组标识、第三事务的事务信息和该数据片段的存储位置,该存储位置包括该列的列标识和该数据片段在该文件中的偏移量,第三事务用于指示保存该多个数据片段的时间。按上述相同方式得到每列对应的列存描述信息,第二描述信息包括该每列对应的列存描述信息,将该每列对应的列存描述信息保存到第二存储系统中的该数据表对应的描述信息列表中。

在一些实施例中,该文件还包括第一行组中的每列数据的统计信息,对于第一行组中的任一列,该列对应的列存描述信息还包括该列数据的统计信息。

在一些实施例中,该文件还包括第一行组的行状态信息,第二调度工具生成第一行组对应的状态描述信息,该状态描述信息包括第一行组的组标识、第三事务的事务信息和该行状态信息,将该状态描述信息保存到第二存储系统中的描述信息列表中。和/或,基于该行状态信息从第二存储系统包括的该多个数据片段中删除第一行组中被删除的数据。

在一些实施例中,在第二调度工具还接收到第三描述信息的情况,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,基于第三描述信息删除第二存储系统中保存的该至少一行数据。在实现时:

第三描述信息包括第二行组的组标识和行状态信息,该行状态信息指示需要从第二行组中删除的至少一行数据。第二调度工具基于该数据表的标识信息获取该数据表对应的描述信息列表,从该描述信息列表中获取包括该组标识的描述信息,该描述信息包括多个列存描述信息,该多个列存描述信息与第二行组的多列一一对应。任一列对应的列存描述信息包括数据片段的存储位置,该数据片段用于保存第二行组中的该列包括的数据,该存储位置包括该列的列标识和数据片段在该列对应的文件中的偏移量。第二调度工具向第二存储系统发送删除指令,该删除指令包括该数据表的标识信息、该多个列存描述信息和该行状态信息。

第二存储系统接收该删除指令,基于该数据表的标识信息获取该数据表中的每列对应的文件,基于该偏移量从该列对应的文件中获取该数据片段。在获取到第二行组对应的每个数据片段后,从该多个数据片段中删除该行状态信息指示的至少一行数据。

在第二存储系统对多个第一存储系统进行备份的情况下,第二调度工具从该描述信息列表中获取包括该组标识的描述信息的操作为:第二调度工具将第二行组的组标识作为源组标识,从描述信息列表中获取包括该源组标识的描述信息。

在一些实施例中,该文件包括第一行组对应的一个数据片段和该数据表的标识信息。在步骤1304中,第二调度工具基于该数据表的标识信息,从第二存储系统中获取该数据表对应的文件,将该数据片段保存到该数据表对应的文件中,生成第一行组的行组描述信息,该行组描述信息包括第一行组的组标识、第三事务的事务信息和该数据片段的存储位置,该存储位置包括该数据片段在该文件中的偏移量,第三事务用于指示保存该多个数据片段的时间。其中,第二描述信息包括该行组描述信息,将该行组描述信息保存到第二存储系统中的该数据表对应的描述信息列表中。

在一些实施例中,该文件还包括第一行组中的每列数据的统计信息,该行组描述信息还包括该每列数据的统计信息。

在一些实施例中,该文件还包括第一行组的行状态信息,该行组描述信息还包括该行状态信息。和/或,基于该行状态信息从第二存储系统包括的该数据片段中删除第一行组中被删除的数据。

在第二存储系统对多个第一存储系统进行备份的情况下,第一行组对应的行组描述信息包括源组标识和为第一行组分配的新组标识,以及第一行组对应的状态描述信息包括源组标识和为第一行组分配的新组标识,该源组标识为第一行组的组标识。

在一些实施例中,在第二调度工具还接收到第三描述信息的情况,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,基于第三描述信息删除第二存储系统中保存的该至少一行数据。在实现时:

第三描述信息包括第二行组的组标识和行状态信息,该行状态信息指示需要从第二行组中删除的至少一行数据。第二调度工具基于该数据表的标识信息获取该数据表对应的描述信息列表,从描述信息列表中获取包括该组标识的描述信息,该描述信息包括一个行组描述信息,该行组描述信息包括第二行组对应的数据片段的存储位置,该数据片段用于保存第二行组中的每行数据,该存储位置包括该数据片段在该数据表对应的文件中的偏移量。第二调度工具向第二存储系统发送删除指令,该删除指令包括该数据表的标识信息、该行组描述信息和该行状态信息。

第二存储系统接收该删除指令,基于该数据表的标识信息获取该数据表对应的文件,基于该偏移量从该文件中获取该数据片段。在获取到第二行组对应的数据片段后,从该数据片段中删除该行状态信息指示的至少一行数据。

在第二存储系统对多个第一存储系统进行备份的情况下,第二调度工具从该描述信息列表中获取包括该组标识的描述信息的操作为:第二调度工具将第二行组的组标识作为源组标识,从描述信息列表中获取包括该源组标识的描述信息。

在第一调度工具发送插入语句的情况,第二调度工具接收该插入语句,向第二存储系统保存该插入语句包括的第二行组中的每行数据。在实现时:

第二调度工具向第二存储系统发送该插入语句,第二存储系统保存该插入语句包括的第二行组中的每行数据。

在一些实施例中,在第二调度工具还接收到删除语句的情况,该删除语句包括第二行组的至少一行数据中的每行数据的行标识,第二调度工具向第二存储系统发送该删除语句。第二存储系统,基于该每行数据的行标识,从第二存储系统中删除该每行数据。

在一些实施例中,在执行步骤1301之前,第一调度工具接收配置文件,该配置文件包括指定时间段的时间长度和第二调度工具的设备标识。基于该时间长度确定指定时间段,在该指定时间段的结束时刻,基于第二调度工具的设备标识通过上述步骤1301-1304向第二调度工具发送第一行组。第二调度工具向第二存储系统保存第一行组。

在一些实施例中,在第一调度工具和第二调度工具采用云进行通信的情况,该配置文件还包括云上的指定位置。可选地,第二调度工具还接收该指定位置。其中,第二调度工具接收第一调度工具发送的该指定位置或接收用户配置的该指定位置。

在一些实施例中,第一行组中的每行数据是指定业务的数据,也就是说,可以对指定业务的数据进行备份,指定业务为重要业务或关键业务等。

在一些实施例中,该配置文件还包括指定业务对应的数据表的标识信息,如此使得第一存储系统基于该标识信息,确定需要备份的数据表。即第一调度工具在得到属于该数据表的第一行组时,通过上述步骤1301-1304向第二调度工具发送数据。

在本申请实施例中,第一调度工具获取第一描述信息,第一描述信息是第一存储系统在指定时间段内新增的描述信息,包括第一存储系统在指定时间段内保存的列存描述信息或行组描述信息。基于第一描述信息从第一存储系统中获取第一存储系统在指定时间段内保存的第一行组,向第二调度工具发送第一行组,第二调度工具向第二存储系统保存第一行组。由于在第一存储系统保存第一行组后,第一调度工具基于第一描述信息从第一存储系统中获取第一行组,这样不用对第一存储系统保存第一行组的过程进行修改,即不用对第一存储系统的SQL层进行修改,从而降低运营成本和维护难度。上述第一存储系统和第二存储系统可能是裸金属服务器,这样对于部署在裸金属服务器上的数据,可以采用另一个裸金属服务器对该裸金属服务器上的数据进行备份。另外,由于第一行组是指定业务的行组,这样可以采用第二存储系统对第一存储系统中指业务的数据进行备份,相比对第一存储系统中的全部业务的数据进行备份,减小备份成本。

参见图14,本申请实施例提供了一种数据管理的方法1400,所述方法1400应用于图1或图4所示的系统100。在所述方法1400中,第一调度工具将第一存储系统在指定时间段内保存的数据存储到第二存储系统中,所述方法1400包括如下步骤1401至1403。

步骤1401:第一调度工具获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据。

第一调度工具和第一存储系统可能是不同设备,这样在步骤1401中,第一调度工具通过与第一存储系统交互获取第一描述信息。

其中,第一调度工具获取第一描述信息的详细实现过程,参见图13所示方法1300的步骤1301中的相关内容,在此不再详细说明。

步骤1402:第一调度工具基于第一描述信息获取第一行组。

第一调度工具获取第一行组的详细实现过程,参见图13所示方法1300的步骤1302中的相关内容,在此不再详细说明。

步骤1403:第一调度工具向第二存储系统存储第一行组,以及向第二存储系统保存第二描述信息,第二描述信息用于描述第一行组。

其中。第一调度工具向第二存储系统存储第一行组以及向第二存储系统保存第二描述信息的详细实现过程,参见图13所示方法1300的步骤1304中的相关内容,在此不再详细说明。

在本申请实施例中,第一调度工具获取第一描述信息,第一描述信息是第一存储系统在指定时间段内保存的描述信息,包括第一存储系统在指定时间段内保存的列存描述信息或行组描述信息。基于第一描述信息从第一存储系统中获取第一存储系统在指定时间段内保存的第一行组,向第二存储系统保存第一行组。由于在第一存储系统保存第一行组后,第一调度工具基于第一描述信息从第一存储系统中获取第一行组,这样不用对第一存储系统保存第一行组的过程进行修改,即不用对第一存储系统的SQL层进行修改,从而降低运营成本和维护难度。

上述第一存储系统是第二存储系统的主系统,第二存储系统是第一存储系统的备系统。在第一存储系统正常时,第一存储系统提供服务。对于需要该服务的应用和/或终端设备等,应用和/或终端设备可以读写第一存储系统,但只读第二存储系统。

对于第一存储系统在指定时间段内保存的数据,该数据为第一存储系统在指定时间段内的增量数据。参见图15,通过上述图12所示方法1200、图13所示方法1300或图14所示方法1400将该增量数据同步到第二存储系统。在t1时刻第一存储系统故障,第二存储系统升为主系统,业务从第一存储系统切换到第二存储系统上,这时应用和/或终端设备可以读写第二存储系统,第二存储系统提供业务服务。

在第一存储系统故障后,可以修复第一存储系统。在t2时刻第一存储系统被修复,触发第二存储系统切换业务,t2晚于t1。对于第二存储系统在t1到t2之间的增量数据,通过上述图12所示方法1200、图13所示方法1300或图14所示方法1400将该增量数据同步到第一存储系统。

在t3时刻将第二存储系统在将在t1到t2之间的增量数据同步完,同时第二存储系统降级为备存储系统,t3晚于t2,且应用和/或终端设备只读第二存储系统。对于第二存储系统在t2到t3之间的增量数据,通过上述图12所示方法1200、图13所示方法1300或图14所示方法1400将在t2到t3之间的增量数据同步到第一存储系统。在将在t2到t3之间的增量数据同步完时,第一存储系统升级为主系统,应用和/或终端设备能够读写第一存储系统,只读第二存储系统。

对于第一存储系统在t3之后保存的增量数据,通过上述图12所示方法1200、图13所示方法1300或图14所示方法1400将该增量数据同步到第二存储系统。

参见图16,本申请实施例提供了一种数据管理的装置1600,所述装置1600应用图1、图3或图5所述系统100中的第一存储系统,或者所述装置1600应用于图2、图4或图6所述系统100中的第一调度工具,或者所述装置1600应用于图7所述方法700、图9所述方法900、图11所述方法1100或图12所述方法1200中的第一存储系统,或者所述装置应用于图13所述方法1300或图14所述方法1400中的第一调度工具。所述装置1600包括:

处理单元1601,用于获取第一描述信息,第一描述信息用于描述第一行组,第一行组是所述装置1600在指定时间段内保存的行组,第一行组包括至少一行数据;

保存单元1602,用于基于第一描述信息将第一行组保存到第二存储系统中。

可选地,处理单元1601获取第一描述信息的详细实现过程,请参见图12所述方法1200的步骤1201、图13所述方法1300的步骤1301或图14所述方法1400的步骤1401中的相关内容,在此不再详细说明。

可选地,保存单元1602将第一行组保存到第二存储系统中的详细实现过程,请参见图12所述方法1200的步骤1202-1204、图13所述方法1300的步骤1302-1304或图14所述方法1400的步骤1402-1403中的相关内容,在此不再详细说明。

可选地,第一描述信息包括第一事务的事务信息,第一事务是所述装置1600在指定时间段内执行完的事务,

处理单元1601,用于:

确定第一事务;

从所述装置1600已产生的描述信息中,选择包括第一事务的事务信息的第一描述信息。

可选地,处理单元1601确定第一事务以及选择第一描述信息的详细实现过程,请参见图12所述方法1200的操作12012-12013、图13所述方法1300的操作13012-12013中的相关内容,在此不再详细说明。

可选地,处理单元1601,用于:

获取第一事务集合,第一事务集合包括所述装置1600在指定时间段的结束时刻执行的事务,且第一事务集合用于反映所述装置1600在该结束时刻之前已执行完的事务;

基于第一事务集合确定第一事务。

可选地,处理单元1601获取第一事务集合的详细实现过程,请参见图12所述方法1200的操作12011、图13所述方法1300的操作13011中的相关内容,在此不再详细说明。

可选地,处理单元1601确定第一事务的详细实现过程,请参见图12所述方法1200的操作12012、图13所述方法1300的操作13012中的相关内容,在此不再详细说明。

可选地,处理单元1601,用于:

获取第二事务集合,第二事务集合包括所述装置1600在指定时间段的起始时刻执行的事务,且第二事务集合用于反映所述装置1600在该起始时刻之前已执行完的事务;

基于第一事务集合和第二事务集合确定第一事务。

可选地,处理单元1601获取第二事务集合的详细实现过程,请参见图12所述方法1200的操作12011、图13所述方法1300的操作13011中的相关内容,在此不再详细说明。

可选地,处理单元1601确定第一事务的详细实现过程,请参见图12所述方法1200的操作12012、图13所述方法1300的操作13012中的相关内容,在此不再详细说明。

可选地,处理单元1601,用于:

基于行组范围,从所述装置1600已产生的描述信息中选择至少一个描述信息,该行组范围包括所述装置1600在该指定时间段内操作的行组,该至少一个描述信息中的每个描述信息包括的组标识对应的行组属于该行组范围;

从该至少一个描述信息中,选择包括第一事务的事务信息的第一描述信息。

可选地,处理单元1601基于行组范围选择至少一个描述信息,以及从该至少一个描述信息选择第一描述信息的详细实现过程,请参见图12所述方法1200的操作12013、图13所述方法1300的操作13013中的相关内容,在此不再详细说明。

可选地,第一描述信息包括第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据,所述装置1600和第二存储系统为相同类型的存储系统;

所述装置1600还包括第一发送单元1602,

处理单元1601,还用于基于该存储位置,获取该数据片段;

第一发送单元1602,用于向第二存储系统发送文件,该文件包括该数据片段,该文件用于触发第二存储系统保存该数据片段。

可选地,处理单元1601获取该数据片段的详细实现过程,请参见图12所述方法1200的步骤1202或图13所述方法1300的步骤1302中的相关内容,在此不再详细说明。

可选地,第一发送单元1602向第二存储系统发送文件的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,该文件还包括第一行状态信息,第一行状态信息用于指示第一行组中未被删除的数据,该文件还用于触发第二存储系统保存第一行状态信息或基于第一行状态信息从该数据片段中删除第一行组中被删除的数据。

可选地,该文件还包括第一行组的组标识和/或第一行组中的每列数据对应的列标识,该文件还用于触发第二存储系统基于第一行组的组标识和该每列数据对应的列标识获取第二描述信息,第二描述信息用于描述第一行组。

可选地,该文件还包括该每列数据对应的统计信息,第二描述信息还包括该每列数据对应的统计信息。

可选地,第一描述信息包括第一行组的组标识和第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据,所述装置1600还包括第二发送单元1604,

处理单元1601,还用于基于该组标识和该存储位置,获取第一行组;

第二发送单元1604,用于向第二存储系统发送插入语句,该插入语句包括第一行组中的每行数据,该插入语句用于触发第二存储系统保存第一行组中的每行数据。

可选地,处理单元1601获取第一行组的详细实现过程,请参见图12所述方法1200的步骤1202或图13所述方法1300的步骤1302中的相关内容,在此不再详细说明。

可选地,第二发送单元1604向第二存储系统发送插入语句的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,处理单元1601,还用于:

获取第三描述信息,第三描述信息用于描述所述装置1600在指定时间段内从第二行组中删除的至少一行数据,第二行组为所述装置1600中保存的一个行组,第二存储系统保存有第二行组;

基于第三描述信息,删除第二存储系统中保存的至少一行数据。

可选地,处理单元1601获取第三描述信息的详细实现过程,请参见图12所述方法1200的步骤1201、图13所述方法1300的步骤1301或图14所述方法1400的步骤1401中的相关内容,在此不再详细说明。

可选地,处理单元1601删除第二存储系统中保存的至少一行数据的详细实现过程,请参见图12所述方法1200的步骤1203、图13所述方法1300的步骤1303或图14所述方法1400的步骤1403中的相关内容,在此不再详细说明。

可选地,所述装置1600和第二存储系统是相同类型的存储系统,第三描述信息包括第二行组的组标识和第二行状态信息,第二行状态信息用于指示该至少一行数据,所述装置1600还包括第三发送单元1605,

第三发送单元1605,用于向第二存储系统发送第三描述信息,第三描述信息用于触发第二存储系统基于该组标识和第二行状态信息删除该至少一行数据。

可选地,第三发送单元1605发送第三描述信息的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,第三描述信息包括第二行组的组标识和第二行状态信息,第二行状态信息用于指示该至少一行数据,所述装置1600还包括第四发送单元1606,

处理单元1601,用于基于该组标识和第二行状态信息,获取该至少一行数据中的每行数据的行标识;

第四发送单元1606,用于向第二存储系统发送删除语句,该删除语句包括该每行数据的行标识,该删除语句用于触发第二存储系统删除该至少一行数据。

可选地,处理单元1601获取该至少一行数据中的每行数据的行标识的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,第四发送单元1606发送删除语句的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,所述装置1600为数据库系统或数据仓库系统,第二存储系统为数据库系统或数据仓库系统。

可选地,第一行组中的每行数据是指定业务的数据。

其中,处理单元1601、保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和第四发送单元1606均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以处理单元1601为例,介绍处理单元1601的实现方式。类似的,保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和第四发送单元1606的实现方式可以参考处理单元1601的实现方式。

单元作为软件功能单元的一种举例,处理单元1601可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,处理单元1601可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。

同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。

单元作为硬件功能单元的一种举例,处理单元1601可以包括至少一个计算设备,如服务器等。或者,处理单元1601也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。

处理单元1601包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。处理单元1601包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,处理单元1601包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。

需要说明的是,在其他实施例中,处理单元1601可以用于执行上述数据管理的方法中的任意步骤,保存单元1602可以用于执行上述数据管理的方法中的任意步骤,第一发送单元1603可以用于执行上述数据管理的方法中的任意步骤,第二发送单元1604可以用于执行上述数据管理的方法中的任意步骤,第三发送单元1605可以用于执行上述数据管理的方法中的任意步骤,第四发送单元1604可以用于执行上述数据管理的方法中的任意步骤。处理单元1601、保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和第四发送单元1606负责实现的步骤可根据需要指定,通过处理单元1601、保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和第四发送单元1606分别实现上述数据管理的方法中不同的步骤来实现数据管理的装置1600的全部功能。

在本申请实施例中,由于第一描述信息用于描述第一行组,第一行组是所述装置在指定时间段内保存的行组,如此能够基于第一描述信息获取所述装置保存的第一行组。也就是说,在所述装置执行完用于保存第一行组的过程后,处理单元获取第一描述信息,基于第一描述信息从第一存储系统中得到第一行组,保存向第二存储系统中保存第一行组,保证所述装置中的数据和第二存储系统中的数据保持一致。这样对于所述装置保存数据的过程,不会修改该过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

参见图17,本申请实施例提供了一种数据管理的装置1700,所述装置1700部署在图1、图3或图5所述系统100中的第二存储系统,或者所述装置1700部署在图2、图4或图6所述系统100中的第二调度工具,或者所述装置1700部署在图7所述方法700、图9所述方法900、图11所述方法1100或图12所述方法1200中的第二存储系统,或者所述装置部署在图13所述方法1300或图14所述方法1400中的第一调度工具。所述装置1700包括:

接收单元1701,用于接收第一行组,第一行组是第一存储系统基于第一描述信息得到的,第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,第一行组包括至少一行数据;

处理单元1702,用于向所述装置1700保存第一行组。

可选地,接收单元1701接收第一行组的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702保存第一行组的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,第一存储系统和所述装置1700是相同类型的系统,接收单元1702,用于接收文件,该文件包括第一行组对应的数据片段,该数据片段包括第一行组中的至少一行数据;

处理单元1702,用于向所述装置1700保存该数据片段。

可选地,接收单元1701接收文件的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702保存该数据片段的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702,还用于:

生成第二描述信息,第二描述信息用于描述第一行组;

通过所述装置1700保存所述第二描述信息。

可选地,处理单元1702生成第二描述信息以及保存第二描述信息的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,该文件还包括第一行组的组标识和/或第一行组中的每列数据对应的列标识,第二描述信息包括第一行组的组标识和该数据片段的存储位置,该存储位置是基于该每列数据对应的列标识得到的。

可选地,该文件还包括第一行组中的每列数据对应的统计信息,第二描述信息还包括该每列数据对应的统计信息。

可选地,该文件还包括第一行状态信息,第一行状态信息用于指示第一行组中未被删除的数据,处理单元1702,还用于:

通过所述装置1700保存第一行状态信息;或者,

基于第一行状态信息从该数据片段中删除第一行组中被删除的数据。

可选地,处理单元1702保存第一行状态信息以及删除第一行组中被删除的数据的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,接收单元1701,用于接收插入语句,该插入语句包括第一行组中的每行数据;

处理单元1702,用于向所述装置1700保存第一行组中的每行数据。

可选地,接收单元1701接收插入语句的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702保存第一行组中的每行数据的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,接收单元1701,还用于接收第三描述信息,第三描述信息用于描述第一存储系统在指定时间段内从第二行组中删除的至少一行数据,第二行组为第一存储系统中保存的一个行组,所述装置1700保存有第二行组;

处理单元1702,还用于基于第三描述信息删除所述装置1700中保存的该至少一行数据。

可选地,接收单元1701接收第三描述信息的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702删除该至少一行数据的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,接收单元1701,还用于接收删除语句,该删除语句包括第二行组的至少一行数据中的每行数据的行标识,第二行组的至少一行数据是第一存储系统在指定时间段内删除的数据,第二行组为第一存储系统中保存的一个行组,所述装置1700保存有第二行组;

处理单元1702,还用于基于该每行数据的行标识,从所述装置1700中删除该每行数据。

可选地,接收单元1701接收删除语句的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,处理单元1702删除该每行数据的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,第一行组中的每行数据为指定业务的数据。

可选地,第一存储系统为数据库系统或数据仓库系统,所述装置1700为数据库系统或数据仓库系统。

其中,接收单元1701和处理单元1702均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以处理单元1702为例,介绍处理单元1702的实现方式。类似的,接收单元1701的实现方式可以参考处理单元1702的实现方式。

单元作为软件功能单元的一种举例,处理单元1702可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,处理单元1702可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。

同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。

单元作为硬件功能单元的一种举例,处理单元1702可以包括至少一个计算设备,如服务器等。或者,处理单元1702也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。

处理单元1702包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。处理单元1702包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,处理单元1702包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。

需要说明的是,在其他实施例中,处理单元1702可以用于执行上述数据管理的方法中的任意步骤,接收单元1701可以用于执行上述数据管理的方法中的任意步骤。接收单元1701和处理单元1702负责实现的步骤可根据需要指定,通过接收单元1701和处理单元1702分别实现上述数据管理的方法中不同的步骤来实现数据管理的装置1700的全部功能。

在本申请实施例中,由于第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,接收单元接收第一行组并向所述装置保存第一行组,保证第一存储系统中的数据和所述装置中的数据保持一致。由于第一行组是在第一存储系统保存第一行组后基于第一描述信息从第一存储系统中得到的,这样不用改变第一存储系统保存数据的过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

参见图18,本申请实施例提供了一种数据管理的系统1800,所述1800为上述图7所示方法700、图9所示方法900、图11所示方法1100、图12所示方法1200、图13所示方法1300或图14所示方法1400所应用的系统。所述1800包括第一存储系统1801和第二存储系统1802。

第一存储系统1801,用于获取第一描述信息,第一描述信息用于描述第一行组,第一行组是第一存储系统1801在指定时间段内保存的行组,第一行组包括至少一行数据;

第一存储系统1801,还用于基于第一描述信息向第二存储系统发送第一行组;

第二存储系统1802,用于保存第一行组。

可选地,第一存储系统1801获取第一描述信息的详细实现过程,请参见图12所述方法1200的步骤1201或图13所述方法1300的步骤1301中的相关内容,在此不再详细说明。

可选地,第一存储系统1801发送第一行组的详细实现过程,请参见图12所述方法1200的步骤1202-1203或图13所述方法1300的步骤1302-1303中的相关内容,在此不再详细说明。

可选地,第二存储系统1802保存第一行组的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,第一描述信息包括第一事务的事务信息,第一事务是第一存储系统在指定时间段内执行完的事务,

第一存储系统1801,用于确定第一事务;从第一存储系统1801已产生的描述信息中,选择包括第一事务的事务信息的第一描述信息。

可选地,第一存储系统1801确定第一事务以及选择第一描述信息的详细实现过程,请参见图12所述方法1200的步骤1201或图13所述方法1300的步骤1301中的相关内容,在此不再详细说明。

可选地,第一描述信息包括第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据,第一存储系统1801和第二存储系统1802为相同类型的存储系统;

第一存储系统1801,用于基于该存储位置,获取该数据片段;

第一存储系统,还用于向第二存储系统1802发送文件,该文件包括该数据片段;

第二存储系统1802,用于保存该数据片段。

可选地,第一存储系统1801获取该数据片段的详细实现过程,请参见图12所述方法1200的步骤1202或图13所述方法1300的步骤1302中的相关内容,在此不再详细说明。

可选地,第一存储系统1801发送文件的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,第二存储系统1802保存该数据片段的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

可选地,第一描述信息包括第一行组的组标识和第一行组对应的数据片段的存储位置,该数据片段包括第一行组中的数据;

第一存储系统1801,用于基于该组标识和该存储位置,获取第一行组;

第一存储系统1801,用于向第二存储系统1802发送插入语句,该插入语句包括第一行组中的每行数据;

第二存储系统1802,用于保存第一行组中的每行数据。

可选地,第一存储系统1801获取第一行组的详细实现过程,请参见图12所述方法1200的步骤1202或图13所述方法1300的步骤1302中的相关内容,在此不再详细说明。

可选地,第一存储系统1801发送插入语句的详细实现过程,请参见图12所述方法1200的步骤1203或图13所述方法1300的步骤1303中的相关内容,在此不再详细说明。

可选地,第二存储系统1802保存第一行组的每行数据的详细实现过程,请参见图12所述方法1200的步骤1204或图13所述方法1300的步骤1304中的相关内容,在此不再详细说明。

第一存储系统1801和第二存储系统1802均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来介绍第一存储系统1801的实现方式。类似的,第二存储系统1802的实现方式可以参考第一存储系统1801的实现方式。

作为软件功能单元的一种举例,第一存储系统1801可以包括运行在计算实例上的代码。其中,计算实例可以是物理主机(计算设备)、虚拟机、容器等计算设备中的至少一种。进一步地,上述计算设备可以是一台或者多台。例如,第一存储系统1801可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该应用程序的多个主机/虚拟机/容器可以分布在相同的region中,也可以分布在不同的region中。用于运行该代码的多个主机/虚拟机/容器可以分布在相同的AZ中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。

同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个VPC中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内。同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。

作为硬件功能单元的一种举例,第一存储系统1801可以包括至少一个计算设备,如服务器等。或者,第一存储系统1801也可以是利用ASIC实现、或PLD实现的设备等。其中,上述PLD可以是CPLD、FPGA、GAL或其任意组合实现。

第一存储系统1801包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。第一存储系统1801包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,第一存储系统1801包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。

在本申请实施例中,由于第一存储系统获取的第一描述信息用于描述第一行组,第一行组是第一存储系统在指定时间段内保存的行组,基于第一描述信息向第二存储系统发送第一行组。第二存储系统保存第一行组,保证第一存储系统中的数据和第二存储系统中的数据保持一致。由于第一行组是在第一存储系统保存第一行组后基于第一描述信息从第一存储系统中得到的,这样不用改变第一存储系统保存数据的过程,即不用修改第一存储系统的SQL接入层,从而降低运营成本以及维护难度。

参见图19,本申请实施例提供了一种计算设备1900。如图19所示,计算设备1900包括:总线1902、处理器1904、存储器1906和通信接口1908。处理器1904、存储器1906和通信接口1908之间通过总线1902通信。计算设备1900可以是服务器或终端设备。应理解,本申请不限定计算设备1900中的处理器、存储器的个数。

总线1902可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图19中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线1904可包括在计算设备1900各个部件(例如,存储器1906、处理器1904、通信接口1908)之间传送信息的通路。

处理器1904可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。

存储器1906可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器1904还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。

参见图19,存储器1906中存储有可执行的程序代码,处理器1904执行该可执行的程序代码以分别实现图16所示的装置1600中的处理单元1601、保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和第四发送单元1606的功能,从而实现数据管理的方法。也即,存储器1906上存有用于执行数据管理的方法的指令。或者,

参见图20,存储器1906中存储有可执行的程序代码,处理器1904执行该可执行的程序代码以分别实现图17所示的装置1700中的接收单元1701和处理单元1702的功能,从而实现数据管理的方法。也即,存储器1906上存有用于执行数据管理的方法的指令。

通信接口1903使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备1900与其他设备或通信网络之间的通信。

本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。

如图21或22所示,所述计算设备集群包括至少一个计算设备1900。计算设备集群中的一个或多个计算设备1900中的存储器1906中可以存有相同的用于执行上述数据管理的方法的指令。

在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1900的存储器1906中也可以分别存有用于执行上述数据管理的方法的部分指令。换言之,一个或多个计算设备1900的组合可以共同执行用于执行上述数据管理的方法的指令。

在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图23或24示出了一种可能的实现方式。如图23或24所示,两个计算设备1900A和1900B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。

在这一类可能的实现方式中,计算设备1900A中的存储器1906中存有执行如图16所示实施例中的处理单元1601功能的指令。同时,计算设备1900B中的存储器1906中存有执行如图16所示实施例中的保存单元1602、第一发送单元1603、第二发送单元1604、第三发送单元1605和/或第四发送单元1606的功能的指令。或者,

在这一类可能的实现方式中,计算设备1900A中的存储器1906中存有执行如图17所示实施例中的接收单元1701功能的指令。同时,计算设备1900B中的存储器1906中存有执行如图17所示实施例中的处理单元1702的功能的指令。

应理解,图23或24中示出的计算设备1900A的功能也可以由多个计算设备1900完成。同样,计算设备1900B的功能也可以由多个计算设备1900完成。

本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图21和图23所述计算设备集群的连接方式。或者,该计算设备集群中各计算设备之间的连接关系可以类似的参考图22和图24所述计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备1900中的存储器1906中可以存有相同的用于执行上述数据管理的方法的指令。

在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备1900的存储器1906中也可以分别存有用于执行上述数据管理的方法的部分指令。换言之,一个或多个计算设备1900的组合可以共同执行用于执行上述数据管理的方法的指令。

需要说明的是,计算设备集群中的不同的计算设备1900中的存储器1906可以存储不同的指令,用于执行上述数据管理的系统的部分功能。也即,不同的计算设备1900中的存储器1906存储的指令可以实现第一存储系统和第二存储系统中的一个或多个装置的功能。

本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行上述数据管理的方法。

本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述数据管理的方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 无级变速器及其驱动方法、自行车及自行车的控制系统
  • 智能自行车库自行控制系统及方法
  • 一种适用于智能自行车车库的自行车运输器
技术分类

06120116333398