数据存储方法及装置与流程

文档序号:12915830阅读:230来源:国知局
数据存储方法及装置与流程

本发明涉及数据处理技术领域,尤其涉及一种数据存储方法及装置。



背景技术:

为便于管理人员做数据审计和查询操作,很多应用系统都会涉及到历史数据的存储,将历史数据存储于数据库中,或者存储于文件系统中。其中,历史数据相当于信息备份,用于记录用户在整个生命周期的信息和操作。

然而,现有的历史数据存储方法通常是管理人员手动录入和保存的,或者由管理人员编写大量的程序实现历史数据存储,工作量较大,因此,如何自动存储历史数据以减轻管理人员的工作量成为亟待解决的问题。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种数据存储方法,以实现数据的自动备份存储,减轻用户的工作量,解决现有技术中手动录入或编写程序录入数据工作量大的问题。

本发明的第二个目的在于提出一种数据存储装置。

本发明的第三个目的在于提出另一种数据存储装置。

本发明的第四个目的在于提出一种计算机程序产品。

本发明的第五个目的在于提出一种非临时性计算机可读存储介质。

为达上述目的,本发明第一方面实施例提出了一种数据存储方法,包括:

对数据库中的主表进行的多个目标操作进行监听;

当监听到至少一种目标操作时,获取所述主表对应的历史表;其中,所述历史表为所述主表的备份表,用于存储所述主表的数据和用户对所述主表的操作信息;

在所述历史表中存储所述目标操作以及所述目标操作对应的目标数据。

作为本发明第一方面实施例的另一种可选的实现方式,所述对数据库中的主表进行的多个目标操作进行监听,包括:

基于预先设置的不同的监听器,对所述主表进行的不同的目标操作进行监听,其中,一个监听器对应于一个目标操作。

作为本发明第一方面实施例的另一种可选的实现方式,所述对数据库中的主表进行的多个目标操作进行监听之前,还包括:

构建所述主表对应的所述历史表;

为所述历史表配置注解信息,所述注解信息用于指示所述历史表与所述主表的对应关系。

作为本发明第一方面实施例的另一种可选的实现方式,所述获取所述主表对应的历史表,包括:

扫描所有历史表,获取每个历史表的注解信息;

根据获取到的所有注解信息,确定与所述主表存在对应关系的所述历史表。

作为本发明第一方面实施例的另一种可选的实现方式,所述在所述历史表中存储所述目标操作以及所述目标操作对应的目标数据,包括:

根据监听到所述目标操作的监听器,确定所述目标操作的目标类型;

将所述目标类型作为操作属性增加到所述历史表中;

确定所述目标数据在所述主表中的第一位置;

在所述历史表中与所述第一位置的相同位置上,对所述目标数据执行所述目标操作。

作为本发明第一方面实施例的另一种可选的实现方式,当监听到所述目标操作为逻辑删除操作时,所述方法还包括:

将所述目标操作的目标类型从更新类型调整为删除类型;

对所述目标操作的所述删除类型进行标记。

作为本发明第一方面实施例的另一种可选的实现方式,所述历史表中包括所述主表的全部属性以及专属于所述历史表的附加属性;其中,所述附加属性中包括所述操作属性;

所述数据存储方法,还包括:

在所述将所述目标操作以及所述目标操作对应的目标数据,存储到所述历史表中进行存储的同时,将所述主表的全部属性以及每个属性对应的属性值备份到所述历史表中,并且为所述历史表中的除所述操作属性之外的其他附加属性赋值。

作为本发明第一方面实施例的另一种可选的实现方式,所述数据存储方法还包括:

当所述历史表存储出现故障时,继续对所述主表进行存储;

当所述主表存储出现故障时,停止对所述历史表的存储。

作为本发明第一方面实施例的另一种可选的实现方式,所述数据存储方法还包括:

将对所述主表进行的所述目标操作以及所述目标操作对应的目标数据,形成历史日志备份到所述数据库中;

所述当所述历史表存储时出现故障时,继续对所述主表进行存储之后,还包括:

获取所述历史表出现故障的时间点;

查询所述数据库并从中获取从所述时间点开始的所有历史日志;

