CN115357590A - 针对数据变更的记录方法、装置、电子设备及存储介质 - Google Patents

针对数据变更的记录方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115357590A
CN115357590A CN202210953973.1A CN202210953973A CN115357590A CN 115357590 A CN115357590 A CN 115357590A CN 202210953973 A CN202210953973 A CN 202210953973A CN 115357590 A CN115357590 A CN 115357590A
Authority
CN
China
Prior art keywords
data
data change
change request
execution result
request
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.)
Pending
Application number
CN202210953973.1A
Other languages
English (en)
Inventor
徐志彬
王军
柴晨
张丁一
喻文强
张琦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Securities Co Ltd
Original Assignee
China Securities Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Securities Co Ltd filed Critical China Securities Co Ltd
Priority to CN202210953973.1A priority Critical patent/CN115357590A/zh
Publication of CN115357590A publication Critical patent/CN115357590A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/235Update request formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Abstract

本发明实施例提供了一种针对数据变更的记录方法、装置、电子设备及存储介质,涉及数据库技术领域。该方法包括:接收到数据变更请求时,触发指定前置操作执行,得到第一执行结果;指定前置操作对目标代码进行指定添加处理,且获取待操作数据对象以及操作类型;目标代码为实现对请求进行响应的程序代码;指定添加处理为添加AOP注解或添加监听事件代码;请求响应后,若通过过滤器拦截到请求对应反馈结果,触发指定后置操作执行,得到第二执行结果;指定后置操作用于获取数据对象以及操作类型;对比执行结果得到差异结果;存储数据变更的记录信息。应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。

Description

