发明内容
为了克服现有技术的缺陷,本发明提供了用于数据库的数据回放的方法和系统。
本发明通过以下技术方案来实现其上述目的。
在本发明的一个方面中,公开了一种用于数据库的数据回放的方法,该方法包括:解析从第一数据库切换到第二数据库之后第二数据库的日志,以生成数据操作日志,所述数据操作日志包括在切换到所述第二数据库之后对所述第二数据库中的数据做出变更的操作;基于数据操作日志自动生成数据回放指令集,所述数据操作日志;以及对所述第一数据库执行所述数据回放指令集,以使得对所述第二数据库中的数据做出的变更被回放到所述第一数据库。
优选地,所述方法还包括基于规则解析所述第二数据库的所述日志以生成所述数据操作日志。
优选地,基于所述数据操作日志自动生成数据回放指令集包括:确定所述第一数据库的类型是否与所述第二数据库的类型相同。
优选地,如果所述第一数据库的类型与所述第二数据库的类型不同,则至少基于所述第一数据库和所述第二数据库之间的语法映射关系来生成所述数据回放指令集。
优选地,如果所述第一数据库的类型与所述第二数据库的类型不同,则还基于所述第一数据库和所述第二数据库之间的元数据映射关系来生成所述数据回放指令集。
优选地,基于所述数据操作日志自动生成数据回放指令集还包括:确定所述第一数据库的数据表的结构是否与所述第二数据库的数据表的结构相同。
优选地,如果所述第一数据库的数据表的结构与所述第二数据库的数据表的结构不同,则至少基于所述第一数据库和所述第二数据库之间的元数据映射关系来生成所述数据回放指令集。
优选地,对所述第一数据库执行所述数据回放指令集是在从使用所述第二数据库切换回使用所述第一数据库后对所述第一数据库执行的。
在本发明的另一方面中,公开了一种用于数据库的数据回放的系统,该系统包括:日志解析组件,所述日志解析组件被配置成解析从第一数据库切换到第二数据库之后第二数据库的日志,以生成数据操作日志,所述数据操作日志包括在切换到所述第二数据库之后对所述第二数据库中的数据做出变更的操作;转换组件,所述转换组件被配置成基于所述数据操作日志自动生成数据回放指令集;以及日志执行组件,所述日志执行组件被配置成对所述第一数据库执行所述数据回放指令集,以使得对所述第二数据库中的数据做出的变更被回放到所述第一数据库。
在本发明的又一方面中,公开了一种存储指令的计算机可读存储介质,所述指令当被计算机执行时,使所述计算机执行上述方法。
在本发明的再一方面中,公开了一种计算机系统,所述计算机系统包括用于执行上述方法的装置。
与现有技术相比,本发明可具有如下有益效果:
本发明自动分析新数据库的操作日志并生成数据回放指令集,提高了数据回放效率;而且减少了人工干预的需要,提高了可靠性。
当然,实施本申请的任一技术方案无需同时达到所有上述技术效果。
具体实施方式
以下在具体实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的说明书、权利要求及附图,本领域技术人员可轻易地理解本发明相关的目的及优点。
为了减少数据库的数据回放过程中的人工干预的需要,提高效率和可靠性,本发明提供了用于数据库的数据回放的系统和方法。
在下文中,首先参考图1介绍根据本发明的实施例的用于数据回放的系统,其中例示了不同情形下本发明的工作机制;然后参考图2介绍根据本发明的实施例的用于数据回放的方法。
用于数据回放的系统
参见附图1,其中示出了根据本发明的实施例的用于数据库的数据回放的系统100的框图。在一个实施例中,系统100可包括日志解析组件102、转换组件104以及日志执行组件106。
在系统从使用第一数据库(例如,老数据库)切换到使用第二数据库(例如,新数据库)之后,在生产过程中第二数据库的数据将被变更。在此过程中,通常将生成第二数据库的日志。
在一个实施例中,日志解析组件102可被配置成解析从第一数据库切换到第二数据库之后第二数据库的日志,以生成数据操作日志。数据操作日志包括在切换到所述第二数据库之后对所述第二数据库中的数据做出变更的操作。例如,可通过预先设计好的业务数据分析规则,将源数据库中特定表、特定类型的数据操作日志过滤出来。例如,可基于指定规则将退款、拒付、用户余额变更等影响新业务的数据过滤出来。
在一个实施例中,转换组件104可被配置成基于所述数据操作日志自动生成数据回放指令集。通过生成数据回放指令集,转换组件104可将对一个数据库(例如,新数据库)的操作所带来的数据更改转换为对另一数据库(例如,旧数据库)的相同的数据更改。
优选地,转换组件104不仅可以对于相同类型的数据库、相同结构的数据表来执行转换,而且可以对不同结构的数据表,甚至对不同类型的数据库执行上述转换。下面根据各种情形来举例说明。
假设存在两个数据库A和B。例如,数据库A可以是新数据库,而数据库B是旧数据库。在从数据库B切换到数据库A,执行若干数据变更并记录日志之后,因为某种原因而要从数据库A回切到数据库B,则要执行数据回放,即:将对数据库A的数据变更执行到数据库B。
情形一、相同类型的数据库、结构相同的数据表
假设数据库A、B为相同类型的数据库且数据库A和B中的数据表的结构也完全相同。其中相同类型的数据库是指例如都是MySQL数据库、都是Oracle数据库等。在本文的上下文中,可认为相同类型的数据库具有相同的语法。在数据库A和B的语法相同,且数据表的结构相同的情况下,可直接将对数据库A的操作等价到对数据库B的操作,无需进行另外的映射。所述操作可包括各种操作,例如但不限于Insert、Delete、Update等。
情形二、相同类型的数据库、结构不同的数据表
假设数据库A、B为相同类型的数据库,但是数据库A和B中的数据表的结构不同。在这种情况下,由于数据库A和数据库B的语法相同,所以无需进行语法的映射。然而,由于数据表的结构不同,所以转换组件104需要兼容不同数据表的结构的差异,建立不同结构的数据表之间的元数据映射。例如,该映射将对数据库A的某个元数据的操作(例如写操作)映射到对数据库B的对应元数据的操作(例如写操作)。
例如,参考下表1,其示出了数据库A和B的元数据的映射关系:
数据库A的元数据 |
数据库B的元数据 |
Id |
userId |
name |
userName |
Year |
age |
Sex |
Sex |
表1
以上仅是元数据映射的示例,本领域技术人员可以构想其它映射方式,其均落入本发明的保护范围。
情形三、不同类型的数据库
假设数据库A、B为不同类型的数据库。此时,通常数据表的结构也不同。在这种情况下,由于数据库A和B使用不同的语法来操作数据,因此需要建立数据库A和数据库B之间的语法映射。在数据表的结构也不同的情况下,还应当建立不同结构的数据表之间的元数据映射。例如,该映射将对数据库A的元数据dataA1的操作OP1(该操作遵循数据库A的语法)映射到对数据库B的对应元数据dataB1的操作OP2(该操作遵循数据库B的语法,且其对数据dataB1的实际更改与OP2对数据dataA1的更改相同)。
例如,参考下表2,其示出了数据库A和B的语法的映射关系:
表2
以上仅是语法映射的示例,本领域技术人员可以构想其它映射方式,其均落入本发明的保护范围。
从上面的示例可以看出,为了执行操作日志到数据回放指令集的转换,转换组件104需要基于数据库的类型是否相同以及数据表的结构是否相同来建立相应的映射。因此,在一个示例中,在进行转换之前,转换组件104将判断数据库A和数据库B的结构是否相同,且如果数据库的类型不同,则可基于两个数据库之间的语法映射关系,以及还可进一步基于两个数据库之间的元数据映射关系来生成数据回放指令集。而在数据库的类型相同但数据表的结构不同的情况下,可仅基于两个数据库之间的元数据映射关系来生成数据回放指令集。
系统100还可包括日志执行组件106。日志执行组件106可被配置成对所述第一数据库执行所述数据回放指令集。例如,日志执行组件106可在转换组件104生成数据回放指令集之后自动执行该数据回放指令集。或者,日志执行组件106可等待操作人员检查数据回放指令集之后手动选择执行该数据回放指令集。优选地,在从使用所述第二数据库切换回使用所述第一数据库后执行所述数据回放指令集。
可以看出,本申请通过自动生成数据回放指令集并执行数据回放指令集,极大提高了数据库之间切换的效率。此外,本申请无需操作人员的参与,因此避免了与人工操作相关联的错误,提高了可靠性。
用于数据回放的方法
参见附图2,其中示出根据本发明的实施例的用于数据库的数据回放的方法200的流程图。
方法200可包括在步骤202,解析第二数据库的日志,以生成数据操作日志。例如,该日志是从第一数据库切换到第二数据库之后第二数据库的日志。该数据操作日志包括在切换到所述第二数据库之后对所述第二数据库中的数据做出变更的操作。优选地,可基于特定规则解析所述日志以生成所述数据操作日志。
方法200还可包括在步骤204,基于数据操作日志自动生成数据回放指令集。
该步骤可包括确定所述第一数据库的类型是否与所述第二数据库的类型相同。如果所述第一数据库的类型与所述第二数据库的类型不同,则至少基于所述第一数据库和所述第二数据库之间的语法映射关系来生成所述数据回放指令集。如果所述第一数据库的类型与所述第二数据库的类型不同,则还基于所述第一数据库和所述第二数据库之间的元数据映射关系来生成所述数据回放指令集。
该步骤还可包括确定所述第一数据库的数据表的结构是否与所述第二数据库的数据表的结构相同。如果所述第一数据库的数据表的结构与所述第二数据库的数据表的结构不同,则至少基于所述第一数据库和所述第二数据库之间的元数据映射关系来生成所述数据回放指令集。
方法200还可包括在步骤206,对所述第一数据库执行所述数据回放指令集。优选地,在从使用所述第二数据库切换回使用所述第一数据库后执行所述数据回放指令集。所述数据回放指令集的执行使得对所述第二数据库中的数据做出的变更被回放到所述第一数据库。
而且,本申请还公开了一种包括存储于其上的计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时使得所述处理器执行本文所述的各实施例的方法。
此外,本申请还公开了一种计算机系统,包括用于执行本文所述的各实施例的方法的装置。
可以理解,根据本发明的各实施例的方法可以用软件、固件或其组合来实现。
应该理解,所公开的方法中各步骤的具体次序或阶层是示例性过程的解说。基于设计偏好,应该理解,可以重新编排这些方法中各步骤的具体次序或阶层。所附方法权利要求以样本次序呈现各种步骤的要素,且并不意味着被限定于所呈现的具体次序或阶层,除非在本文中有特别叙述。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本发明并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
同样,需要指出的是,虽然本发明已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,在没有脱离本发明精神的情况下还可做出各种等效的变化或替换,因此,只要在本发明的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。