将从所述时间点开始的所有历史日志中的记录更新到所述历史表。

本发明实施例的数据存储方法,通过对数据库中的主表进行的多个目标操作进行监听,当监听到至少一种目标操作时,获取主表对应的历史表,并在历史表中存储目标操作及目标操作对应的目标数据。本实施例中,通过监听机制监听用户对主表的操作,实现了自动感知主表变化的目的,在主表发生变化时,可以将监听到的操作以及变化的数据自动存储到历史表中,由此,能够实现数据的自动备份存储,减轻用户的工作量。

为达上述目的,本发明第二方面实施例提出了一种数据存储装置,包括:

监听模块,用于对数据库中的主表进行的多个目标操作进行监听;

获取模块,用于当监听到至少一种目标操作时,获取所述主表对应的历史表;其中,所述历史表为所述主表的备份表,用于存储所述主表的数据和用户对所述主表的操作信息;

存储模块,用于在所述历史表中存储所述目标操作以及所述目标操作对应的目标数据。

作为本发明第二方面实施例的另一种可选的实现方式,所述监听模块具体用于基于预先设置的不同的监听器,对所述主表进行的不同的目标操作进行监听;其中,一个监听器对应与一个目标操作。

作为本发明第二方面实施例的另一种可选的实现方式,所述数据存储装置还包括:

构建模块,用于对数据库中的主表进行的多个目标操作进行监听之前,构建所述主表对应的所述历史表;

配置模块,用于为所述历史表配置注解信息,所述注解信息用于指示所述历史表与所述主表的对应关系。

作为本发明第二方面实施例的另一种可选的实现方式,所述获取模块具体用于扫描所有历史表,获取每个历史表的注解信息,根据获取到的所有注解信息,确定与所述主表存在对应关系的所述历史表。

作为本发明第二方面实施例的另一种可选的实现方式,所述存储模块具体用于根据监听到所述目标操作的监听器,确定所述目标操作的目标类型,所述目标类型作为操作属性增加到所述历史表中,确定所述目标数据在所述主表中的第一位置,在所述历史表中与所述第一位置的相同位置上,对所述目标数据执行所述目标操作。

作为本发明第二方面实施例的另一种可选的实现方式,当监听到所述目标操作为逻辑删除操作时,所述存储模块还用于将所述目标操作的目标类型从更新类型调整为删除类型,对所述目标操作的所述删除类型进行标记。

作为本发明第二方面实施例的另一种可选的实现方式,所述历史表中包括所述主表的全部属性以及专属于所述历史表的附加属性;其中,所述附加属性中至少包括操作属性;

所述存储模块还用于在所述将所述目标操作以及所述目标操作对应的目标数据,存储到所述历史表中进行存储的同时,将所述主表的全部属性以及每个属性对应的属性值备份到所述历史表中,并且为所述历史表中除所述操作属性之外的附加属性赋值。

作为本发明第二方面实施例的另一种可选的实现方式,所述数据存储装置还包括:

监控模块,用于当所述历史表存储出现故障时,继续对所述主表进行存储,而当所述主表存储出现故障时,停止对所述历史表的存储。

作为本发明第二方面实施例的另一种可选的实现方式,所述数据存储装置还包括:

记录模块,用于将对所述主表进行的所述目标操作以及所述目标操作对应的目标数据,形成历史日志备份到所述数据库中;

所述存储模块还用于获取所述历史表出现故障的时间点,查询所述数据库并从中获取从所述时间点开始的所有历史日志,以及将从所述时间点开始的所有历史日志中的记录更新到所述历史表。

本发明实施例的数据存储装置,通过对数据库中的主表进行的多个目标操作进行监听,当监听到至少一种目标操作时,获取主表对应的历史表,并在历史表中存储目标操作及目标操作对应的目标数据。本实施例中,通过监听机制监听用户对主表的操作,实现了自动感知主表变化的目的,在主表发生变化时,可以将监听到的操作以及变化的数据自动存储到历史表中,由此,能够实现数据的自动备份存储,减轻用户的工作量。