针对数据变更的记录方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及数据库技术领域,特别是涉及针对数据变更的记录方法、装置、电子设备及存储介质。
背景技术
众所周知,金融、电信、制造和互联网等行业有大量的数据需要处理,为了更好地处理数据,相关人员会应用数据库技术来管理相关行业的数据,特别地,针对不同行业,相关人员会开发与行业相适应的数据库。在数据库中,数据有其生命周期,在数据的生命周期中,数据被创建、存储、维护、使用以及销毁。由于数据库中的数据发生变更,对于利用该数据库的业务的生命周期变化和问题回溯有很重要的作用,因此,存在对数据库中的变更内容进行记录的需求。
相关技术中,为了实现针对数据库的数据变更的记录,通常在对数据库中的数据进行变更的同时,打印日志记录或者在数据库中创建变更记录表。不管是打印日志记录还是创建变更记录表,都是需要将实现记录变更内容功能的逻辑代码嵌入到响应数据变更请求的程序代码中,也就是,嵌入到用于实现数据变更的业务代码中,从而在执行数据变更流程的同时来记录数据的变更。
然而,在实际应用中,实现记录数据变更的逻辑代码需要根据不同的数据表结构来编写,并且逻辑代码总是与响应数据变更请求的业务代码交叉在一起。因此,相关技术在实现记录数据变更时,会对业务代码有大量的侵入修改,这样,对后续代码重构和代码理解都会带来干扰。
可见,在记录数据库中数据的变更时,如何减少对业务代码的侵入修改,是一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供针对数据变更的记录方法、装置、电子设备及存储介质,以实现在记录数据库中数据的变更时,减少对业务代码的侵入修改。
具体技术方案如下:
第一方面,为了达到上述目的,本发明实施例公开了一种针对数据变更的记录方法,所述方法包括:
当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储关于所述差异结果所表征的数据变更的记录信息。
可选的,所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
可选的,其特征在于,所述触发指定前置操作的执行,得到第一执行结果之后,所述方法还包括:
在得到第一执行结果后,将所述第一执行结果存储至所述数据变更请求对应的指定内存区域;
所述若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果之前,还包括:
在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果;
所述对比所述第一执行结果和所述第二执行结果,得到差异结果,包括:从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
可选的,其特征在于,所述指定前置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或删除类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型,得到第一执行结果;
若所述数据变更请求为增加类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第一执行结果。
可选的,其特征在于,所述指定后置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或增加类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型,得到第二执行结果;
若所述数据变更请求为删除类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第二执行结果。
第二方面,为了达到上述目的,本发明实施例公开了一种针对数据变更的记录装置,所述装置包括:
第一触发模块,用于当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
第二触发模块,用于在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比模块,用于对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储模块,用于存储关于所述差异结果所表征的数据变更的记录信息。
可选的,所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
可选的,所述第一触发模块,还用于在触发指定前置操作的执行,得到第一执行结果之后,将所述第一执行结果存储至所述数据变更请求对应的指定内存区域;
所述第二触发模块,还用于若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果之前,
在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果;
所述对比模块,用于从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述针对数据变更的记录方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述针对数据变更的记录方法的步骤。
本发明实施例有益效果:
以上可见,应用本发明实施例提供的方案,当接收到针对目标数据库的数据变更请求时,可以触发指定前置操作对目标代码进行指定添加处理,因此可以针对数据变更请求的响应,获取数据变更请求所表征的待操作数据对象以及数据变更请求对应的操作类型,得到第一执行结果;其中,目标代码为实现对数据变更请求进行响应的程序代码;指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;在目标数据库进行数据变更请求的响应后,可以通过预设过滤器拦截到数据变更请求对应的反馈结果,触发指定后置操作来获取在响应数据变更请求时所进行变更的数据对象以及数据变更请求对应的操作类型,得到第二执行结果;可以在对比第一执行结果和第二执行结果后,存储对比得到的差异结果所表征数据变更的记录信息。
基于上述方案可知,由于对目标代码的指定添加处理是在目标代码中添加面向切面编程AOP注解或添加监听事件代码,因此,为了获取待操作数据对象对应的变更前后的数据对象以及数据变更请求对应的操作类型,本方案中,目标代码只被添加了注解或少量代码。可见,本方案,在实现记录数据库中数据的变更时,并没有对目标代码有过多侵入修改。
基于此,应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。
另外,现有技术中,为了实现针对数据库的数据变更的记录,针对不同的数据库表结构,需要编写不同的逻辑代码;而本方案在目标代码中添加面向切面编程AOP注解或添加监听事件代码,可以面向不同的数据库表结构,因此,针对不同的数据库表结构,可以无需编写不同的逻辑代码,以实现记录数据库中数据的变更。可见,本方案具有通用性,应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,不区分数据库表结构。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种针对数据变更的记录方法的流程示意图。
图2为本发明实施例提供的另一种针对数据变更的记录方法的流程示意图。
图3为本发明实施例提供的另一种针对数据变更的记录方法的流程示意图。
图4为本发明实施例提供的另一种针对数据变更的记录方法的流程示意图。
图5为本发明实施例提供的另一种针对数据变更的记录方法的流程示意图。
图6(a)-图6(d)为本发明实施例提供的与插入操作相关的各个数据表的示意图。
图7(a)-图7(d)为本发明实施例提供的与修改操作相关的各个数据表的示意图。
图8(a)-图8(d)为本发明实施例提供的与删除操作相关的各个数据表的示意图。
图9为本发明实施例提供的一种针对数据变更的记录装置的结构示意图。
图10为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
为了实现在记录数据库中数据的变更时,减少对业务代码的侵入修改,本发明实施例提供了针对数据变更的记录方法、装置、电子设备及存储介质。
下面首先对本发明实施例所提供的一种针对数据变更的记录方法进行介绍。
其中,本发明实施例所提供的一种针对数据变更的记录方法,可以应用于电子设备。在具体应用中,该电子设备可以为服务器,也可以为终端设备,例如,平板电脑、台式电脑,这都是合理的。
具体而言,一种针对数据变更的记录方法的执行主体可以为运行于电子设备中的、用于对目标数据库进行管理以及操作的数据处理端。并且,目标数据库中所存储的数据可以为金融数据、电信数据等等,本发明实施例对此不做限定;示例性的,目标数据库可以是Oracle数据库、SQL Server数据库、MySQL数据库等,本发明实施例对此不做限定。
其中,本发明实施例提供一种针对数据变更的记录方法,可以包括如下步骤:
当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储关于所述差异结果所表征的数据变更的记录信息。
基于上述方案可知,由于对目标代码的指定添加处理是在目标代码中添加面向切面编程AOP注解或添加监听事件代码,因此,为了获取待操作数据对象对应的变更前后的数据对象以及数据变更请求对应的操作类型,本方案中,目标代码只被添加了注解或少量代码。可见,本方案,在实现记录数据库中数据的变更时,并没有对目标代码有过多侵入修改。基于此,应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。
另外,现有技术中,为了实现针对数据库的数据变更的记录,针对不同的数据库表结构,需要编写不同的逻辑代码;而本方案在目标代码中添加面向切面编程AOP注解或添加监听事件代码,可以面向不同的数据库表结构,因此,针对不同的数据库表结构,可以无需编写不同的逻辑代码,以实现记录数据库中数据的变更。可见,本方案具有通用性,应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,不区分数据库表结构。
下面结合附图介绍本发明实施例所提供的一种针对数据变更的记录方法。
图1为本发明实施例提供的一种针对数据变更的记录方法的流程示意图,如图1所示,该方法可以包括如下步骤:
S101:当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码。
可以理解的是,相关技术中,请求方可以向电子设备发送针对目标数据库的数据变更请求,例如:插入类型的数据变更请求、删除类型的数据变更请求或者增加类型的数据变更请求;从而,电子设备在接收到数据变更请求时,可以针对目标数据库进行关于所接收到的数据变更请求的响应处理,其中,电子设备通过运行用于实现对所接收到的数据变更请求进行响应的程序代码,来进行响应处理。
本实施例中,电子设备可以接收到请求方发送的针对目标数据库的数据变更请求,但是,为了实现针对数据变更的记录,在接收到数据变更请求时,并不立即针对目标数据库进行数据变更请求的响应处理,而是在响应处理之前,触发执行指定前置操作的执行,得到第一执行结果。也就是,先对数据变更请求进行拦截,然后触发指定前置操作的执行,在指定前置操作执行后,再针对目标数据库进行数据变更请求的响应。从而,在数据变更请求被响应前,获知目标数据库中的数据在变更前的内容,也就是,获知通过所述数据变更请求来操作哪些数据对象,以及操作类型是何种类型,例如:删除类型、增加类型还是修改类型。
其中,为了实现对于数据变更请求的拦截以及指定前置操作的触发执行,可以预先在目标代码中进行指定添加处理,也就是,在用于实现对所述数据变更请求进行响应的程序代码中,进行指定添加处理;并且,该指定添加处理处理可以为添加面向切面编程AOP注解或添加监听事件代码。本领域技术人员可知的是,由于在添加AOP(Aspect OrientedProgramming,面向切面编程)注解时,对于目标代码无侵入修改,而添加监听事件代码时,对于目标代码是少量的侵入修改,因此,相对于现有技术而言,均可以大大减少对业务代码的侵入修改。需要说明的是,在具体应用中,针对数据变更请求的响应过程的业务处理逻辑复杂的情况,可以选择添加监控事件代码的方式,否则,可以选择AOP注解的方式,当然并不局限于此。
例如,当接收到要对目标数据库中一特定数据表进行关于至少一行数据条目的数据修改操作的请求时,若预先在用于实现对该数据修改操作的请求的响应的目标代码中,添加有AOP注解,因此,可以通过该AOP注解,来触发指定前置操作,实现对于该数据修改操作的请求的拦截,并通过执行该指定前置操作,能够获取到上述数据修改操作所表征的待操作数据对象以及所述数据变更请求对应的操作类型。
需要强调的是,若数据变更请求为修改类型或者删除类型的请求,则数据变更请求所表征的待操作数据对象是已经记录在目标数据库中的,且待操作数据对象可以为目标数据库中的数据表内的至少一行数据条目,当然,也可以为目标数据库中数据表;而若数据变更请求为增加类型的请求,由于待操作数据对象未记录到目标数据库中,此时,在进行指定前置操作时,所获取到的所述数据变更请求所表征的待操作数据对象可以为用于表征数据对象为空的内容。
并且,可以理解的是,数据变更请求所携带的参数信息,可以包括但不局限于:数据的主键、数据表名称、数据的除主键以外的各个字段等等用于实现数据变更所需的各类参数,本发明实施例并不做限定;特别的,在数据表中,当无法使用单个字段来唯一标识时,可以将多个字段设置为主键,形成多主键,因此,主键的数量通常可以为一个或多个,这都是合理的。另外,数据变更请求所携带的参数信息,可以称为指定前置操作的入参信息,通过数据变更请求所携带的参数信息,在执行指定前置操作后,可以得到第一执行结果,也就是,将入参信息作为输入内容,得到第一执行结果。
另外,本领域技术人员可以理解的是,在软件业,AOP为通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术,也就是,在程序运行期间,动态的将代码切入到指定位置运行的技术,其可以用于将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。在本发明实施例中,针对面向切面编程AOP注解,可以为前置通知类型的注解,该注解可以定义数据库操作类型、数据解析类、数据库接口类;其中,数据库操作类型可以是插入操作、修改操作、删除操作,数据库接口类可以是从数据库中获取所需数据的mapper类(通过该mapper类可以从数据库获取数据,即执行SQL语句),数据库解析类可以解析数据的主键、数据表名称和操作类型等参数信息,并整合为统一的数据结构;其中,数据库操作类型和数据库接口类需要在使用注解时指定,数据解析类可以是预先设置好的通用解析类或是依据用户需求自定义的解析类。
可以理解的是,当接收到针对目标数据库的数据变更请求时,在目标代码中添加面向切面编程AOP注解,可以通过反射原理,对注解方法的入参以及数据封装类进行解析,并整合为统一的数据结构。例如,现有一张包括学生信息的班级信息表,当接收到删除班级信息表中一特定学生信息的请求时,向响应于该请求的目标代码中添加面向切面编程AOP注解,在执行删除操作前,获取待操作的班级信息表中特定学生信息和删除操作类型。
针对监听事件代码,在本发明实施例中,该代码可以包括继承了spring中ApplicationEvent父类的监听类,该监听类可以存放数据库接口类和数据入参;需要说明的是,数据库接口类可以是mapper类,数据入参可以用于作为获取所需数据的方法的输入内容。因此,当接收到针对目标数据库的数据变更请求时,在目标代码中添加监听事件代码,可以通过spring进行监听事件的监听,当监听到请求中有事件时,触发对入参和数据封装类的解析,并整合为统一的数据结构,也就是,触发指定前置操作的执行。需要说明的是,应用了监听事件代码的方法可以对多张数据表进行操作。例如,现有三张包括学生信息的班级信息表A、B和C,当接收到删除班级信息表A中a学生信息、班级信息表B中b学生信息和班级信息表C中c学生信息的请求时,向响应于该请求的目标代码中添加监听事件代码,在执行删除操作前,获取待操作的班级信息表A中a学生信息、班级信息表B中b学生信息和班级信息表C中c学生信息以及删除操作类型。
示例性的,本发明实施例提供的面向切面编程AOP注解可以命名为@EnableModifyLog注解,整合出的统一数据结构可以命名为OperateInfo。
需要强调的是,为了方案清楚以及布局清晰,后续结合另一实施例,对指定前置操作的执行过程的具体实现方式进行介绍。
S102:在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
该指定后置操作,用于获取目标数据库中的变更后的数据内容。
可以理解的是,在针对目标数据库执行数据变更请求的响应后,本发明实施例提供的针对数据变更的记录方法中,可以通过过滤器拦截数据变更请求对应的反馈结果,并在拦截到时,触发指定后置操作的执行;其中,反馈结果为用于向请求方发送的针对数据变更请求的请求结果,例如:是否变更成功,或者,变更后的结果内容,等等;并且,所谓的对数据变更请求进行响应,可以为:将数据变更请求转换为用于进行目标数据库变更的变更命令,从而基于该变更命令对目标数据库进行操作。另外,在具体应用中,示例性的,上述的过滤器可以为Spring过滤器,也就是,Spring框架提供的过滤器,该Spring框架是一个开放源代码的J2EE应用程序框架,当然并不局限于Spring过滤器。
另外,需要说明的是,在触发指定后置操作的执行后,可以将反馈结果反馈给请求方。
需要强调的是,为了方案清楚以及布局清晰,后续结合另一实施例,对指定后置操作的执行过程的具体实现方式进行介绍。
S103:对比所述第一执行结果和所述第二执行结果,得到差异结果。
可以理解的是,对比所述第一执行结果和所述第二执行结果,也就是,将待操作数据对象对应的变更前的数据对象与待操作数据对象对应的变更后的数据对象做对比。
示例性的,在一种实现方式中,所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
针对第一执行结果的封装和第二执行结果的封装,可以是指定前置操作过程中实现的封装以及指定后置操作的执行过程中实现的封装。示例性的,通过封装后的第一执行结果和第二执行结果可以为通用数据结构OperateInfo,该数据结构中存放数据库的主键(key),表名称,数据封装对象,以及操作类型等信息。
可以理解的是,第一执行结果可以通过预先设定的通用解析类将数据变更请求所表征的待操作数据对象以及数据变更请求对应的操作类型封装进预先设定的数据结构所得到;类似的,第二执行结果也可以通过预先设定的通用解析类将在响应数据变更请求时所进行变更的数据对象以及数据变更请求对应的操作类型封装进预先设定的数据结构所得到。
S104:存储关于所述差异结果所表征的数据变更的记录信息。
可以理解的是,存储的记录信息可以包括被操作数据表名称、被操作字段、字段当前值、操作类型;而记录信息可以存储到一个预设的变更记录表中。
在记录信息能够表示出:在响应数据变更请求前后,目标数据库中的数据所发生的变更的前提下,本发明实施例并不对记录信息的具体形态进行限定。
基于上述方案可知,由于对目标代码的指定添加处理是在目标代码中添加面向切面编程AOP注解或添加监听事件代码,因此,为了获取待操作数据对象对应的变更前后的数据对象以及数据变更请求对应的操作类型,本方案中,目标代码只被添加了注解或少量代码。可见,本方案,在实现记录数据库中数据的变更时,并没有对目标代码有过多侵入修改。
基于此,应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。
另外,现有技术中,为了实现针对数据库的数据变更的记录,针对不同的数据库表结构,需要编写不同的逻辑代码;而本方案在目标代码中添加面向切面编程AOP注解或添加监听事件代码,可以面向不同的数据库表结构,因此,针对不同的数据库表结构,可以无需编写不同的逻辑代码,以实现记录数据库中数据的变更。可见,本方案具有通用性,应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,不区分数据库表结构。
可选的,在另一实施例中,如图2所示,在图1所示的针对数据变更的记录方法基础上,步骤S101,触发指定前置操作的执行,得到第一执行结果,之后,还可以包括步骤S201:
S201:在得到第一执行结果后,将所述第一执行结果存储至所述数据变更请求对应的指定内存区域。
其中,每一数据变更请求可以与所对应的指定内存区域具有唯一对应性。
可以理解的是,在一种实现方式中,不同的数据变更请求可以被分派到不同的独立线程,而基于不同请求,可以得到各个第一执行结果;在得到各个第一执行结果后,可以将各个第一执行结果中的数据存储到不同的独立线程的工作内存中。该种实现方式中,针对每一数据变更请求,该数据变更请求所被分配的独立线程的工作内存,可以作为该数据变更请求对应的指定内存区域。这样,可以通过分析指定内存区域是否非空,来确定是否触发拦截操作以及指定后置操作。
例如,当接收到两个针对数据库进行操作的请求A和请求B时,可以给请求A分派至独立线程Thread-A,给请求B分派至独立请求Thread-B;其中,线程Thread-A有其内存空间mem-a,线程Thread-B有其内存空间mem-b;在得到响应于请求A的第一执行结果a以及响应于请求B的第一执行结果b后,可以将第一执行结果a的数据存储到内存空间mem-a中,第一执行结果b的数据存储到内存空间mem-b中。
而在另一实现方式中,在接收到数据变更请求后,可以为所接收到的数据变更请求分配唯一的内存区域,这样也可以使得每一数据变更请求对应有一指定内存区域,从而通过分析指定内存区域是否非空,来确定是否触发拦截操作以及指定后置操作。
相应的,上述的步骤S102之前,还可以包括步骤S202:
S202:在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果。
可以理解的是,可以先对指定内存区域判空,也就是判断指定内存中是否存在第一执行结果;并在指定内存区域为非空的情况下,通过预设过滤器进行拦截操作,从而在拦截到时,表征针对数据变更请求的响应已经完成,则触发指定后置操作。
可选的,步骤S103,对比所述第一执行结果和所述第二执行结果,得到差异结果,可以包括步骤S203;
S203:从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
可以理解的是,基于上述步骤,可以在确定指定内存区域中存在第一执行结果的情况下,从指定内存区域获取第一执行结果,以实现将其与第二执行结果对比,得到差异结果。需要说明的是,在接收到多个针对数据库操作的请求后,各个第一执行结果中的数据存储到不同的独立线程的工作内存中;因此,在从指定内存区域获取第一执行结果时,可以从不同的独立线程的工作内存中,获取对应的第一执行结果。例如,线程Thread-A的内存空间mem-a中存储了第一执行结果a的数据,线程Thread-B的内存空间mem-b存储了第一执行结果b的数据;当需要获取第一执行结果时,可以从内存空间mem-a中获取的第一执行结果a,从内存空间mem-b中获取的第一执行结果b。
本发明实施例中,可以将第一执行结果存储到指定内存区域,并对指定内存区域判空,在指定内存区域非空的情况下,才进行后续拦截反馈结果的操作,这样可以确保指定后置操作的执行的前提下是已经执行指定前置操作,也就是,保证指定前置操作和指定后置操作先后被执行,从而得到数据库中的数据变更的情况。
另外,本发明实施例可以在接收到多个针对数据库操作请求后,每一请求唯一对应有指定内存区域,响应于请求的第一执行结果可以存放在对应的指定内存区域;因此,本发明实施例提供的方案可以确保响应于多请求的不同第一执行结果的数据存储在不同内存空间,保障数据不会混乱。
可选的,在另一实施例中,如图3所示,上述的指定前置操作的执行过程,可以包括步骤S3010-步骤S3012:
S3010,识别所述数据变更请求的类型;
S3011:若所述数据变更请求为修改类型或删除类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型,得到第一执行结果。
可以理解的是,若数据变更请求为修改类型或删除类型的请求,那么,数据变更请求所针对待操作对象的数据内容已经记录在目标数据库中。因此,可以从数据变更请求中提取所携带的参数信息,以所提取到的参数信息,作为入参信息,从所述目标数据库中读取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型,得到第一执行结果。
S3012:若所述数据变更请求为增加类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第一执行结果。
可以理解的是,若数据变更请求为增加类型的请求,由于在对数据库中数据做增加操作前,数据库中不会有数据变化,因此可以确定数据对象为空,从而确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第一执行结果。
本实施例,通过对数据变更类型的区分,使得指定前置操作可以针对各种类型的数据变更请求,来获取目标数据库中的变更前的内容,从而得到第一执行结果。
可选的,在另一实施例中,如图4所示,上述的指定后置操作的执行过程,可以包括步骤S4010-步骤S4012:
S4010,识别所述数据变更请求的类型;
S4011:若所述数据变更请求为修改类型或增加类型的请求,基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型,得到第二执行结果。
可以理解的是,若数据变更请求为修改类型或增加类型的请求,由于在对数据变更请求进行响应后,目标数据库中的会存在该变更后的数据对象,因此,可以从数据变更请求中提取所携带的参数信息,以所提取到的参数信息,作为入参信息,从所述目标数据库中读取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型,得到第二执行结果。
S4012:若所述数据变更请求为删除类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第二执行结果。
可以理解的是,若数据变更请求为删除类型的请求,由于在对数据变更请求进行响应后,目标数据库中将不存在待操作数据对象,因此,确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第二执行结果。
本实施例,通过对数据变更类型的区分,使得指定后置操作可以针对各种类型的数据变更请求,采用不同的方式,来获取目标数据库中的变更后的内容,从而得到第二执行结果。
为了更好地理解本发明实施例所提供的一种针对数据变更的记录方法,下面结合另一示例进行介绍。
图5为本发明实施例提供的一种针对数据变更的记录方法的流程示意图,如图5所示,该方法可以包括如下步骤:
S501,获取变更数据库中数据的目标请求。
其中,该目标请求即为上述的一数据变更请求。
本实施例中,服务器可以接收客户端发送的请求,该请求为用于指示变更数据库中数据的请求。
S502,在用于实现对目标请求的响应的程序代码中预先添加有AOP注解或监听事件代码的情况下,拦截该目标请求到前置解析器,以通过前置解析器将入参信息转换为通用数据结构OperateInfo;
其中,拦截该目标请求到前置解析器,以通过前置解析器将入参信息转换为通用数据结构OperateInfo,对应于上述实施例中的触发指定前置操作的执行;该通用数据结构OperateInfo作为上述的第一执行结果。
其中,所述OperateInfo数据结构存放了数据库的key、表名称、数据封装对象和操作类型。示例性的,添加AOP注解可以为添加@EnableModifyLog注解。其中,所述@EnableModifyLog注解为定义了数据库增删改操作的操作类型、数据解析类和数据库接口类的注解,所述监听代码包括实现监听增删改操作的类。
S503,将所述OperateInfo数据结构存放到指定内存区域中。
本实施例中,为了后续步骤,现将OperateInfo数据结构存放到线程内存中,也就是把数据结构中的数据存放到指定内存区域中。
S504,将所述目标请求送入service层进行业务流程,即针对目标数据进行所述目标请求的响应,并向请求方发送目标请求对应的反馈结果。
本实施例中,电子设备以先在service层实现添加、修改和删除的业务逻辑,即实现添加目标代码,然后,通过数据库接口类(mapper类)对目标数据库中的数据进行添加、修改和删除的处理。
S505,在所述业务流程执行完毕后,使用spring过滤器对指定内存区域中数据判空;
S506,在所述指定内存区域中数据非空的情况下,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,触发后置解析器获取最新的数据。
本实施例中,在线程内存中数据非空的情况下,服务器可以触发后置解析器,以通过后置解析器利用入参信息,获取最新的数据。也就是,触发执行后置操作的执行,得到第二执行结果。
S507,将所述最新的数据与所述OperateInfo数据结构中的数据进行对比,得到数据差异。
S508,将所述数据差异转换为记录数据生命周期变更的表结构数据,存入表中。
本实施例中,电子设备可以将表结构数据通过数据库接口类(mapper类)存储到数据库中。
可见,本方案中,对已经开发完成的运行于电子设备中的数据处理端,为了实现数据变更的记录,可以进行无代码侵入或者少量侵入,具体而言,通过使用Spring过滤器、AOP和监听器方式,对三层架构中的service层进行增强,使得在对数据插入、修改、删除操作前对数据库中原数据进行查询,随后在数据入库操作完成后再次对操作字段进行查询,对比两次字段的差异。在具体应用中,如果业务比较复杂的情况下,可以使用监听者模式进行少量的代码侵入。
基于上述方案可知,由于对目标代码的指定添加处理是在目标代码中添加面向切面编程AOP注解或添加监听事件代码,因此,为了获取待操作数据对象对应的变更前后的数据对象以及数据变更请求对应的操作类型,本方案中,目标代码只被添加了注解或少量代码。可见,本方案,在实现记录数据库中数据的变更时,并没有对目标代码有过多侵入修改。
基于此,应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。
另外,现有技术中,为了实现针对数据库的数据变更的记录,针对不同的数据库表结构,需要编写不同的逻辑代码;而本方案在目标代码中添加面向切面编程AOP注解或添加监听事件代码,可以面向不同的数据库表结构,因此,针对不同的数据库表结构,可以无需编写不同的逻辑代码,以实现记录数据库中数据的变更。可见,本方案具有通用性,应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,不区分数据库表结构。
为了方便理解方案,下面结合三个具体示例,对本发明实施例所提供的方法进行说明。
例如,针对数据库中的数据变更,通过预定的变更记录表来进行记录,为了方便在变更记录表中进行内容记录,数据变更请求所对应的操作类型通过字段change_type(变更操作种类)来表示,并且,对于将操作类型insert而言,记为“1”,这样,通过“1”表示发生了插入类型的数据变更;
如图6(a)所示,有一张包括科目信息的学校信息表,id为数据条目,class_name为科目名称,school为学校名称,现在需要插入id为23的数据条目;当接收到插入数据的数据变更请求时,通过预先向响应于该请求的目标代码中添加面向切面编程AOP注解,使得在执行插入操作前,基于上述请求所携带的参数信息,从学校信息表中读取上述请求所表征的待操作数据对象的条目内容以及上述请求对应的操作类型insert,得到第一执行结果;在修改操作执行后,学校信息表已如图6(b)更新完毕,这时可以通过spring过滤器拦截针对该请求的反馈结果,以获取在响应上述请求时所进行变更的数据对象的条目内容以及上述请求对应的操作类型insert,得到第二执行结果;对比第一执行结果和第二执行结果,得到差异结果;将关于差异结果所表征的数据变更的记录信息存储进该变更记录表中;其中,图6(c)为历史状态表,各个字段的含义为:record_id为记录数据条目,table_name为字段名称,change为具体变更操作,remark为备注内容,create_time为创建时间,create_user为创建用户,该历史状态表记录了发生过插入变更,该历史状态表为一种示例性的变更记录表;图6(d)为动态变化表,column_code为数据表中的列字段名,column_name为用于注释的列名称,old_value为变更前的值,new_value为变更后的值,动态变化表记录了具体的插入变化内容,该动态变化表为另一种示例性的变更记录表;其中,column_code可以是学校信息表中的列字段名,例如id、className、school;其中,图6(c)和图6(d)中其他的字段的含义可以如下:update_time为更新时间,update_user为更新用户信息,extend_field1可以为扩展字段。
又例如,针对数据库中的数据变更,通过预定的变更记录表来进行记录,为了方便在变更记录表中进行内容记录,数据变更请求所对应的操作类型通过字段change_type(变更操作种类)来表示,并且,对于将操作类型update而言,记为“2”,这样,通过“2”表示发生了修改类型的数据变更;
如图7(a)所示,有一张包括科目信息的学校信息表,id为数据条目,class_name为科目名称,school为学校名称,现在需要将科目信息中“物理”修改为“数学”,那么发送的请求可以是更新class_name中的字段;当接收到修改字段的数据变更请求时,通过预先向响应于该请求的目标代码中添加面向切面编程AOP注解,使得在执行修改操作前,基于上述请求所携带的参数信息,从学校信息表中读取上述请求所表征的待操作数据对象的条目内容以及上述请求对应的操作类型update,得到第一执行结果;在修改操作执行后,学校信息表已如图7(b)更新完毕,这时可以通过spring过滤器拦截针对该请求的反馈结果,以获取在响应上述请求时所进行变更的数据对象的条目内容以及上述请求对应的操作类型update,得到第二执行结果;对比第一执行结果和第二执行结果,得到差异结果;将关于差异结果所表征的数据变更的记录信息存储进该变更记录表中;其中,图7(c)为历史状态表,各个字段的含义为:record_id为记录数据条目,table_name为字段名称,change为具体变更操作,remark为备注内容,create_time为创建时间,create_user为创建用户,历史状态表记录了发生过修改变更,该历史状态表为一种示例性的变更记录表;图7(d)为动态变化表,column_code为数据表中的列字段名,column_name为用于注释的列名称,old_value为变更前的值,new_value为变更后的值,动态变化表记录了具体的修改变化内容,该动态变化表为另一种示例性的变更记录表;其中,column_code可以是学校信息表中的列字段名,例如id、className、school;其中,图7(c)和图7(d)中其他的字段的含义可以如下:update_time为更新时间,update_user为更新用户信息,extend_field1可以为扩展字段。
又例如,针对数据库中的数据变更,通过预定的变更记录表来进行记录,为了方便在变更记录表中进行内容记录,数据变更请求所对应的操作类型通过字段change_type(变更操作种类)来表示,并且,对于将操作类型delete而言,记为“3”,这样,通过“3”表示发生了删除类型的数据变更;
如图8(a)所示,有一张包括科目信息的学校信息表,id为数据条目,class_name为科目名称,school为学校名称,现在需要将id为23的数据条目删除;当接收到删除数据的数据变更请求时,通过预先向响应于该请求的目标代码中添加面向切面编程AOP注解,使得在执行删除操作前,基于上述请求所携带的参数信息,从学校信息表中读取上述请求所表征的待操作数据对象的条目内容以及上述请求对应的操作类型delete,得到第一执行结果;在修改操作执行后,学校信息表已如图8(b)更新完毕,这时可以通过spring过滤器拦截针对该请求的反馈结果,以获取在响应上述请求时所进行变更的数据对象的条目内容以及上述请求对应的操作类型delete,得到第二执行结果;对比第一执行结果和第二执行结果,得到差异结果;将关于差异结果所表征的数据变更的记录信息存储进该变更记录表中;其中,图8(c)为历史状态表,各个字段的含义为:record_id为记录数据条目,table_name为字段名称,change为具体变更操作,remark为备注内容,create_time为创建时间,create_user为创建用户,历史状态表记录了发生过删除变更,该历史状态表为一种示例性的变更记录表;图8(d)为动态变化表,column_code为数据表中各字段,column_name为数据表中各字段的名称,old_value为变更前的值,new_value为变更后的值,动态变化表记录了具体的删除变化内容,该动态变化表为另一种示例性的变更记录表;其中,column_code可以是学校信息表中的列字段名,例如id、className、school;其中,图8(c)和图8(d)中其他的字段的含义可以如下:update_time为更新时间,update_user为更新用户信息,extend_field1可以为扩展字段。
需要说明的是,在上述具体示例中,当接受到对目标数据库中单个数据表数据做变更操作的请求时,可以向响应于该请求的目标代码中添加面向切面编程AOP注解;而当接受到复杂的变更操作请求时,可以向响应于该请求的目标代码中添加预设的监听事件代码;其中,复杂的变更操作请求可以是对目标数据库中多张数据表数据做变更操作的请求。
基于上述具体示例可知,可以依据具体的操作类型来确定第一执行结果和第二执行结果中的内容,不管上述内容是否为空都会进行对比,得到差异结果所表征数据变更的记录信息。因此应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对程序代码的侵入修改。
图9为本发明实施例提供的一种针对数据变更的记录装置的结构示意图,如图9所示,该装置可以包括如下模块:
第一触发模块910,用于当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
第二触发模块920,用于在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比模块930,用于对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储模块940,用于存储关于所述差异结果所表征的数据变更的记录信息。
第一触发模块910中所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
第二触发模块920中所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
第一触发模块910,还用于在触发指定前置操作的执行,得到第一执行结果之后,
将所述第一执行结果存储至指定内存区域;
第二触发模块920,还用于若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果之前,
在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果。
对比模块930,用于从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
第一触发模块910中所述指定前置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或删除类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型,得到第一执行结果;
若所述数据变更请求为增加类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第一执行结果。
第二触发模块920中所述指定后置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或增加类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型,得到第二执行结果;
若所述数据变更请求为删除类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第二执行结果。
基于上述方案可知,由于对目标代码的指定添加处理是在目标代码中添加面向切面编程AOP注解或添加监听事件代码,因此,为了获取待操作数据对象对应的变更前后的数据对象以及数据变更请求对应的操作类型,本方案中,目标代码只被添加了注解或少量代码。可见,本方案,在实现记录数据库中数据的变更时,并没有对目标代码有过多侵入修改。
基于此,应用本发明实施例提供的方案,便可以在记录数据库中数据的变更时,减少对业务代码的侵入修改。
另外,现有技术中,为了实现针对数据库的数据变更的记录,针对不同的数据库表结构,需要编写不同的逻辑代码;而本方案在目标代码中添加面向切面编程AOP注解或添加监听事件代码,可以面向不同的数据库表结构,因此,针对不同的数据库表结构,可以无需编写不同的逻辑代码,以实现记录数据库中数据的变更。可见,本方案具有通用性,应用本发明实施例提供的方案,可以在记录数据库中数据的变更时,不区分数据库表结构。
本发明实施例还提供了一种电子设备,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,
存储器1003,用于存放计算机程序;
处理器1001,用于执行存储器1003上所存放的程序时,实现上述针对数据变更的记录方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一针对数据变更的记录方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一针对数据变更的记录方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种针对数据变更的记录方法,其特征在于,所述方法包括:
当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储关于所述差异结果所表征的数据变更的记录信息。
2.根据权利要求1所述的方法,其特征在于,所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
3.根据权利要求1所述的方法,其特征在于,所述触发指定前置操作的执行,得到第一执行结果之后,所述方法还包括:
在得到第一执行结果后,将所述第一执行结果存储至所述数据变更请求对应的指定内存区域;
所述若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果之前,还包括:
在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果;
所述对比所述第一执行结果和所述第二执行结果,得到差异结果,包括:从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述指定前置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或删除类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型,得到第一执行结果;
若所述数据变更请求为增加类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第一执行结果。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述指定后置操作的执行过程,包括:
识别所述数据变更请求的类型;
若所述数据变更请求为修改类型或增加类型的请求,则基于所述数据变更请求所携带的参数信息,从所述目标数据库中读取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型,得到第二执行结果;
若所述数据变更请求为删除类型的请求,则确定用于表征数据对象为空的内容以及所述数据变更请求对应的操作类型,得到第二执行结果。
6.一种针对数据变更的记录装置,其特征在于,所述装置包括:
第一触发模块,用于当接收到针对目标数据库的数据变更请求时,触发指定前置操作的执行,得到第一执行结果;其中,所述指定前置操作为通过对目标代码进行指定添加处理以实现触发的、针对所述数据变更请求的响应的前置操作,且用于获取所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;所述目标代码为实现对所述数据变更请求进行响应的程序代码;所述指定添加处理为添加面向切面编程AOP注解或添加监听事件代码;
第二触发模块,用于在针对所述目标数据库进行所述数据变更请求的响应后,若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果;其中,所述指定后置操作用于获取在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型;
对比模块,用于对比所述第一执行结果和所述第二执行结果,得到差异结果;
存储模块,用于存储关于所述差异结果所表征的数据变更的记录信息。
7.根据权利要求6所述的装置,其特征在于,所述第一执行结果为被封装为预先设定的数据结构的第一数据内容;所述第一数据内容包括所述数据变更请求所表征的待操作数据对象以及所述数据变更请求对应的操作类型;
所述第二执行结果为被封装为预先设定的数据结构的第二数据内容;其中,第二数据内容包括在响应所述数据变更请求时所进行变更的数据对象以及所述数据变更请求对应的操作类型。
8.根据权利要求6所述的装置,其特征在于,所述第一触发模块,还用于在触发指定前置操作的执行,得到第一执行结果之后,将所述第一执行结果存储至所述数据变更请求对应的指定内存区域;
所述第二触发模块,还用于若通过预设过滤器拦截到所述数据变更请求对应的反馈结果,则触发指定后置操作的执行,得到第二执行结果之前,
在所述指定内存区域为非空的情况下,通过预设过滤器拦截所述数据变更请求对应的反馈结果;
所述对比模块,用于从所述指定内存区域获取所述第一执行结果,对比所述第一执行结果和所述第二执行结果,得到差异结果。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
CN202210953973.1A 2022-08-10 2022-08-10 针对数据变更的记录方法、装置、电子设备及存储介质 Pending CN115357590A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210953973.1A CN115357590A (zh) 2022-08-10 2022-08-10 针对数据变更的记录方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210953973.1A CN115357590A (zh) 2022-08-10 2022-08-10 针对数据变更的记录方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115357590A true CN115357590A (zh) 2022-11-18

