本申请涉及数据版本控制,尤其涉及一种基于日志的数据版本控制方法及装置。
背景技术:
1、数据版本是记录数据各个可选状态的快照,版本管理的任务就是对对象的历史演变过程进行记录和维护,根据实际应用背景选择合适的版本间的拓扑结构。数据版本控制是一种管理和跟踪数据变化的方法,它能够记录数据的历史状态,并允许用户恢复到以前的版本。
2、目前对于数据版本控制有多种方案,但大多集中在数据库表结构的版本控制,并且需要预先编写每个版本的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、可选地,所述方法还包括:
25、下载所述数据库脚本;
26、在开发者所设置的环境下执行所述数据库脚本。
27、第二方面,本申请提供了一种基于日志的数据版本控制装置,该装置包括:实体类标记模块、日志确定模块、版本标记模块和脚本确定模块;
28、所述实体类标记模块,用于对目标代码中的实体类进行标记并保存,所述目标代码为目标系统当前数据版本对应的代码;
29、所述日志确定模块,用于记录对所述实体类的数据操作,得到数据操作日志;
30、所述版本标记模块,用于根据所述数据操作日志提取目标数据表,以便对所述目标数据表进行版本标记;
31、所述脚本确定模块,用于根据版本标记后的目标数据表,得到增量脚本或回退脚本,所述增量脚本用于将所述目标系统当前数据版本进行版本升级,所述回退脚本用于将所述目标系统当前数据版本进行版本回退。
32、可选地,第一接口设置模块和第二接口设置模块;
33、所述第一接口设置模块,用于设置第一接口来封装数据库操作,以便后续所述目标系统中的数据操作继承所述第一接口;
34、所述第二接口设置模块,用于设置第二接口,所述第二接口用于继承所述第一接口以实现对所述实体类进行的数据操作。
35、可选地,所述日志确定模块具体用于:通过拦截器得到通过所述第二接口的数据操作,确定所述数据操作对应的数据对象和操作类型,根据所述数据对象和所述操作类型,得到数据操作日志。
36、本申请提供了一种基于日志的数据版本控制方法及装置。该方法包括:先对目标代码中的实体类进行标记并保存,目标代码为目标系统当前数据版本对应的代码。然后,记录对实体类的数据操作,得到数据操作日志。再根据数据操作日志提取目标数据表,以便对目标数据表进行版本标记。最后,根据版本标记后的目标数据表,得到增量脚本或回退脚本,以实现目标系统当前数据版本的版本升级或版本回退。这样,通过数据操作日志选中需要的目标数据表进行操作,标记版本之后可以导出该版本对应的脚本,使得用户可以自定义需要版本控制的表格,并确定对应的脚本实现版本控制,无需事先准备每个版本的控制数据,就可以实现版本的更新和回退。如此,可以增强数据版本控制的灵活性,有效满足了用户对于数据版本的多种控制需求。
1.一种基于日志的数据版本控制方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述记录对所述实体类的数据操作前,还包括:
3.根据权利要求2所述的方法,其特征在于,所述记录对所述实体类的数据操作,得到数据操作日志,包括:
4.根据权利要求1所述的方法,其特征在于,所述对目标代码中的实体类进行标记并保存,包括:
5.根据权利要求1所述的方法,其特征在于,所述根据版本标记后的目标数据表,得到增量脚本或回退脚本,包括:
6.根据权利要求5所述的方法,其特征在于,若所述目标版本数据为更新后的版本数据,则所述数据库脚本为所述增量脚本,以实现数据版本的升级;
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
8.一种基于日志的数据版本控制装置,其特征在于,所述装置包括:实体类标记模块、日志确定模块、版本标记模块和脚本确定模块;
9.根据权利要求8所述的装置,其特征在于,所述装置包括:第一接口设置模块和第二接口设置模块;
10.根据权利要求9所述的装置,其特征在于,所述日志确定模块具体用于:通过拦截器得到通过所述第二接口的数据操作,确定所述数据操作对应的数据对象和操作类型,根据所述数据对象和所述操作类型,得到数据操作日志。