为达上述目的,本发明第三方面实施例提出另一种数据存储装置,包括:处理器和存储器。其中,所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于实现第一方面实施例所述的数据存储方法。

为达上述目的,本发明第四方面实施例提出一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,执行第一方面实施例所述的数据存储方法。

为达上述目的,本发明第五方面实施例提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面实施例所述的数据存储方法。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明一实施例提出的数据存储方法的流程示意图;

图2为本发明另一实施例提出的数据存储方法的流程示意图;

图3为本发明又一实施例提出的数据存储方法的流程示意图;

图4为本发明再一实施例提出的数据存储方法的流程示意图;

图5为根据本发明一实施例的数据存储方法的实现过程图;

图6为本发明一实施例提出的数据存储装置的结构示意图;

图7为本发明另一实施例提出的数据存储装置的结构示意图;

图8为本发明又一实施例提出的数据存储装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的数据存储方法及装置。

图1为本发明一实施例提出的数据存储方法的流程示意图,该方法基于对象关系映射(objectrelationalmapping,orm)框架中的监听机制实现,其中,orm框架可以是但不限于是hibernate框架、mybatis框架。

如图1所示,该数据存储方法可以包括以下步骤:

s11,对数据库中的主表进行的多个目标操作进行监听。

其中,目标操作包括但不限于插入(insert)、删除(delete)、更新(update)。

本实施例中,可以利用orm框架(比如常用的hibernate框架、mybatis框架)中的监听机制对数据库中的主表进行的多个目标操作进行监听。

s12,当监听到至少一种目标操作时,获取主表对应的历史表。

其中,历史表为主表的备份表,用于存储主表的数据和用户对主表的操作信息。

能够理解的是,历史表和主表存在一一对应关系。

由于对数据表进行操作通常指的是对数据表中的数据进行操作,比如插入新的数据、删除旧的数据、对数据进行更新等。当用户对主表进行插入数据、删除数据等操作时,orm框架中的监听机制能够监听到至少一种目标操作,此时,可以根据主表和历史表之间的对应关系,获取与当前操作的主表对应的历史表。

s13,在历史表中存储目标操作以及目标操作对应的目标数据。

本实施例中,获取到与当前操作的主表对应的历史表之后,即可将监听到的对主表进行的目标操作以及目标操作对应的目标数据存储在历史表中,达到将对主表进行的操作同步备份至历史表中的目的。

举例而言,假设用户在主表中插入了一条数据“12345678@qq.com”。orm框架中的监听机制监听到目标操作为插入操作,之后,获取与主表对应的历史表,并将目标操作“insert”以及与目标操作对应的目标数据“12345678@qq.com”一起存储于历史表中。

本实施例的数据存储方法,通过对数据库中的主表进行的多个目标操作进行监听,当监听到至少一种目标操作时,获取主表对应的历史表,并在历史表中存储目标操作及目标操作对应的目标数据。本实施例中,通过监听机制监听用户对主表的操作,实现了自动感知主表变化的目的,在主表发生变化时,可以将监听到的操作以及变化的数据自动存储到历史表中,由此,能够实现数据的自动备份存储,减轻用户的工作量。

为了能够准确获取与主表对应的历史表,可以预先建立历史表并对历史表进行注解,基于此,本发明实施例提出了另一种数据存储方法。图2为本发明另一实施例提出的数据存储方法的流程示意图。

如图2所示,该数据存储方法可以包括以下步骤:

s21,构建主表对应的历史表。

由于数据库中存储有不止一个主表,而且每个主表的重要程度有所不同,对于重要程度较高的主表,通常希望对其进行备份以保证在主表故障或丢失时能够恢复主表中的数据。因此,本实施例中,可以构建与主表对应的历史表,以用于备份数据。

其中,主表和历史表可以存储于一个数据库中,也可以存储于不同的数据库中,用户可以根据需要自行设置,本发明对此不作限制。

s22,为历史表配置注解信息。

其中,注解信息用于指示历史表与主表的对应关系,注解信息的命名可以自行设定,本发明不作具体限制。

本实施例中,针对主表构建了历史表之后,可以基于构建的历史表利用java语句生成历史表实体类,进入为历史表实体类配置注解信息,以用来表明当前历史表实体对应的主表实体,进而达到通过注解信息指示历史表与主表的对应关系的目的。