Family

ID=84033241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210953973.1A Pending CN115357590A (zh) 2022-08-10 2022-08-10 针对数据变更的记录方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115357590A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115544049A (zh) * 2022-11-29 2022-12-30 明度智云(浙江)科技有限公司 数据处理方法、电子设备及计算机可读存储介质
CN115994151A (zh) * 2023-03-24 2023-04-21 北京飞轮数据科技有限公司 数据请求变更方法、装置、电子设备和计算机可读介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006127088A (ja) * 2004-10-28 2006-05-18 Toppan Printing Co Ltd データ変更履歴記録システム及び方法
CN110659297A (zh) * 2019-08-13 2020-01-07 上海陆家嘴国际金融资产交易市场股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN114661693A (zh) * 2022-02-21 2022-06-24 哪吒港航智慧科技(上海)有限公司 数据审计的实现方法、存储介质、电子设备及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006127088A (ja) * 2004-10-28 2006-05-18 Toppan Printing Co Ltd データ変更履歴記録システム及び方法
CN110659297A (zh) * 2019-08-13 2020-01-07 上海陆家嘴国际金融资产交易市场股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN114661693A (zh) * 2022-02-21 2022-06-24 哪吒港航智慧科技(上海)有限公司 数据审计的实现方法、存储介质、电子设备及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
任治斌;刘静;王敏;: "触发器在大型信息管理系统开发中的应用", 内蒙古师范大学学报(自然科学汉文版), no. 05, pages 63 - 66 *
崔恒香 等: ""基于隔离网闸的异构数据库同步技术研究与实现"", 《软件工程》, pages 10 - 13 *
罗剑: "《Android应用开发教程 微课版》", 武汉:华中科技大学出版社, pages: 58 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115544049A (zh) * 2022-11-29 2022-12-30 明度智云(浙江)科技有限公司 数据处理方法、电子设备及计算机可读存储介质
CN115544049B (zh) * 2022-11-29 2023-03-21 明度智云(浙江)科技有限公司 数据处理方法、电子设备及计算机可读存储介质
CN115994151A (zh) * 2023-03-24 2023-04-21 北京飞轮数据科技有限公司 数据请求变更方法、装置、电子设备和计算机可读介质

