基于数据模型层的数据增量更新方法、装置及计算机设备与流程

文档序号:24070298发布日期:2021-02-26 14:53阅读:105来源:国知局
基于数据模型层的数据增量更新方法、装置及计算机设备与流程

[0001]
本申请涉及互联网技术领域,尤其涉及一种基于数据模型层的数据增量更新方法、装置及计算机设备。


背景技术:

[0002]
随着计算机技术的发展,很多高效、实用的编程语言应运而被开发出来,比如,python语言,go语言(也称golang语言)等。对于不同的编程语言,需要构建对应的数据模型层用于支持关系型数据库或非关系型数据库,比如mysql数据库或redis数据库的数据存储、数据操作以及数据约束。数据模型层,通常也叫data model,或者数据模型层,可以认为是用户端的应用数据与数据库的持久化数据之间的交换媒介。其中,用户端对数据库中的目标数据进行数据操作时,数据库先将目标数据备份到数据模型层;然后数据模型层根据用户的数据操作指令对备份的目标数据执行对应的数据操作,得到变更后的目标数据;最后,数据模型层将变更后的目标数据存储到数据库中替换原有的目标数据。
[0003]
然而,现有的一些编程语言,比如go语言,其对应的数据模型层的执行逻辑需要手动管理和更新,因此,并不支持对于数据更新的自动化处理。虽然也有第三方提供的orm(object relational mapping,对象关系映射)工具,能够将程序中的对象自动持久化到数据库中,但其执行效率并不高,而且不能提供数据增量更新的功能。


技术实现要素:

[0004]
本申请提出一种基于数据模型层的数据增量更新方法、装置及计算机设备,能够解决现有技术中部分编程语言对应的数据模型层写入数据库时不支持数据增量更新的问题。
[0005]
首先,为实现上述目的,本申请提供一种基于数据模型层的数据增量更新方法,所述方法包括:
[0006]
根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;监测所述数据模型层是否执行了数据操作;当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;根据所述操作切片对数据库执行数据增量更新。
[0007]
在一个例子中,所述结构体格式中包括结构体标签和属性名称,所述根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值包括:根据目标类型结构体格式中的结构体标签对应的字符串特征与所述数据模型层中数据进行比对,查找出包括所述字符串特征的结构体作为所述目标类型结构体格式对应的结构体,所述目标类型结构体格式为所有结构体格式中的任一类型结构体格式;根据每一类型的结构体的属性名称对应的字段特征分别查找出对应结构体类型的所有结构体的属性,并获取属
性对应的属性初始值。
[0008]
在一个例子中,所述结构体的类型包括记录型结构体,表型结构体和普通型结构体。
[0009]
在一个例子中,所述监测所述数据模型层是否执行了数据操作包括:监测所述数据模型层是否触发调用了任一类型结构体的数据操作函数;当所述数据模型层是否触发调用了任一类型结构体的数据操作函数时,进一步监测所述数据操作函数是否执行成功;当所述数据操作函数执行成功时,则判断所述数据模型层执行了数据操作。
[0010]
在一个例子中,所述查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合包括:当所述数据模型层执行了数据操作时,查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的属性的当前属性值;分别比较每一个所述目标结构体对应的属性的当前属性值和属性初始值是否相同;当所述目标结构体对应的属性的所述当前属性值与所述属性初始值不相同时,则将所述目标结构体记录为变更结构体,将所述目标结构体对应的属性的所述当前属性值记录为属性变更值。
[0011]
在一个例子中,所述当所述数据模型层执行了数据操作时,查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的属性的当前属性值包括:在所述数据模型层中预先建立管理型结构体;当所述数据模型层执行了数据操作时,触发所述管理型结构体执行所述查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的属性的当前属性值的步骤。
[0012]
在一个例子中,所述根据所述操作切片对数据库执行数据增量更新包括:从所述操作切片中获取第一结构体的第一结构体标签,其中,所述第一结构体为所述操作切片中的所有结构体中的任一结构体;从所述数据库中拉取包括所述第一结构体标签的第二结构体;将所述第一结构体中的所有属性的属性变更至替换写入到所述数据库中所述第二结构体的对应属性中。
[0013]
在一个例子中,所述将所述第一结构体中的所有属性的属性变更至替换写入到所述数据库中所述第二结构体的对应属性中包括:查找出所述第一结构体标签对应的变更函数或数据库操作函数;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性值,其中,所述目标属性为所述第一结构体的任一属性。
[0014]
在一个例子中,当所述第一结构体中的目标属性的属性变更值为非内置数据类型时,从预设的描述函数集中查找出所述第一结构体对应的目标描述函数,其中,所述描述函数集预先设置在所述数据模型层;通过所述目标描述函数对所述目标属性的属性变更值进行序列化,得到所述目标属性的属性变更表征值;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更表征值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性表征值。
[0015]
此外,为实现上述目的,本申请还提供一种基于数据模型层的数据增量更新装置,所述装置包括:
[0016]
识别模块,用于根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;监测模块,用于监测所述数据模型层是否执行了数据操作;查找模块,用于当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初
始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;生成模块,用于根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;更新模块,用于根据所述操作切片对数据库执行数据增量更新。
[0017]
进一步地,本申请还提出一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述的基于数据模型层的数据增量更新方法的步骤。
[0018]
进一步地,为实现上述目的,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于数据模型层的数据增量更新方法的步骤。
[0019]
相较于现有技术,本申请所提出的基于数据模型层的数据增量更新方法、装置、计算机设备及计算机可读存储介质,能够根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;根据所述操作切片对数据库执行数据增量更新。通过对数据模型层的各个结构体进行监测,然后在数据模型层执行数据操作后获取对应的变更结构体以及对应的属性和属性变更值生成操作切片以实现对数据库执行数据增量更新,从而实现了数据模型层对接数据库时支持数据增量更新的功能。
附图说明
[0020]
图1是本申请一实施例的应用环境示意图;
[0021]
图2是本申请基于数据模型层的数据增量更新方法一具体实施例的流程示意图;
[0022]
图3是本申请一示例性例子的对于go语言的数据模型层的环境预设置的流程效果图;
[0023]
图4是本申请基于数据模型层的数据增量更新装置一实施例的程序模块示意图;
[0024]
图5是本申请计算机设备一可选的硬件架构的示意图。
具体实施方式
[0025]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0026]
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
[0027]
图1是本申请一实施例的应用环境示意图。参阅图1所示,所述计算机设备1与用户端连接,并连接到数据库。在本实施例中,所述计算机设备1可作为手机、平板、便携设备、pc机或者服务器等;所述数据库则可以是具有数据存储功能的硬件设备,所述数据库提供数据输入/输出接口;所述计算机设备1上运行有对接所述数据库的数据模型层,也就是数据模型层;所述用户端则可以通过所述计算机设备1上的数据模型层与所述数据库执行数据交互,其中,所述用户端可作为手机、平板、便携设备或者pc机等。所述计算机设备1能够根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;所述用户端对所述数据库中数据执行操作时,需要向所述数据模型层发送数据操作请求,然后所述数据模型层根据所述数据操作请求执行了对应的数据操作;当所述计算机设备1监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;再根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;最后,所述计算机设备1根据所述操作切片对所述数据库执行数据增量更新。
[0028]
当然,在其他实施例中,所述计算机设备1与所述数据库合并为同一个电子设备,或者所述计算机设备1也可以作为独立的功能模块附加在所述数据库上以实现基于数据模型层的数据增量更新功能。
[0029]
实施例一
[0030]
图2是本申请基于数据模型层的数据增量更新方法一实施例的流程示意图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备1为执行主体进行示例性描述。
[0031]
如图2所示,所述基于数据模型层的数据增量更新方法可以包括步骤s200~s208。
[0032]
步骤s200,根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值。
[0033]
具体的,所述计算机设备1预先设置了一个配置信息表,比如xml配置表。所述xml配置表可以是由用户通过所述计算机1设置的,也可以是由用户通过其他设备端发送至所述计算机设备1。在大多编程语言,比如go语言中,数据通常被定义为结构体,而对数据的访问及操作则是表现为对结构体执行操作的函数。所述配置信息表包括描述所述数据模型层中的数据的定义信息,包括每一类型的结构体的结构体格式。
[0034]
因此,所述计算机设备1能够根据所述配置信息表中的结构体格式对所述数据模型层中的所有数据进行识别,识别出其中的每一个结构体以及对应的属性和属性初始值。在本实施例中,所述结构体格式中包括结构体标签和属性名称,所述计算机设备1先根据目标类型结构体格式中的结构体标签对应的字符串特征与所述数据模型层中数据进行比对,查找出包括所述字符串特征的结构体作为所述目标类型结构体格式对应的结构体,所述目标类型结构体格式为所有结构体格式中的任一类型结构体格式;然后根据每一类型的结构体的属性名称对应的字段特征分别查找出对应结构体类型的所有结构体的属性,并获取属性对应的属性初始值,其中,所述字段特征为所述属性在结构体中的位置和/或字符格式。而所述结构体的类型包括记录型结构体,表型结构体和普通型结构体。
[0035]
在本实施例中,每个类型的结构体并不是独立的,普通型结构体可以嵌套在记录
型结构体中,也可以嵌套在表型结构体中;而记录型结构体也可以嵌套在表型结构体中。每一个结构体,都有一个结构体标签,也就是结构体的名称;每一个结构体,包括至少一个属性;结构体的属性,包括属性名称,以及属性值。当然,对于结构体的属性值,也可以分为不同的类型的属性值,比如内置类型(int,bool,float32,float64,string等)、指针类型、切片类型、map类型。
[0036]
例如,在编写程序的过程中,通常会使用structs标签表示一个结构体;然后,structs标签下可以包含多个struct子标签,每个struct标签对应一个子结构体。在每一个struct标签下,还可以定义多个field子标签,而每个field子标签对应struct结构体的一个属性;field子标签下则是定义具体的value,或者test变量,这里的value或test,就是field属性对应的属性值。
[0037]
在本实施例中,所述计算机设备1预先设置的结构体中,除了表型结构体和记录型结构体,其余结构体称为普通结构体。普通型结构体可以单独使用、独立存在,也可以以多种形式(指针,切片、map等)内嵌于记录型结构体或者表型结构体中;而表型结构体,往往也会嵌入至少一个记录型结构体结构体。例如,当用户代码直接持有记录型结构体时,代表一种一对一的数据关系,例如一个玩家只对应一个玩家信息。当用户代码持有表型结构体时,其间接持有记录型结构体,代表一种一对多的数据关系,例如一个玩家对应多个道具。
[0038]
步骤s202,监测所述数据模型层是否执行了数据操作。
[0039]
步骤s204,当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体。
[0040]
具体的,所述计算机设备1在识别出数据模型层中的每一个结构体以及对应的属性和属性初始值之后,则会进一步监测所述数据模型层是否执行了数据操作。在本实施例中,用户端需要对数据库中的数据执行数据操作时,则会向所述数据模型层发送数据操作请求,然后所述数据模型层根据所述数据操作请求对目标数据执行数据操作。因此,所述计算机设备1可以监测所述数据模型层是否执行了数据操作。在一具体实施例中,所述计算机设备1监测所述数据模型层是否执行了数据操作包括:监测所述数据模型层是否触发调用了任一类型结构体的数据操作函数;当所述数据模型层是否触发调用了任一类型结构体的数据操作函数时,进一步监测所述数据操作函数是否执行成功;当所述数据操作函数执行成功时,则判断所述数据模型层执行了数据操作。
[0041]
其中,由于所述数据模型层在执行对结构体的属性进行变更等数据操作时,都需要调用对应的数据操作函数。因此,所述计算机设备1可以监控到所述数据模型层是否调用了预设的任一类型结构体的数据操作函数,并在检查到所述数据模型层调用了某结构体的数据操作函数,且所述数据操作函数执行成功后,则判断出所述数据模型层执行了数据操作。
[0042]
当监测到所述数据模型层执行了数据操作时,所述计算机设备1进一步查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,具体包括:查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的当前属性值;分别比较每一个所述目标结构体对应的当前属性值和属性初始值是否相同;当所述目标结构体的所述当前属性值与所述属性初始值不相同时,则将所述目标结构体记录为变更结构
体,将所述目标结构体的所述当前属性值记录为属性变更值。
[0043]
在一具体实施例中,所述计算机设备1通过在所述数据模型层中预先建立管理型结构体;当所述数据模型层执行了数据操作时,触发所述管理型结构体执行所述查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的当前属性值,从而实现收集项目代码中调用数据模型层数据修改函数时产生的变更操作的数据的作用。
[0044]
步骤s206,根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片。
[0045]
步骤s208,根据所述操作切片对数据库执行数据增量更新。
[0046]
具体的,所述计算机设备1查找出执行数据操作后所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,然后再将所述变更结构体集合中的所有的结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片。
[0047]
例如,在go语言对应的数据模型层中,所述计算机设备1预先建立modelmanage的结构体,也就是管理型结构体,其主要的作用是收集项目代码中调用数据模型层数据修改函数时产生的变更结构体以及对应属性的属性变更值。当变更结构体为表型结构体时,modelmanage能够记录数据操作中更新的redis hash表名、mysql表名,更新的数据库字段与最新值以及该条记录对应的主键,并添加到modelmanage中的操作切片,这里的操作切片,可以认为是modelmanage中用于保存变更结构体以及对应的属性和属性值的字段。添加过程中会检查操作切片的最新获得的主键是否和本次操作相同,如果相同则将本次操作修改的数据库字段和最新值合并到前一次操作中(相同的数据库字段会覆盖为最新值),以减少对数据库的数据操作。在完成一次处理逻辑后(一个完整逻辑可能会修改多个数据模型层的多个属性)的记录过程后,modelmanage则会调用另一个popmodelops函数将本批次的所有操作弹出(返回操作切片)。
[0048]
值得注意的时,对于每一个普通型结构体进行数据操作之后,需要将所述普通型结构体所属的函数或母结构体的信息标记在所述普通型结构体对应的操作切片中,例如,将所述普通型结构体所属的函数或母结构体的信息以指针形式添加在所述普通型结构体对应的操作切片,从而可以精确无误地将所述普通型结构体的操作切片更新到数据库中对应的位置。
[0049]
接着,所述计算机设备1根据所述操作切片对数据库执行数据增量更新。在本实施例中,所述计算机设备1先从所述操作切片中获取第一结构体的第一结构体标签,其中,所述第一结构体为所述操作切片中的所有结构体中的任一结构体;再从所述数据库中拉取包括所述第一结构体标签的第二结构体,将所述第一结构体中的所有属性的属性变更至替换写入到所述数据库中所述第二结构体的对应属性中。其中,所述计算机设备1将所述第一结构体中的所有属性的属性变更至替换写入到所述数据库中所述第二结构体的对应属性中包括:查找出所述第一结构体标签对应的变更函数或数据库操作函数;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性值,其中,所述目标属性为所述第一结构体的任一属性。在本实施例中,由于,每一个类型的结构体的格式并不一样,对于任一种类型的结构体,所述计算机设备1都预先设置有对应的变更函数或数据库操作函数,以用于快速、高效地将操作切片对应的数据更新到数据库中。
[0050]
在另一实施例中,由于每一中编程语言都包括对应的内置型数据格式,因此,当所述计算机设备1判断所述第一结构体中的目标属性的属性变更值为非内置数据类型时,则会从预设的描述函数集中查找出所述第一结构体对应的目标描述函数,其中,所述描述函数集预先设置在所述数据模型层;然后通过所述目标描述函数对所述目标属性的属性变更值进行序列化,得到所述目标属性的属性变更表征值;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更表征值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性表征值。
[0051]
例如,对于go语言来说,对于记录型结构体来说,表型结构体中的很多属性的属性值并非如int,bool,float32,float64,string等内置类型,因此,所述计算机设备1预先设置一个protocol buffers函数用于将记录型结构体中非内置类型的属性变更值序列化成一个属性变更表征值,以便于更新到数据库中。
[0052]
另外,在本实施例中,所述数据模型层接收用户端的数据操作请求以及执行对应的数据操作的过程、所述计算机设备1将所述数据模型层执行数据操作后记录该次数据操作的操作切片的过程以及所述计算机设备1将所述操作切片更新到数据库的过程都是相互独立的。例如,对于go语言的数据模型层来说,所述计算机1在所述数据模型层中建立的modelmanage除了可以收集项目代码中调用数据模型层数据修改函数时产生的变更结构体以及对应属性的属性变更值,生成操作切片;还会调用另一个popmodelops函数将本批次的所有的操作切片弹出,然后异步调用execmodelops函数遍历所述操作切片中的所有的变更结构体以及对应属性的属性变更值,更新到mysql或redis数据库。
[0053]
也就是说,所述计算机设备1在所述数据模型层执行数据操作后记录该次数据操作的操作切片的同时,异步执行将操作切片更新到数据库,因此,可以在线实现数据库的数据增量更新的功能。
[0054]
参阅图3所示,是本申请一示例性例子的对于go语言的数据模型层的环境预设置的流程效果图。
[0055]
如图3所示,所述计算机设备1预先建立一个配置信息表,也就是xml配置文件,发送给基于go语言的数据模型层;然后解析xml配置文件,获取其中预设的结构体格式,并根据所述结构体格式识别所述数据模型层中的普通型结构体、表型结构体和记录型结构体;接着,对识别出来的所有结构体封装成只读函数,从而避免无关人员的恶意篡改;接着,在根据每一个结构体的具体格式生成对应的变更函数;对于普通型结构体来说,所述变更函数用于后续将该结构体中对应的属性的属性变更值更新到数据库;对于表型结构体和记录型,还需要将所述变更函数生成对应的数据库操作函数,从而实现后续将表型结构体或记录型结构体对应的属性的属性变更值更新到数据库;其中,对于记录型结构体,当记录型结构体的属性的属性值为非内置型格式时,需要通过预设的protocol buffers函数对非内置类型属性的属性变更值进行序列化,得到属性变更表征值,然后才能通过数据数据库操作函数实现后续将记录型结构体属性变更表征值更新到数据库;所有的变更函数、数据库操作函数以及protocol buffers函数,均写入go源文件,与数据模型层的源文件一起,形成所述数据模型层对应的package。
[0056]
综上所述,本实施例所提出的基于数据模型层的数据增量更新方法能够根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;当监测
到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;根据所述操作切片对数据库执行数据增量更新。通过对数据模型层的各个结构体进行监测,然后在数据模型层执行数据操作后获取对应的变更结构体以及对应的属性和属性变更值生成操作切片以实现对数据库执行数据增量更新,从而实现了数据模型层对接数据库时支持数据增量更新的功能。
[0057]
实施例二
[0058]
图4示意性示出了根据本申请实施例二的基于数据模型层的数据增量更新装置的框图,该基于数据模型层的数据增量更新装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
[0059]
如图4所示,该基于数据模型层的数据增量更新装置400可以包括识别模块410、监测模块420、查找模块430、生成模块440和更新模块450,其中:
[0060]
识别模块410,用于根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值。
[0061]
监测模块420,用于监测所述数据模型层是否执行了数据操作。
[0062]
查找模块430,用于当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体。
[0063]
生成模块440,用于根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片。
[0064]
更新模块450,用于根据所述操作切片对数据库执行数据增量更新。
[0065]
在示例性的实施例中,所述结构体格式中包括结构体标签和属性名称,识别模块410,还用于:根据目标类型结构体格式中的结构体标签对应的字符串特征与所述数据模型层中数据进行比对,查找出包括所述字符串特征的结构体作为所述目标类型结构体格式对应的结构体,所述目标类型结构体格式为所有结构体格式中的任一类型结构体格式;根据每一类型的结构体的属性名称对应的字段特征分别查找出对应结构体类型的所有结构体的属性,并获取属性对应的属性初始值,其中,所述字段特征为所述属性在结构体中的位置和/或字符格式。其中,所述结构体的类型包括记录型结构体,表型结构体和普通型结构体。
[0066]
在示例性的实施例中,监测模块420,还用于:监测所述数据模型层是否触发调用了任一类型结构体的数据操作函数;当所述数据模型层是否触发调用了任一类型结构体的数据操作函数时,进一步监测所述数据操作函数是否执行成功;当所述数据操作函数执行成功时,则判断所述数据模型层执行了数据操作。
[0067]
在示例性的实施例中,查找模块430,还用于:当所述数据模型层执行了数据操作时,查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的属性的当前属性值;分别比较每一个所述目标结构体对应的属性的当前属性值和属性初始值是否相同;当所述目标结构体对应的属性的所述当前属性值与所述属性初始值不相同时,则
将所述目标结构体记录为变更结构体,将所述目标结构体对应的属性的所述当前属性值记录为属性变更值。其中,包括:在所述数据模型层中预先建立管理型结构体;当所述数据模型层执行了数据操作时,触发所述管理型结构体执行所述查找出所述数据操作相关的每一个目标结构体以及每一个所述目标结构体对应的属性的当前属性值的步骤。
[0068]
在示例性的实施例中,更新模块450,还用于:从所述操作切片中获取第一结构体的第一结构体标签,其中,所述第一结构体为所述操作切片中的所有结构体中的任一结构体;从所述数据库中拉取包括所述第一结构体标签的第二结构体;将所述第一结构体中的所有属性的属性变更至替换写入到所述数据库中所述第二结构体的对应属性中。其中,包括:查找出所述第一结构体标签对应的变更函数或数据库操作函数;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性值,其中,所述目标属性为所述第一结构体的任一属性。以及,当所述第一结构体中的目标属性的属性变更值为非内置数据类型时,从预设的描述函数集中查找出所述第一结构体对应的目标描述函数,其中,所述描述函数集预先设置在所述数据模型层;通过所述目标描述函数对所述目标属性的属性变更值进行序列化,得到所述目标属性的属性变更表征值;通过所述变更函数或数据库操作函数将所述第一结构体中的目标属性的属性变更表征值写入到所述第二结构体的所述目标属性替换掉所述目标属性的属性表征值。
[0069]
实施例三
[0070]
图5示意性示出了根据本申请实施例三的适于实现基于数据模型层的数据增量更新方法的计算机设备1的硬件架构示意图。本实施例中,计算机设备1是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是具有网关功能的机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,计算机设备1至少包括但不限于:可通过系统总线相互通信链接存储器510、处理器520、网络接口530。其中:
[0071]
存储器510至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器510可以是计算机设备1的内部存储模块,例如该计算机设备1的硬盘或内存。在另一些实施例中,存储器510也可以是计算机设备1的外部存储设备,例如该计算机设备1上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,存储器510还可以既包括计算机设备1的内部存储模块也包括其外部存储设备。本实施例中,存储器510通常用于存储安装于计算机设备1的操作系统和各类应用软件,例如基于数据模型层的数据增量更新方法的程序代码等。此外,存储器510还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0072]
处理器520在一些实施例中可以是中央处理器(central processing unit,简称为cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器520通常用于控制计算机设备1的总体操作,例如执行与计算机设备1进行数据交互或者通信相关的控制和处理等。本实施例中,处理器520用于运行存储器510中存储的程序代码或者处理数据。
[0073]
网络接口530可包括无线网络接口或有线网络接口,该网络接口530通常用于在计算机设备1与其他计算机设备之间建立通信链接。例如,网络接口530用于通过网络将计算机设备1与外部终端相连,在计算机设备1与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,简称为gsm)、宽带码分多址(wideband code division multiple access,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。
[0074]
需要指出的是,图5仅示出了具有部件510-530的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0075]
在本实施例中,存储于存储器510中的基于数据模型层的数据增量更新方法的程序代码还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器520)所执行,以完成本申请实施例。
[0076]
实施例四
[0077]
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0078]
根据预设的结构体格式识别出数据模型层中的每一个结构体以及对应的属性和属性初始值;监测所述数据模型层是否执行了数据操作;当监测到所述数据模型层执行了数据操作时,查找出所述数据模型层中属性初始值发生变更的所有结构体作为变更结构体集合,所述变更结构体集合包括至少一个结构体;根据所述变更结构体集合中的每一个结构体以及对应的属性和属性变更值作为所述数据操作对应的操作切片;根据所述操作切片对数据库执行数据增量更新。
[0079]
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中基于数据模型层的数据增量更新方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0080]
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0081]
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1