举例而言,假设注解信息定义为@history,则利用注解信息指示历史表与主表的对应关系的语句可以如下所示:

s23,对数据库中的主表进行的多个目标操作进行监听。

为了能够对多个目标操作进行监听,可以预先针对不同的目标操作设置不同的监听器,从而,对数据库中的主表进行的多个目标操作进行监听,具体可以包括:基于预先设置的不同的监听器,对主表进行的不同的目标操作进行监听。其中,一个监听器对应于一个目标操作。

概括地说,可以针对删除操作、插入操作等不同的目标操作类型设置对应的监听器,由delete操作监听器监听删除操作、insert操作监听器监听插入操作、update操作监听器监听更新操作等。

s24,当监听到至少一种目标操作时,获取主表对应的历史表。

其中,历史表为主表的备份表,用于存储主表的数据和用户对主表的操作信息。

本实施例中,当用户在spring平台上集成orm框架,利用其中的insert、update、delete等方法对主表进行操作时,监听器能够自动监听到至少一个目标操作,此时可以进一步获取与主表对应的历史表。

具体地,获取主表对应的历史表包括:扫描所有历史表,获取每个历史表的注解信息,根据获取到的所有注解信息,确定与主表存在对应关系的历史表。

由于注解信息指示了主表与历史表的对应关系,因此,本实施例中,可以通过查找所有历史表的注解信息,将注解信息中包含的主表信息与当前操作的主表的信息进行匹配,若能够匹配成功,则表明该注解信息对应的历史表为与主表对应的历史表。

s25,在历史表中存储目标操作以及目标操作对应的目标数据。

本实施例中,根据注解信息获取了与主表对应的历史表之后,即可将目标操作及目标操作对应的目标数据存储于历史表中。

可选地,在本发明实施例一种可能的实现方式中,历史表中除了包括主表的全部属性外,还可以包括专属于历史表的附加属性,其中,附加属性中包括操作属性。

应当理解的是,由于历史表是主表的备份表,用于对主表中的数据进行备份,从而,历史表中应当包括主表的全部属性。而附加属性则用于表征历史表,附加属性中可以包含历史表的主键即id、历史数据的创建人、创建时间等字段。

在本发明实施例中,当历史表中包括主表的全部属性以及专属于历史表的附加属性时,在将目标操作以及目标操作对应的目标数据存储到历史表中进行存储的同时,还需要将主表的全部属性以及每个属性对应的属性值备份到历史表中,并且为历史表中的除操作属性之外的其他附加属性赋值。

作为一种示例,历史表的附加属性可以包括以下四个字段:

其中,h_operation表示操作类型,即insert、update、delete等,该附加属性的属性值根据监听器监听到的目标操作的类型进行赋值。附加属性h_id表示历史表主键,其属性值自动生成。附加属性h_last_updated_by表示历史数据创建人,其属性值为对当前主表进行操作的用户的账号信息。附加属性h_last_updated_date表示历史数据创建时间,其属性值为对当前主表进行操作时的系统时间。

需要说明的是,对各个附加属性进行赋值的过程是自动完成的,无需用户参与,从而能够减轻用户的工作量,实现数据备份自动化。另外,上述附加属性仅作为示例用于解释本发明,而不能作为对本发明的限制,还可以根据需要设置历史表的其他附加属性。

通过设置历史表包括主表的全部属性和专属于历史表的附加属性,并给所有属性进行赋值,能够对主表中的操作进行备份,并记录主表操作的相关信息,为日后做审计提供了便利。

本实施例的数据存储方法,通过构建主表对应的历史表,为历史表配置注解信息,对数据库中的主表进行的多个目标操作进行监听,当监听到至少一种目标操作时,获取主表对应的历史表,在历史表中存储目标操作以及目标操作对应的目标数据,能够准确获取历史表,实现数据的自动备份存储,减轻用户的工作量。

为了更加清楚地说明在历史表中存储目标操作以及目标操作对应的目标数据的实现过程,本发明实施例提出了另一种数据存储方法。图3为本发明又一实施例提出的数据存储方法的流程示意图。