Similar Documents

Publication Publication Date Title
CN111563368B (zh) 报表生成方法、装置、计算机设备和存储介质
NL2013306B1 (en) Template System For Custom Document Generation.
CN115357590A (zh) 针对数据变更的记录方法、装置、电子设备及存储介质
CN110209684A (zh) 数据库ddl变更操作的跟踪方法、装置、系统及介质
CN108563694B (zh) 对逻辑删除的sql执行方法、装置、计算机设备和存储介质
US20100312592A1 (en) Confirming enforcement of business rules specified in a data access tier of a multi-tier application
US11487742B2 (en) Consistency checks between database systems
WO2023029275A1 (zh) 数据关联分析方法、装置、计算机设备和存储介质
US20220229657A1 (en) Extensible resource compliance management
US20220245125A1 (en) Dataset multiplexer for data processing system
CN111611276A (zh) 数据查询方法、装置及存储介质
CN113010494A (zh) 一种数据库审计方法、装置及数据库代理服务器
US20230289238A1 (en) Service Instance Deployment Method and Apparatus, Electronic Device, and Storage Medium
US10423618B2 (en) Method and system for enforcing user policy on database records
CN113918149A (zh) 接口开发方法、装置、计算机设备和存储介质
US20230289331A1 (en) Model generation service for data retrieval
US11256557B1 (en) Efficient processing of rule-based computing workflows
CN113010208B (zh) 一种版本信息的生成方法、装置、设备及存储介质
CN116360931A (zh) 一种链路追踪方法、装置、系统及存储介质
CN115544007A (zh) 标签预处理方法、装置、计算机设备和存储介质
US20160292076A1 (en) Apparatus, program, and method for updating cache memory
CN114385722A (zh) 接口属性的一致性校验方法、装置、电子设备和存储介质
US20070156775A1 (en) Metadata transformation in copy and paste scenarios between heterogeneous applications
US11704094B2 (en) Data integrity analysis tool
CN112100249B (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