如图3所示,在如图2所示实施例的基础上,步骤s25可以包括以下步骤:

s31,根据监听到目标操作的监听器,确定目标操作的目标类型。

如前文所述,一个监听器对应于一个目标操作,delete操作监听器监听删除操作、insert操作监听器监听插入操作、update操作监听器监听更新操作等,从而,本实施例中,可以根据监听到目标操作的监听器确定目标操作的目标类型。

作为一种示例,可以为不同的监听器设置不同的标识,通过该标识可以识别出该监听器对应的目标操作。当有一个监听器监听到目标操作时,可以获取到该监听器的标识,进而能够确定出目标操作以及目标类型。

s32,将目标类型作为操作属性增加到历史表中。

本实施例中,可以对历史表设置附加属性字段,比如设置h_operation,用于表示操作类型,进而将确定的目标操作的目标类型作为属性值赋值给h_operation。举例说明,当目标操作类型为“update”,则将“update”作为操作属性的属性值赋值给历史表中的h_operation。

s33,确定目标数据在主表中的第一位置。

当用户对主表执行目标操作时,可以获取目标操作对应的目标数据在主表中的第一位置。

比如,用户在主表的第221行第3列插入数据“12345678@qq.com”,则可以确定目标数据在主表中的第一位置为“第221行第3列”。

s34,在历史表中与第一位置的相同位置上,对目标数据执行目标操作。

仍以上述例子为例,用户在主表的第221行第3列插入数据12345678@qq.com,可以确定第一位置为“第221行第3列”,目标操作为“插入”即“insert”,目标数据为“12345678@qq.com”。则,在历史表中的第221行第3列同样插入12345678@qq.com。同时,在历史表中记录针对该目标数据的操作属性赋值为“insert”。

本实施例的数据存储方法,通过根据监听到目标操作的监听器确定目标操作的目标类型,将目标类型作为操作属性增加到历史表中,确定目标数据在主表中的第一位置,进而在历史表中与第一位置的相同位置上,对目标数据执行目标操作,能够确保历史表中的数据与主表中的数据一致,实现数据自动备份存储。

由于逻辑删除不同于物理删除,用户在执行逻辑删除操作时,数据并没有被彻底删除,而是删除了可以识别该数据的标识符,使系统无法识别该数据,但数据仍存在,执行时应该调用update操作。但从语义上和审计角度来说,应该属于delete操作。为了便于区分,可以对操作类型进行标记,从而,在本发明实施例一种可能的实现方式中,当监听到的目标操作为逻辑删除操作时,可以将目标操作的目标类型从更新类型调整为删除类型,并对目标操作的删除类型进行标记。

具体地,可以通过增加注解信息@deletelogically的方式对逻辑删除操作进行扩展,在历史表中,将在主表中执行的update操作调整为delete操作,并通过标记的方式对delete操作进行标记,以和主表执行delete操作时的操作类型相区别。

通过在目标操作为逻辑删除操作时,将目标类型从更新操作调整为删除操作,并对删除操作进行标记,能够在历史表中实现逻辑删除操作,进一步保证历史表与主表的一致性。

在用户操作过程中,并不一定是一帆风顺的,还可能出现主表存储故障或历史表存储故障的情况,针对这一问题,本发明实施例提出了另一种数据存储方法。图4为本发明再一实施例提出的数据存储方法的流程示意图。

如图4所示,在上述实施例的基础上,该数据存储方法还可以包括以下步骤:

s41,将对主表进行的目标操作以及目标操作对应的目标数据,形成历史日志备份到数据库中。

本实施例中,在对主表进行目标操作时,可以将对主表进行的目标操作以及目标操作对应的目标数据形成单独的历史日志存储于数据库中进行备份,以便于在历史表存储失败时,可以从数据库中查找历史日志,并根据该历史日志的记录对历史表进行数据更新保证历史表与主表一致。

s42,当主表存储出现故障时,停止对历史表的存储。

能够理解的是,历史表作为主表的备份数据表,当主表存储失败时,表明对主表的操作无效,此时,应当停止对历史表的存储,若继续存储历史表,则历史表中的数据将多于主表,使历史表与主表中的数据不一致,且影响后续的审计、数据追溯等操作的正确性。

因此,本实施例中,在存储过程中,若主表存储出现故障,则历史表的存储也停止。

s43,当历史表存储出现故障时,继续对主表进行存储。

由于历史表是主表的备份数据表,历史表的故障对主表不会造成影响,因此,本实施例中,当历史表存储出现故障时,可以继续对主表进行存储。

需要说明的是,步骤s42和步骤s43是并列执行的,本实施例将步骤s43放在步骤s42之后执行只是为了便于描述,而不能作为对本发明的限制。

s44,获取历史表出现故障的时间点。

本实施例中,当历史表存储出现故障时,可以根据系统时间生成历史表出现故障的时间点。

s45,查询数据库并从中获取从时间点开始的所有历史日志。

本实施例中,在数据库中存储历史日志时,会将存储该历史日志的系统时间作为历史日志的存储时间。而且实际应用中,数据库存储历史日志的系统时间往往是对主表的操作完成之后,或者在操作过程中按照一定的时间间隔进行存储。由于历史表已经出现故障停止存储,所以数据库中存储的从故障时间点之后的历史日志,即为对主表进行的后续目标操作以及目标数据。为了能够保证主表和历史表的数据一致,可以利用数据库中的历史日志对历史表进行更新。具体地,在获取了历史表存储出现故障的时间点之后,根据该时间点查询数据库中存储的历史日志,获取从时间点开始的所有历史日志。

s46,将从时间点开始的所有历史日志中的记录更新到历史表。

本实施例中,从数据库中获取了从时间点开始的所有历史数据以及对历史数据的操作状态后,即可将历史日志中的记录更新至历史表中,以实现对历史表的更新,保证历史表与主表数据一致。

需要说的是,步骤s41并不限于在步骤s42之前执行,也可以在步骤s43之后执行,本发明仅以步骤s41在步骤s42之前执行作为示例进行说明,而不能作为对本发明的限制。当步骤s41在步骤s43之后执行时,可以仅生成并存储历史表存储出现故障之后的历史记录,避免了存储历史表存储出现故障之前的历史记录,能够在一定程度上节省数据库的存储空间。

本实施例的数据存储方法,通过将对主表进行的目标操作以及目标操作对应的目标数据形成历史记录存储于数据库中,当主表存储出现故障时,停止对历史表的存储,当历史表存储出现故障时,继续对主表进行存储,并获取历史表出现故障的时间点,查询数据库并从中获取从时间点开始的所有历史记录,并将从时间点开始的所有历史记录存储到历史表中,能够保证历史表与主表的一致,以及保证事务的正确性。

图5为根据本发明一实施例的数据存储方法的实现过程图。如图5所示,当监听器监听到对主表的操作之后,进一步判断是否根据注解信息匹配到历史表,即判断是否存在与主表对应的历史表,当不存在时,直接结束,即不对该主表进行备份。当存在历史表与主表对应时,进一步构造历史表数据,即对历史表的所有属性进行赋值。从图5中可以看出,根据监听器监听到的操作类型对历史表的操作类型属性进行赋值;根据当前登录用户账号对历史表的创建人属性进行赋值;根据当前系统时间对历史表的创建时间属性进行赋值;自动生成历史表的主键属性的属性值。另外,在构造历史表数据时,还将主表的全部属性及对应的属性值复制到历史表中,以保证历史表与主表的数据一致。

需要说明是,本实施例提供的数据存储方法不限于用于对历史表的数据存储,还可以用于实现具体业务的数据存储过程。针对业务也可以采用本实施例提供的监听机制进行操作类型的监听,并且将监听到的操作类型以及操作的数据形成业务的业务操作日志,具体地可以在新增、删除或修改实体时保存业务操作日志进行存储,以便后续日志审计。进一步地,在获取到业务操作日志后,可以将业务操作日志转发给其他业务系统或者中间件,具体地,将新增、删除或修改实体时产生的相关数据记录在业务操作日志中,并同步转发给其他业务系统或中间件。进一步地,在用户或者开发人员对业务进行相应操作后,形成业务操作日志后可以发布相关事件,如执行业务操作后需要回调工作流接口。可见,本实施例提供的数据存储方法具有很强的可扩展性。

为了实现上述实施例,本发明还提出一种数据存储装置。

图6为本发明一实施例提出的数据存储装置的结构示意图。

如图6所示,该数据存储装置60可以包括:监听模块610、获取模块620,以及存储模块630。其中,

监听模块610,用于对数据库中的主表进行的多个目标操作进行监听。

获取模块620,用于当监听到至少一种目标操作时,获取主表对应的历史表。

其中,历史表为主表的备份表,用于存储主表的数据和用户对主表的操作信息。

存储模块630,用于在历史表中存储目标操作以及目标操作对应的目标数据。

可选地,在本发明实施例一种可能的实现方式中,如图7所示,在如图6所示实施例的基础上,该数据存储装置60还可以包括:

构建模块640,用于对数据库中的主表进行的多个目标操作进行监听之前,构建主表对应的历史表。

配置模块650,用于为历史表配置注解信息,注解信息用于指示历史表与主表的对应关系。此时,

获取模块620具体用于,扫描所有历史表,获取每个历史表的注解信息,根据获取到的所有注解信息,确定与主表存在对应关系的历史表。

进一步地,在本发明实施例一种可能的实现方式中,监听模块610具体用于基于预先设置的不同的监听器,对主表进行的不同的目标操作进行监听。其中,一个监听器对应与一个目标操作。此时,

存储模块630具体用于根据监听到目标操作的监听器,确定目标操作的目标类型,目标类型作为操作属性增加到历史表中,确定目标数据在主表中的第一位置,在历史表中与第一位置的相同位置上,对目标数据执行目标操作。

进一步地,当监听模块610监听到目标操作为逻辑删除操作时,存储模块630还用于将目标操作的目标类型从更新类型调整为删除类型,对目标操作的删除类型进行标记。

可选地,在本发明实施例一种可能的实现方式中,历史表中可以包括主表的全部属性以及专属于历史表的附加属性。其中,附加属性中至少包括操作属性。此时,

存储模块630还用于在将目标操作以及目标操作对应的目标数据,存储到历史表中进行存储的同时,将主表的全部属性以及每个属性对应的属性值备份到历史表中,并且为历史表中除操作属性之外的附加属性赋值。

可选地,在本发明实施例一种可能的实现方式中,如图7所示,在如图6所示实施例的基础上,该数据存储装置60还可以包括:

监控模块660,用于当历史表存储出现故障时,继续对主表进行存储,而当主表存储出现故障时,停止对历史表的存储。

记录模块670,用于将对主表进行的目标操作以及目标操作对应的目标数据,形成历史日志备份到数据库中。

存储模块630还用于获取历史表出现故障的时间点,查询数据库并从中获取从时间点开始的所有历史日志,以及将从时间点开始的所有历史日志中的记录更新到历史表。

需要说明的是,前述对数据存储方法实施例的解释说明也适用于本实施例的数据存储装置,其实现原理类似,此处不再赘述。

本实施例的数据存储装置,通过对数据库中的主表进行的多个目标操作进行监听,当监听到至少一种目标操作时,获取主表对应的历史表,并在历史表中存储目标操作及目标操作对应的目标数据。本实施例中,通过监听机制监听用户对主表的操作,实现了自动感知主表变化的目的,在主表发生变化时,可以将监听到的操作以及变化的数据自动存储到历史表中,由此,能够实现数据的自动备份存储,减轻用户的工作量。

为了实现上述实施例,本发明还提出另一种数据存储装置。

图8为本发明又一实施例提出的数据存储装置的结构示意图。

如图8所示,该数据存储装置80包括:处理器801和存储器802。其中,处理器801通过读取存储器802中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现如前述实施例所述的数据存储方法。

为了实现上述实施例,本发明还提出一种计算机程序产品,当计算机程序产品中的指令由处理器执行时,执行如前述实施例所述的数据存储方法。

为了实现上述实施例,本发明还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器执行时能够实现如前述实施例所述的数据存储方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1