CN108737487B - 数据同步方法和装置、存储介质及电子装置 - Google Patents
数据同步方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN108737487B CN108737487B CN201810235520.9A CN201810235520A CN108737487B CN 108737487 B CN108737487 B CN 108737487B CN 201810235520 A CN201810235520 A CN 201810235520A CN 108737487 B CN108737487 B CN 108737487B
- Authority
- CN
- China
- Prior art keywords
- member object
- node
- determining
- modified
- operation instruction
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法和装置、存储介质及电子装置。其中,该方法包括:获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;响应操作指令修改第一成员对象;根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;同步发送确定出的特征成员对象。本发明解决了相关技术中在对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种数据同步方法和装置、存储介质及电子装置。
背景技术
为了使服务器与人机交互应用客户端实现状态同步,通常服务器会向人机交互应用客户端同步发送已产生变化的数据。目前,大多数人机交互应用所采用的数据同步方式如下:在登录人机交互客户端的同时进行全量同步,而对在人机交互过程中产生的修改后的数据,进行分模块增量同步。
然而,在通过人机交互应用客户端进行人机交互的过程中,人机交互操作所生成的操作指令可能会对服务器中存储的数据产生实时地修改,其中,服务器中被修改的数据往往是数据模块中很小的一部分数据。若继续采用上述数据同步方式,将导致每次在同步少量被修改的数据时,都不得不同时发送数据模块中大量其他不相关的数据,从而造成数据同步效率较低的问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据同步方法和装置、存储介质及电子装置,以至少解决相关技术中在对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的技术问题。
根据本发明实施例的一个方面,提供了一种数据同步方法,包括:获取人机交互应用客户端发送的操作指令,其中,上述操作指令用于指示所要修改的目标数据结构中的第一成员对象;响应上述操作指令修改上述第一成员对象;根据上述第一成员对象及在上述目标数据结构中与上述第一成员对象关联的第二成员对象确定特征成员对象,其中,在上述目标数据结构中上述第二成员对象包括上述第一成员对象;同步发送确定出的上述特征成员对象。
根据本发明实施例的另一方面,还提供了一种数据同步装置,包括:第一获取单元,用于获取人机交互应用客户端发送的操作指令,其中,上述操作指令用于指示所要修改的目标数据结构中的第一成员对象;第一修改单元,用于响应上述操作指令修改上述第一成员对象;第一确定单元,用于根据上述第一成员对象及在上述目标数据结构中与上述第一成员对象关联的第二成员对象确定特征成员对象,其中,在上述目标数据结构中上述第二成员对象包括上述第一成员对象;同步发送单元,用于同步发送确定出的上述特征成员对象。
根据本发明实施例的又一方面,还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述方法。
根据本发明实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的方法。
在本发明实施例中,通过获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;响应操作指令修改第一成员对象;根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;同步发送确定出的特征成员对象的方法,从而在接收到对第一成员变量进行修改的操作指令后,通过第一成员对象及与第一成员对象关联的第二成员对象确定出特征成员对象,并同步发送特征成员对象,达到了在对数据进行同步的过程中,只同步根据第一成员对象及与第一成员对象关联的第二成员对象确定的特征成员对象的效果,进而减少了需要同步的数据量,提高了同步效率,解决了相关技术中在对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据同步方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的数据同步方法的流程示意图;
图3是根据本发明实施例的一种可选的数据同步方法的示意图;
图4是根据本发明实施例的另一种可选的数据同步方法的示意图;
图5是根据本发明实施例的又一种可选的数据同步方法的示意图;
图6是根据本发明实施例的又一种可选的数据同步方法的示意图;
图7是根据本发明实施例的一种可选的数据同步装置的结构示意图;
图8是根据本发明实施例的另一种可选的数据同步装置的结构示意图;
图9是根据本发明实施例的又一种可选的数据同步装置的结构示意图;
图10是根据本发明实施例的一种可选的电子装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种数据同步方法,作为一种可选的实施方式,上述数据同步方法可以但不限于应用于如图1所示的环境中。人机交互服务器106通过步骤S102,通过网络104从人机交互客户端102获取操作指令。人机交互服务器106获取到操作指令以后,通过步骤S104,根据获取到的操作指令,修改目标数据结构中的第一成员对象,并通过步骤S106,根据第一成员对象与第一成员对象关联的第二成员对象确定出目标数据结构中的特征成员对象,以及在确定出特征成员对象以后,通过步骤S108将特征成员对象通过网络104同步发送给人机交互客户端102或者将特征成员对象通过网络104同步发送给数据库108。
可选地,上述数据同步方法可以但不限于应用于具有运算存储能力的服务器中。需要说明的是,上述应用客户端可以但不限于以下至少之一:手机、平板电脑、笔记本电脑;上述网络可以包括但不限于无线网络,其中,该无线网络包括:蓝牙、WIFI及其他实现无线通信的网络;上述服务器可以包括但不限于以下至少之一:笔记本电脑、PC机等
作为一种可选的实施方式,如图2所示,上述数据同步方法包括:
S202,获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;
S204,响应操作指令修改第一成员对象;
S206,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;
S208,同步发送确定出的特征成员对象。
可选地,作为一种可选的实施方式,上述数据同步方法可以但不限于应用于客户端与服务器同步数据的过程中。例如,同步游戏数据、商业数据、人口数据等数据的过程。
以下以客户端与服务器同步游戏数据的场景进行说明。用户在应用客户端进行游戏的过程中,会因为游戏的进程而产生新的数据。应用客户端在产生上述新的数据后,向服务器发送操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象。服务器在接收到上述操作指令后,根据新的数据对第一成员变量进行修改,并在修改以后,根据第一成员对象和与第一成员对象关联的第二成员对象确定出特征成员对象,并特征成员对象同步发送到应用客户端,以供应用客户端进行数据的同步。
需要说明的是,在本实施例中,通过人机交互应用客户端发送操作指令,响应操作指令修改第一成员对象,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,以及同步发送确定出的特征成员对象的方法,从而在接收到对第一成员变量进行修改的操作指令并对第一成员变量进行修改以后,通过第一成员对象及与第一成员对象关联的第二成员对象确定出特征成员对象,并同步发送特征成员对象,达到了在对数据进行同步的过程中,只同步根据第一成员对象及与第一成员对象关联的第二成员对象确定的特征成员对象的效果,进而减少了需要同步的数据量,提高了同步效率,解决了相关技术中存在的对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的问题。
可选地,在根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象之前,还包括:获取与目标数据结构对应的树结构,其中,第一成员对象位于树结构中的叶子节点;根据树结构中叶子节点所属的父节点确定第二成员对象。
例如,以下结合图3对上述确定第二成员对象的过程进行说明。如图3所示,图3中示出了一种树形结构,其中,第一成员对象位于树形结构的叶子节点1.2。而在确定第二成员对象时,根据图3所示的树结构寻找第一成员对象所处的叶子节点1.2的父节点,为节点1。则节点1为第二成员对象。
可选地,在根据树结构中叶子节点所属的父节点确定第二成员对象之后,还包括:重复执行以下步骤,直至确定出叶子节点所属的全部的父节点分别对应的第二成员对象,其中,全部的父节点包括:叶子节点在树结构的各级节点中所属的父节点:确定叶子节点在数据结构的当前级节点中所属的当前父节点;获取当前父节点所对应的第二成员对象的索引标识;根据第二成员对象的索引标识确定与第二成员对象对应的标记数组,其中,第二成员对象对应的标记数组用于记录第二成员对象的对象状态;将第二成员对象的对象状态修改为第一目标状态,其中,第一目标状态用于指示第二成员对象与被修改的第一成员对象关联;获取位于当前级节点的上一级节点作为当前级节点,其中,当前级节点从属于上一级节点。
以下结合图4对上述获取第二成员对象的过程进行说明。
如图4所示,在一个有三个层级的树结构中,每一个节点都存在一个与节点对应的索引标识,索引标识的值为0,所有的索引标识组成标记数组。在上述树结构中,处于树结构第三层的节点1.21为第一成员对象,则标记数组中的与节点1.21对应的索引标识的值由0修改为1。同时,根据节点1.21为第一成员对象,向树结构的上层进行追溯,追溯到节点1.2,节点1.2,则将标记数组中与节点1.2对应的索引标识的值由0修改为1,同时继续根据节点1.2向树结构的上层进行追溯,追溯到节点1,则将标记数组中与节点1对应的索引标识的值由0修改为1。重复上述过程,直到追溯到树结构的根节点(图4中的节点1为图4的树结构的根节点)。此时,标记数组中多个值为1的索引标识记录了改变的第二成员对象。
以下以第一成员对象为用户会员等级为例进行说明。当接收到客户端发送的操作指令后,操作指令中携带了用户的最新的会员等级信息。以节点1.21记录用户的会员等级信息为例,当接收到用户最新的会员等级信息后,将用户新的会员等级信息替换节点1.21中所携带的用户的陈旧的会员等级信息,并将与节点1.21对应的索引标识的值由0变为1,用于记录用户的等级信息已经进行了修改。同时,对应地,节点1.2对应用户的会员信息,会员信息包括会员等级信息。将与节点1.2对应的索引标识的值由0变为1,用于表示会员信息中存在部分信息被修改。同时,对应地,节点1对应用户的信息,用户信息包括用户的会员信息。将与节点1对应的索引标识由0变为1,表示会员信息中的部分信息被修改。此时,根据与节点1.21、节点1.2与节点1对应的索引标识的状态(状态为1),则可以快速定位到被修改的内容为用户的会员等级信息。
可选地,在确定出第二成员对象之后,还包括:将被修改为第一目标状态的第二成员对象确定为特征成员对象。
例如,继续结合图4进行说明。在经过上述改变索引标识所记录的值的过程之后,确定出了树结构中的节点1、节点1.2、节点1.21为第二成员对象,则此时将上述节点1、节点1.2、节点1.21所携带的内容确定为特征成员对象。例如上述会员等级信息。
可选地,在响应操作指令修改第一成员对象之后,还包括:获取第一成员对象的修改类型;在修改类型指示为调整数值的情况下,将第一成员对象的对象状态修改为第二目标状态,其中,第二目标状态用于指示第一成员对象已被调整;在修改类型指示为删除数值的情况下,将第一成员对象的索引标识存储到删除向量中。其中,将第一成员对象的对象状态修改为第二目标状态包括:获取叶子节点所对应的第一成员对象的索引标识;根据第一成员对象的索引标识确定与第一成员对象对应的标记数组,其中,第一成员对象对应的标记数组用于记录第一成员对象的对象状态;将第一成员对象的对象状态修改为第二目标状态。
具体结合图4与图5进行说明。如图4所示,节点1.21为第一成员对象,当接收到修改第一成员对象的操作指令后,在操作指令为调整数值的情况下,对节点1.21的数值进行修改,同时将节点1.21对应的索引标识的值由0修改为1,用于表示该索引标识对应的节点已经被修改。在操作指令为删除数值的情况下,如图5所示,将节点1.21的数据删除,并将节点1.21存储到删除向量中,将与节点1.21对应的索引标识的值由0修改为2,用于表示节点1.21的数据已经删除。此时,删除向量中记载了所有被删除的节点。
继续以上述第一成员对象为会员等级信息进行说明。如果会员注销了,则此时需要删除会员相关的信息。因此,节点1.21对应的会员等级信息被删除。此时,节点1.21对应的索引标识修改为2,表示会员等级信息已经被删除。同时,节点对应会员信息,节点1.2对应的索引标识由0修改为1,表示用户会员信息中的部分信息被修改或者删除,节点1表示用户信息,将节点1对应的索引标识由0修改为1,表示用户信息中部分信息被修改或者删除。(若用户会员信息被删除,则节点1.2对应的索引标识应该由0修改为2,用于表示节点2对应的用户会员信息被删除,同时节点1.2以下的所有节点的索引标识都应该由0修改为2)。
需要说明的是,上述仅为一种举例说明,具体索引标识对应的数值与节点所对应的信息本实施例并不做具体限定。
可选地,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象包括:将被修改为第二目标状态的第一成员对象确定为特征成员对象;和/或将删除向量中的第一成员对象确定为特征成员对象。
由于操作指令的不同,对第一成员对象的处理方式不同,因此在确定特征成员对象的方法也不相同。继续结合图4、5进行说明。在操作指令为修改指令的情况下,节点1.21对应的索引标识所记录的内容由0变为了1,因此,确定第一成员对象为特征成员对象。而在操作指令为删除指令的情况下,节点1.21已经被删除,而删除向量中存储了所有被删除的节点1.21。因此,根据存储向量确定存储向量中的节点1.21为特征成员对象。
可选地,同步发送确定出的特征成员对象包括以下至少之一:在特征成员对象的发送标记指示发送给数据库的情况下,将特征成员对象同步发送给数据库;在特征成员对象的发送标记指示发送给人机交互应用客户端的情况下,将特征成员对象同步发送给人机交互应用客户端。
由于第一成员对象可能有不同的类型,比如一种是进行逻辑运算的,一种是在人机交互客户端进行显示的。因此,在同步发送第一成员对象时,也可以根据第一成员对象的类型选择同步发送的目标。
例如,用于记录玩家上次登录的时间lastLoginTime,该内容无需发送给人机交互应用客户端,只需要存入数据库即可。而对于在人机交互应用客户端是否显示弹窗popTips,该部分内容无需存入数据库,仅需要发送给人机交互应用客户端进行显示即可。因此,对于不同的情况,选择不同的标记方法。例如,通过以下代码进行标记。
上述uid用于标记用户的ID,onlydb表示该数据需要发送给数据库,onlycs表示该数据需要在人机交互应用客户端进行显示。此时,可以根据接收到的操作指令中的具体内容,决定将数据同步发送到数据库还是同步发送到人机交互应用客户端。
通过本实施例,通过通过获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;响应操作指令修改第一成员对象;根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;同步发送确定出的特征成员对象的方法,从而在接收到对第一成员变量进行修改的操作指令后,通过第一成员对象及与第一成员对象关联的第二成员对象确定出特征成员对象,并同步发送特征成员对象,达到了在对数据进行同步的过程中,只同步根据第一成员对象及与第一成员对象关联的第二成员对象确定的特征成员对象的效果,进而减少了需要同步的数据量,提高了同步效率,解决了相关技术中,在对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的技术问题。
作为一种可选的实施方案,在根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象之前,还包括:
S1,获取与目标数据结构对应的树结构,其中,第一成员对象位于树结构中的叶子节点;
S2,根据树结构中叶子节点所属的父节点确定第二成员对象。
例如,以下结合图3对上述确定第二成员对象的过程进行说明。如图3所示,图3中示出了一种树形结构,其中,第一成员对象位于树形结构的叶子节点1.2。而在确定第二成员对象时,根据图3所示的树结构寻找第一成员对象所处的叶子节点1.2的父节点,为节点1。则节点1为第二成员对象。
通过本实施例,通过获取目标数据结构中对应的树结构以及根据树结构的叶子节点确定第二成员对象,从而达到了准确确定第二成员对象,进而准确确定特征成员对象的效果,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,在根据树结构中叶子节点所属的父节点确定第二成员对象之后,还包括:
重复执行以下步骤,直至确定出叶子节点所属的全部的父节点分别对应的第二成员对象,其中,全部的父节点包括:叶子节点在树结构的各级节点中所属的父节点:
S1,确定叶子节点在数据结构的当前级节点中所属的当前父节点;
S2,获取当前父节点所对应的第二成员对象的索引标识;
S3,根据第二成员对象的索引标识确定与第二成员对象对应的标记数组,其中,第二成员对象对应的标记数组用于记录第二成员对象的对象状态;
S4,将第二成员对象的对象状态修改为第一目标状态,其中,第一目标状态用于指示第二成员对象与被修改的第一成员对象关联;
S5,获取位于当前级节点的上一级节点作为当前级节点,其中,当前级节点从属于上一级节点。
以下结合图4对上述获取第二成员对象的过程进行说明。
如图4所示,在一个有三个层级的树结构中,每一个节点都存在一个与节点对应的索引标识,索引标识的值为0,所有的索引标识组成标记数组。在上述树结构中,处于树结构第三层的节点1.21为第一成员对象,则标记数组中的与节点1.21对应的索引标识的值由0修改为1。同时,根据节点1.21为第一成员对象,向树结构的上层进行追溯,追溯到节点1.2,节点1.2,则将标记数组中与节点1.2对应的索引标识的值由0修改为1,同时继续根据节点1.2向树结构的上层进行追溯,追溯到节点1,则将标记数组中与节点1对应的索引标识的值由0修改为1。重复上述过程,直到追溯到树结构的根节点(图4中的节点1为图4的树结构的根节点)。此时,标记数组中多个值为1的索引标识记录了改变的第二成员对象。
以下以第一成员对象为用户会员等级为例进行说明。当接收到客户端发送的操作指令后,操作指令中携带了用户的最新的会员等级信息。以节点1.21记录用户的会员等级信息为例,当接收到用户最新的会员等级信息后,将用户新的会员等级信息替换节点1.21中所携带的用户的陈旧的会员等级信息,并将与节点1.21对应的索引标识的值由0变为1,用于记录用户的等级信息已经进行了修改。同时,对应地,节点1.2对应用户的会员信息,会员信息包括会员等级信息。将与节点1.2对应的索引标识的值由0变为1,用于表示会员信息中存在部分信息被修改。同时,对应地,节点1对应用户的信息,用户信息包括用户的会员信息。将与节点1对应的索引标识由0变为1,表示会员信息中的部分信息被修改。此时,根据与节点1.21、节点1.2与节点1对应的索引标识的状态(状态为1),则可以快速定位到被修改的内容为用户的会员等级信息。
可选地,可以通过player.attr,定义了玩家,道具,标签等内容以及它们之间的关系,并且通过以下代码设置,道具,标签等内容以及它们之间的关系所对应的索引标识。
class Player{
static int ATTR_INDEX_ITEM=0;
static int ATTR_INDEX_LABEL=1;
static int_ALL_ATTR_COUNT=2;
通过以下代码,记录标记数组中发生了改变的第二成员变量。
byte[]dirtyData=new byte[(_ALL_ATTR_COUNT+7)/8];
这样,即可完成对标记数组中的第二成员变量的标记。
同时,为了能够成功追溯父节点,因此增加owner指针,用于指向叶子节点所属于的父节点,从而可以成功追溯叶子节点的父节点。
通过本实施例,通过上述步骤以确定第二成员变量,从而达到了准确确定第二成员对象,进而准确确定特征成员对象的效果,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象包括:
S1,将被修改为第一目标状态的第二成员对象确定为特征成员对象。
例如,继续结合图4进行说明。在经过上述改变索引标识所记录的值的过程之后,确定出了树结构中的节点1、节点1.2、节点1.21为第二成员对象,则此时将上述节点1、节点1.2、节点1.21确定为特征成员对象。
通过本实施例,通过将被修改为第一目标状态的第二成员对象确定为特征成员对象,从而准确确定第二成员对象,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,在响应操作指令修改第一成员对象之后,还包括:
S1,获取第一成员对象的修改类型;
S2,在修改类型指示为调整数值的情况下,将第一成员对象的对象状态修改为第二目标状态,其中,第二目标状态用于指示第一成员对象已被调整;
S3,在修改类型指示为删除数值的情况下,将第一成员对象的索引标识存储到删除向量中。
其中,将第一成员对象的对象状态修改为第二目标状态包括:
S1,获取叶子节点所对应的第一成员对象的索引标识;
S2,根据第一成员对象的索引标识确定与第一成员对象对应的标记数组,其中,第一成员对象对应的标记数组用于记录第一成员对象的对象状态;
S3,将第一成员对象的对象状态修改为第二目标状态。
具体结合图4与图5进行说明。如图4所示,节点1.21为第一成员对象,当接收到修改第一成员对象的操作指令后,在操作指令为调整数值的情况下,对节点1.21的数值进行修改,同时将节点1.21对应的索引标识的值由0修改为1,用于表示该索引标识对应的节点已经被修改。在操作指令为删除数值的情况下,如图5所示,将节点1.21的数据删除,并将节点1.21存储到删除向量中,用于表示节点1.21的数据已经删除。此时,删除向量中记载了所有被删除的节点。
继续以上述第一成员对象为会员等级信息进行说明。如果会员注销了,则此时需要删除会员相关的信息。因此,节点1.21对应的会员等级信息被删除。此时,节点1.21对应的索引标识修改为2,表示会员等级信息已经被删除。同时,节点对应会员信息,节点1.2对应的索引标识由0修改为1,表示用户会员信息中的部分信息被修改或者删除,节点1表示用户信息,将节点1对应的索引标识由0修改为1,表示用户信息中部分信息被修改或者删除。(若用户会员信息被删除,则节点1.2对应的索引标识应该由0修改为2,用于表示节点2对应的用户会员信息被删除,同时节点1.2以下的所有节点的索引标识都应该由0修改为2)。
可选地,可以通过为每一个树节点额外添加一个vector用来存放被删除节点的key。
通过本实施例,通过在获取到操作指令后,根据操作指令的不同使用不同的处理方式处理第一成员对象,从而提升了对第一成员对象进行调整的灵活性。
作为一种可选的实施方案,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象包括:
S1,将被修改为第二目标状态的第一成员对象确定为特征成员对象;和/或
S2,将删除向量中的第一成员对象确定为特征成员对象。
由于操作指令的不同,对第一成员对象的处理方式不同,因此在确定特征成员对象的方法也不相同。继续结合图4、5进行说明。在操作指令为修改指令的情况下,节点1.21对应的索引标识所记录的内容由0变为了1,因此,确定第一成员对象为特征成员对象。而在操作指令为删除指令的情况下,节点1.21已经被删除,而删除向量中存储了所有被删除的节点1.21。因此,根据存储向量确定存储向量中的节点1.21为特征成员对象。
例如,在确定特征成员对象后,可以根据以下代码进行同步发送数据:
可以看出,采用该中方式,需要同步发送的数据量几乎降到了最低。
通过本实施例,通过确定特征成员对象,并同步发送特征成员对象,达到了降低需要同步发送的数据量的效果,提高了数据同步发送的效率。
作为一种可选的实施方案,同步发送确定出的特征成员对象包括以下至少之一:
(1)在特征成员对象的发送标记指示发送给数据库的情况下,将特征成员对象同步发送给数据库;
(2)在特征成员对象的发送标记指示发送给人机交互应用客户端的情况下,将特征成员对象同步发送给人机交互应用客户端。
由于第一成员对象可能有不同的类型,比如一种是进行逻辑运算的,一种是在人机交互客户端进行显示的。因此,在同步发送第一成员对象时,也可以根据第一成员对象的类型选择同步发送的目标。
例如,用于记录玩家上次登录的时间lastLoginTime,该内容无需发送给人机交互应用客户端,只需要存入数据库即可。而对于在人机交互应用客户端是否显示弹窗popTips,该部分内容无需存入数据库,仅需要发送给人机交互应用客户端进行显示即可。因此,对于不同的情况,选择不同的标记方法。例如,通过以下代码进行标记。
上述uid用于标记用户的ID,onlydb表示该数据需要发送给数据库,onlycs表示该数据需要在人机交互应用客户端进行显示。此时,可以根据接收到的操作指令中的具体内容,决定将数据同步发送到数据库还是同步发送到人机交互应用客户端。
通过本实施例,通过选择数据库或者人机交互应用客户端作为数据发送对象,从而进一步减少了需要同步发送的数据的数量,提高了数据同步发送的效率。
以下结合图6对上述数据同步方法进行说明。如图6所示,人机交互服务器604通过步骤S602从人机交互应用客户端602获取人机交互应用客户端602发送的操作指令,其中,操作指令用于修改第一成员对象。人机交互服务器获取到上述操作指令后,根据上述操作指令,通过步骤S604修改第一成员变量。在修改了第一成员变量后,通过步骤S606,根据修改的第一成员变量及与第一成员变量对应的第二成员变量确定特征成员变量,并在确定了特征成员变量之后,通过步骤S608将特征成员变量发送到人机交互应用客户端602或者通过步骤S610将特征成员变量回写入数据库606。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
根据本发明实施例的另一个方面,还提供了一种用于实施上述数据同步方法的数据同步装置,如图7所示,该装置包括:
(1)第一获取单元702,用于获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;
(2)第一修改单元704,用于响应操作指令修改第一成员对象;
(3)第一确定单元706,用于根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;
(4)同步发送单元708,用于同步发送确定出的特征成员对象。
可选地,作为一种可选的实施方式,上述数据同步装置可以但不限于应用于客户端与服务器同步数据的过程中。例如,同步游戏数据、商业数据、人口数据等数据的过程。
以下以客户端与服务器同步游戏数据的场景进行说明。用户在应用客户端进行游戏的过程中,会因为游戏的进程而产生新的数据。应用客户端在产生上述新的数据后,向服务器发送操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象。服务器在接收到上述操作指令后,根据新的数据对第一成员变量进行修改,并在修改以后,根据第一成员对象和与第一成员对象关联的第二成员对象确定出特征成员对象,并特征成员对象同步发送到应用客户端,以供应用客户端进行数据的同步。
需要说明的是,在本实施例中,通过人机交互应用客户端发送操作指令,响应操作指令修改第一成员对象,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,以及同步发送确定出的特征成员对象的方法,从而在接收到对第一成员变量进行修改的操作指令并对第一成员变量进行修改以后,通过第一成员对象及与第一成员对象关联的第二成员对象确定出特征成员对象,并同步发送特征成员对象,达到了在对数据进行同步的过程中,只同步根据第一成员对象及与第一成员对象关联的第二成员对象确定的特征成员对象的效果,进而减少了需要同步的数据量,提高了同步效率,解决了相关技术中存在的对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的问题。
可选地,在根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象之前,还包括:获取与目标数据结构对应的树结构,其中,第一成员对象位于树结构中的叶子节点;根据树结构中叶子节点所属的父节点确定第二成员对象。
例如,以下结合图3对上述确定第二成员对象的过程进行说明。如图3所示,图3中示出了一种树形结构,其中,第一成员对象位于树形结构的叶子节点1.2。而在确定第二成员对象时,根据图3所示的树结构寻找第一成员对象所处的叶子节点1.2的父节点,为节点1。则节点1为第二成员对象。
可选地,在根据树结构中叶子节点所属的父节点确定第二成员对象之后,还包括:重复执行以下步骤,直至确定出叶子节点所属的全部的父节点分别对应的第二成员对象,其中,全部的父节点包括:叶子节点在树结构的各级节点中所属的父节点:确定叶子节点在数据结构的当前级节点中所属的当前父节点;获取当前父节点所对应的第二成员对象的索引标识;根据第二成员对象的索引标识确定与第二成员对象对应的标记数组,其中,第二成员对象对应的标记数组用于记录第二成员对象的对象状态;将第二成员对象的对象状态修改为第一目标状态,其中,第一目标状态用于指示第二成员对象与被修改的第一成员对象关联;获取位于当前级节点的上一级节点作为当前级节点,其中,当前级节点从属于上一级节点。
以下结合图4对上述获取第二成员对象的过程进行说明。
如图4所示,在一个有三个层级的树结构中,每一个节点都存在一个与节点对应的索引标识,索引标识的值为0,所有的索引标识组成标记数组。在上述树结构中,处于树结构第三层的节点1.21为第一成员对象,则标记数组中的与节点1.21对应的索引标识的值由0修改为1。同时,根据节点1.21为第一成员对象,向树结构的上层进行追溯,追溯到节点1.2,节点1.2,则将标记数组中与节点1.2对应的索引标识的值由0修改为1,同时继续根据节点1.2向树结构的上层进行追溯,追溯到节点1,则将标记数组中与节点1对应的索引标识的值由0修改为1。重复上述过程,直到追溯到树结构的根节点(图4中的节点1为图4的树结构的根节点)。此时,标记数组中多个值为1的索引标识记录了改变的第二成员对象。
以下以第一成员对象为用户会员等级为例进行说明。当接收到客户端发送的操作指令后,操作指令中携带了用户的最新的会员等级信息。以节点1.21记录用户的会员等级信息为例,当接收到用户最新的会员等级信息后,将用户新的会员等级信息替换节点1.21中所携带的用户的陈旧的会员等级信息,并将与节点1.21对应的索引标识的值由0变为1,用于记录用户的等级信息已经进行了修改。同时,对应地,节点1.2对应用户的会员信息,会员信息包括会员等级信息。将与节点1.2对应的索引标识的值由0变为1,用于表示会员信息中存在部分信息被修改。同时,对应地,节点1对应用户的信息,用户信息包括用户的会员信息。将与节点1对应的索引标识由0变为1,表示会员信息中的部分信息被修改。此时,根据与节点1.21、节点1.2与节点1对应的索引标识的状态(状态为1),则可以快速定位到被修改的内容为用户的会员等级信息。
可选地,在确定出第二成员对象之后,还包括:将被修改为第一目标状态的第二成员对象确定为特征成员对象。
例如,继续结合图4进行说明。在经过上述改变索引标识所记录的值的过程之后,确定出了树结构中的节点1、节点1.2、节点1.21为第二成员对象,则此时将上述节点1、节点1.2、节点1.21确定为特征成员对象。
可选地,在响应操作指令修改第一成员对象之后,还包括:获取第一成员对象的修改类型;在修改类型指示为调整数值的情况下,将第一成员对象的对象状态修改为第二目标状态,其中,第二目标状态用于指示第一成员对象已被调整;在修改类型指示为删除数值的情况下,将第一成员对象的索引标识存储到删除向量中。其中,将第一成员对象的对象状态修改为第二目标状态包括:获取叶子节点所对应的第一成员对象的索引标识;根据第一成员对象的索引标识确定与第一成员对象对应的标记数组,其中,第一成员对象对应的标记数组用于记录第一成员对象的对象状态;将第一成员对象的对象状态修改为第二目标状态。
具体结合图4与图5进行说明。如图4所示,节点1.21为第一成员对象,当接收到修改第一成员对象的操作指令后,在操作指令为调整数值的情况下,对节点1.21的数值进行修改,同时将节点1.21对应的索引标识的值由0修改为1,用于表示该索引标识对应的节点已经被修改。在操作指令为删除数值的情况下,如图5所示,将节点1.21的数据删除,并将节点1.21存储到删除向量中,用于表示节点1.21的数据已经删除。此时,删除向量中记载了所有被删除的节点。
继续以上述第一成员对象为会员等级信息进行说明。如果会员注销了,则此时需要删除会员相关的信息。因此,节点1.21对应的会员等级信息被删除。此时,节点1.21对应的索引标识修改为2,表示会员等级信息已经被删除。同时,节点对应会员信息,节点1.2对应的索引标识由0修改为1,表示用户会员信息中的部分信息被修改或者删除,节点1表示用户信息,将节点1对应的索引标识由0修改为1,表示用户信息中部分信息被修改或者删除。(若用户会员信息被删除,则节点1.2对应的索引标识应该由0修改为2,用于表示节点2对应的用户会员信息被删除,同时节点1.2以下的所有节点的索引标识都应该由0修改为2)。
可选地,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象包括:将被修改为第二目标状态的第一成员对象确定为特征成员对象;和/或将删除向量中的第一成员对象确定为特征成员对象。
由于操作指令的不同,对第一成员对象的处理方式不同,因此在确定特征成员对象的方法也不相同。继续结合图4、5进行说明。在操作指令为修改指令的情况下,节点1.21对应的索引标识所记录的内容由0变为了1,因此,确定第一成员对象为特征成员对象。而在操作指令为删除指令的情况下,节点1.21已经被删除,而删除向量中存储了所有被删除的节点1.21。因此,根据存储向量确定存储向量中的节点1.21为特征成员对象。
可选地,同步发送确定出的特征成员对象包括以下至少之一:在特征成员对象的发送标记指示发送给数据库的情况下,将特征成员对象同步发送给数据库;在特征成员对象的发送标记指示发送给人机交互应用客户端的情况下,将特征成员对象同步发送给人机交互应用客户端。
由于第一成员对象可能有不同的类型,比如一种是进行逻辑运算的,一种是在人机交互客户端进行显示的。因此,在同步发送第一成员对象时,也可以根据第一成员对象的类型选择同步发送的目标。
例如,用于记录玩家上次登录的时间lastLoginTime,该内容无需发送给人机交互应用客户端,只需要存入数据库即可。而对于在人机交互应用客户端是否显示弹窗popTips,该部分内容无需存入数据库,仅需要发送给人机交互应用客户端进行显示即可。因此,对于不同的情况,选择不同的标记方法。例如,通过以下代码进行标记。
上述uid用于标记用户的ID,onlydb表示该数据需要发送给数据库,onlycs表示该数据需要在人机交互应用客户端进行显示。此时,可以根据接收到的操作指令中的具体内容,决定将数据同步发送到数据库还是同步发送到人机交互应用客户端。
通过本实施例,通过通过获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;响应操作指令修改第一成员对象;根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;同步发送确定出的特征成员对象的方法,从而在接收到对第一成员变量进行修改的操作指令后,通过第一成员对象及与第一成员对象关联的第二成员对象确定出特征成员对象,并同步发送特征成员对象,达到了在对数据进行同步的过程中,只同步根据第一成员对象及与第一成员对象关联的第二成员对象确定的特征成员对象的效果,进而减少了需要同步的数据量,提高了同步效率,解决了相关技术中,在对少量被修改的数据进行同步时,不得不同时发送数据模块中大量其他不相关的数据的技术问题。
作为一种可选的实施方案,上述装置还包括:
(1)第二获取单元,用于在根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象之前,获取与目标数据结构对应的树结构,其中,第一成员对象位于树结构中的叶子节点;
(2)第二确定单元,用于根据树结构中叶子节点所属的父节点确定第二成员对象。
例如,以下结合图3对上述确定第二成员对象的过程进行说明。如图3所示,图3中示出了一种树形结构,其中,第一成员对象位于树形结构的叶子节点1.2。而在确定第二成员对象时,根据图3所示的树结构寻找第一成员对象所处的叶子节点1.2的父节点,为节点1。则节点1为第二成员对象。
通过本实施例,通过获取目标数据结构中对应的树结构以及根据树结构的叶子节点确定第二成员对象,从而达到了准确确定第二成员对象,进而准确确定特征成员对象的效果,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,上述装置还包括:
(1)第三确定单元,用于在根据树结构中叶子节点所属的父节点确定第二成员对象之后,重复执行以下步骤,直至确定出叶子节点所属的全部的父节点分别对应的第二成员对象,其中,全部的父节点包括:叶子节点在树结构的各级节点中所属的父节点:
S1,确定叶子节点在数据结构的当前级节点中所属的当前父节点;
S2,获取当前父节点所对应的第二成员对象的索引标识;
S3,根据第二成员对象的索引标识确定与第二成员对象对应的标记数组,其中,第二成员对象对应的标记数组用于记录第二成员对象的对象状态;
S4,将第二成员对象的对象状态修改为第一目标状态,其中,第一目标状态用于指示第二成员对象与被修改的第一成员对象关联;
S5,获取位于当前级节点的上一级节点作为当前级节点,其中,当前级节点从属于上一级节点。
以下结合图4对上述获取第二成员对象的过程进行说明。
如图4所示,在一个有三个层级的树结构中,每一个节点都存在一个与节点对应的索引标识,索引标识的值为0,所有的索引标识组成标记数组。在上述树结构中,处于树结构第三层的节点1.21为第一成员对象,则标记数组中的与节点1.21对应的索引标识的值由0修改为1。同时,根据节点1.21为第一成员对象,向树结构的上层进行追溯,追溯到节点1.2,节点1.2,则将标记数组中与节点1.2对应的索引标识的值由0修改为1,同时继续根据节点1.2向树结构的上层进行追溯,追溯到节点1,则将标记数组中与节点1对应的索引标识的值由0修改为1。重复上述过程,直到追溯到树结构的根节点(图4中的节点1为图4的树结构的根节点)。此时,标记数组中多个值为1的索引标识记录了改变的第二成员对象。
以下以第一成员对象为用户会员等级为例进行说明。当接收到客户端发送的操作指令后,操作指令中携带了用户的最新的会员等级信息。以节点1.21记录用户的会员等级信息为例,当接收到用户最新的会员等级信息后,将用户新的会员等级信息替换节点1.21中所携带的用户的陈旧的会员等级信息,并将与节点1.21对应的索引标识的值由0变为1,用于记录用户的等级信息已经进行了修改。同时,对应地,节点1.2对应用户的会员信息,会员信息包括会员等级信息。将与节点1.2对应的索引标识的值由0变为1,用于表示会员信息中存在部分信息被修改。同时,对应地,节点1对应用户的信息,用户信息包括用户的会员信息。将与节点1对应的索引标识由0变为1,表示会员信息中的部分信息被修改。此时,根据与节点1.21、节点1.2与节点1对应的索引标识的状态(状态为1),则可以快速定位到被修改的内容为用户的会员等级信息。
可选地,可以通过player.attr,定义了玩家,道具,标签等内容以及它们之间的关系,并且通过以下代码设置,道具,标签等内容以及它们之间的关系所对应的索引标识。
class Player{
static int ATTR_INDEX_ITEM=0;
static int ATTR_INDEX_LABEL=1;
static int_ALL_ATTR_COUNT=2;
通过以下代码,记录标记数组中发生了改变的第二成员变量。
byte[]dirtyData=new byte[(_ALL_ATTR_COUNT+7)/8];
这样,即可完成对标记数组中的第二成员变量的标记。
同时,为了能够成功追溯父节点,因此增加owner指针,用于指向叶子节点所属于的父节点,从而可以成功追溯叶子节点的父节点。
通过本实施例,通过上述步骤以确定第二成员变量,从而达到了准确确定第二成员对象,进而准确确定特征成员对象的效果,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,上述第一确定单元包括:
(1)第一确定模块,用于将被修改为第一目标状态的第二成员对象确定为特征成员对象。
例如,继续结合图4进行说明。在经过上述改变索引标识所记录的值的过程之后,确定出了树结构中的节点1、节点1.2、节点1.21为第二成员对象,则此时将上述节点1、节点1.2、节点1.21确定为特征成员对象。
通过本实施例,通过将被修改为第一目标状态的第二成员对象确定为特征成员对象,从而准确确定第二成员对象,减少了在数据同步过程中需发送的数据量。
作为一种可选的实施方案,上述装置还包括:
(1)第三获取单元,用于在响应操作指令修改第一成员对象之后,获取第一成员对象的修改类型;
(2)第二修改单元,用于在修改类型指示为调整数值的情况下,将第一成员对象的对象状态修改为第二目标状态,其中,第二目标状态用于指示第一成员对象已被调整;
(3)存储单元,用于在修改类型指示为删除数值的情况下,将第一成员对象的索引标识存储到删除向量中。
其中,作为一种可选的实施方式,上述第二修改单元还包括:
(1)获取模块,用于获取叶子节点所对应的第一成员对象的索引标识;
(2)第二确定模块,用于根据第一成员对象的索引标识确定与第一成员对象对应的标记数组,其中,第一成员对象对应的标记数组用于记录第一成员对象的对象状态;
(3)修改模块,用于将第一成员对象的对象状态修改为第二目标状态。
具体结合图4与图5进行说明。如图4所示,节点1.21为第一成员对象,当接收到修改第一成员对象的操作指令后,在操作指令为调整数值的情况下,对节点1.21的数值进行修改,同时将节点1.21对应的索引标识的值由0修改为1,用于表示该索引标识对应的节点已经被修改。在操作指令为删除数值的情况下,如图5所示,将节点1.21的数据删除,并将节点1.21存储到删除向量中,用于表示节点1.21的数据已经删除。此时,删除向量中记载了所有被删除的节点。
继续以上述第一成员对象为会员等级信息进行说明。如果会员注销了,则此时需要删除会员相关的信息。因此,节点1.21对应的会员等级信息被删除。此时,节点1.21对应的索引标识修改为2,表示会员等级信息已经被删除。同时,节点对应会员信息,节点1.2对应的索引标识由0修改为1,表示用户会员信息中的部分信息被修改或者删除,节点1表示用户信息,将节点1对应的索引标识由0修改为1,表示用户信息中部分信息被修改或者删除。(若用户会员信息被删除,则节点1.2对应的索引标识应该由0修改为2,用于表示节点2对应的用户会员信息被删除,同时节点1.2以下的所有节点的索引标识都应该由0修改为2)。
可选地,可以通过为每一个树节点额外添加一个vector用来存放被删除节点的key。
通过本实施例,通过在获取到操作指令后,根据操作指令的不同使用不同的处理方式处理第一成员对象,从而提升了对第一成员对象进行调整的灵活性。
作为一种可选的实施方案,上述第一确定单元706还包括:
(1)第三确定模块802,用于将被修改为第二目标状态的第一成员对象确定为特征成员对象;和/或
(2)第四确定模块804,用于将删除向量中的第一成员对象确定为特征成员对象。
由于操作指令的不同,对第一成员对象的处理方式不同,因此在确定特征成员对象的方法也不相同。继续结合图4、5进行说明。在操作指令为修改指令的情况下,节点1.21对应的索引标识所记录的内容由0变为了1,因此,确定第一成员对象为特征成员对象。而在操作指令为删除指令的情况下,节点1.21已经被删除,而删除向量中存储了所有被删除的节点1.21。因此,根据存储向量确定存储向量中的节点1.21为特征成员对象。
例如,在确定特征成员对象后,可以根据以下代码进行同步发送数据:
可以看出,采用该中方式,需要同步发送的数据量几乎降到了最低。
通过本实施例,通过确定特征成员对象,并同步发送特征成员对象,达到了降低需要同步发送的数据量的效果,提高了数据同步发送的效率。
作为一种可选的实施方案,如图9所示,上述同步发送单元包括以下至少之一:
(1)第一同步发送模块902,用于在特征成员对象的发送标记指示发送给数据库的情况下,将特征成员对象同步发送给数据库;
(2)第二同步发送模块904,用于在特征成员对象的发送标记指示发送给人机交互应用客户端的情况下,将特征成员对象同步发送给人机交互应用客户端。
由于第一成员对象可能有不同的类型,比如一种是进行逻辑运算的,一种是在人机交互客户端进行显示的。因此,在同步发送第一成员对象时,也可以根据第一成员对象的类型选择同步发送的目标。
例如,用于记录玩家上次登录的时间lastLoginTime,该内容无需发送给人机交互应用客户端,只需要存入数据库即可。而对于在人机交互应用客户端是否显示弹窗popTips,该部分内容无需存入数据库,仅需要发送给人机交互应用客户端进行显示即可。因此,对于不同的情况,选择不同的标记方法。例如,通过以下代码进行标记。
上述uid用于标记用户的ID,onlydb表示该数据需要发送给数据库,onlycs表示该数据需要在人机交互应用客户端进行显示。此时,可以根据接收到的操作指令中的具体内容,决定将数据同步发送到数据库还是同步发送到人机交互应用客户端。
通过本实施例,通过选择数据库或者人机交互应用客户端作为数据发送对象,从而进一步减少了需要同步发送的数据的数量,提高了数据同步发送的效率。
以下结合图6对上述数据同步方法进行说明。如图6所示,人机交互服务器604通过步骤S602从人机交互应用客户端602获取人机交互应用客户端602发送的操作指令,其中,操作指令用于修改第一成员对象。人机交互服务器获取到上述操作指令后,根据上述操作指令,通过步骤S604修改第一成员变量。在修改了第一成员变量后,通过步骤S606,根据修改的第一成员变量及与第一成员变量对应的第二成员变量确定特征成员变量,并在确定了特征成员变量之后,通过步骤S608将特征成员变量发送到人机交互应用客户端602或者通过步骤S610将特征成员变量回写入数据库606。
根据本发明实施例的又一个方面,还提供了一种用于实施上述数据同步方法的电子装置,如图10所示,该电子装置包括存储器1002、处理器1004、传输装置1006与显示器1008。该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;
S2,响应操作指令修改第一成员对象;
S3,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;
S4,同步发送确定出的特征成员对象。
可选地,本领域普通技术人员可以理解,图10所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图10中所示更多或者更少的组件(如网络接口等),或者具有与图10所示不同的配置。
其中,存储器1002可用于存储软件程序以及模块,如本发明实施例中的数据同步方法和装置对应的程序指令/模块,处理器1004通过运行存储在存储器1002内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据同步方法。存储器1002可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1002可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1006用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1006包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1006为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1002用于存储目标数据结构及特征成员对象等内容。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,获取人机交互应用客户端发送的操作指令,其中,操作指令用于指示所要修改的目标数据结构中的第一成员对象;
S2,响应操作指令修改第一成员对象;
S3,根据第一成员对象及在目标数据结构中与第一成员对象关联的第二成员对象确定特征成员对象,其中,在目标数据结构中第二成员对象包括第一成员对象;
S4,同步发送确定出的特征成员对象。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,获取与目标数据结构对应的树结构,其中,第一成员对象位于树结构中的叶子节点;
S2,根据树结构中叶子节点所属的父节点确定第二成员对象。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,确定叶子节点在数据结构的当前级节点中所属的当前父节点;
S2,获取当前父节点所对应的第二成员对象的索引标识;
S3,根据第二成员对象的索引标识确定与第二成员对象对应的标记数组,其中,第二成员对象对应的标记数组用于记录第二成员对象的对象状态;
S4,将第二成员对象的对象状态修改为第一目标状态,其中,第一目标状态用于指示第二成员对象与被修改的第一成员对象关联;
S5,获取位于当前级节点的上一级节点作为当前级节点,其中,当前级节点从属于上一级节点。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,将被修改为第一目标状态的第二成员对象确定为特征成员对象。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,获取第一成员对象的修改类型;
S2,在修改类型指示为调整数值的情况下,将第一成员对象的对象状态修改为第二目标状态,其中,第二目标状态用于指示第一成员对象已被调整;
S3,在修改类型指示为删除数值的情况下,将第一成员对象的索引标识存储到删除向量中。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,获取叶子节点所对应的第一成员对象的索引标识;
S2,根据第一成员对象的索引标识确定与第一成员对象对应的标记数组,其中,第一成员对象对应的标记数组用于记录第一成员对象的对象状态;
S3,将第一成员对象的对象状态修改为第二目标状态。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,将被修改为第二目标状态的第一成员对象确定为特征成员对象;
S2,将删除向量中的第一成员对象确定为特征成员对象。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,在特征成员对象的发送标记指示发送给数据库的情况下,将特征成员对象同步发送给数据库;
S2,在特征成员对象的发送标记指示发送给人机交互应用客户端的情况下,将特征成员对象同步发送给人机交互应用客户端。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种数据同步方法,其特征在于,包括:
获取与目标数据结构对应的树结构,其中,第一成员对象位于所述树结构中的叶子节点;
根据所述树结构中所述叶子节点所属的父节点确定第二成员对象;
获取人机交互应用客户端发送的操作指令,其中,所述操作指令用于指示所要修改的目标数据结构中的所述第一成员对象;
响应所述操作指令修改所述第一成员对象;
将被修改为第一目标状态的所述目标数据结构中与所述第一成员对象关联的所述第二成员对象确定为特征成员对象,其中,在所述目标数据结构中所述第二成员对象包括所述第一成员对象,所述第一目标状态用于指示所述第二成员对象与被修改的所述第一成员对象关联;
在所述特征成员对象的类型为进行逻辑运算的情况下,将所述特征成员对象同步发送给所述数据库;在所述特征成员对象的类型为在所述人机交互客户端进行显示的情况下,将所述特征成员对象同步发送给所述人机交互应用客户端。
2.根据权利要求1所述的方法,其特征在于,在所述根据所述树结构中所述叶子节点所属的父节点确定所述第二成员对象之后,还包括:
重复执行以下步骤,直至确定出所述叶子节点所属的全部的父节点分别对应的所述第二成员对象,其中,所述全部的父节点包括:所述叶子节点在所述树结构的各级节点中所属的父节点:
确定所述叶子节点在所述数据结构的当前级节点中所属的当前父节点;
获取所述当前父节点所对应的所述第二成员对象的索引标识;
根据所述第二成员对象的索引标识确定与所述第二成员对象对应的标记数组,其中,所述第二成员对象对应的标记数组用于记录所述第二成员对象的对象状态;
将所述第二成员对象的对象状态修改为所述第一目标状态;
获取位于所述当前级节点的上一级节点作为所述当前级节点,其中,所述当前级节点从属于所述上一级节点。
3.根据权利要求1所述的方法,其特征在于,在所述响应所述操作指令修改所述第一成员对象之后,还包括:
获取所述第一成员对象的修改类型;
在所述修改类型指示为调整数值的情况下,将所述第一成员对象的对象状态修改为第二目标状态,其中,所述第二目标状态用于指示所述第一成员对象已被调整;
在所述修改类型指示为删除数值的情况下,将所述第一成员对象的索引标识存储到删除向量中。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一成员对象的对象状态修改为第二目标状态包括:
获取所述叶子节点所对应的所述第一成员对象的索引标识;
根据所述第一成员对象的索引标识确定与所述第一成员对象对应的标记数组,其中,所述第一成员对象对应的标记数组用于记录所述第一成员对象的对象状态;
将所述第一成员对象的对象状态修改为所述第二目标状态。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第一成员对象及在所述目标数据结构中与所述第一成员对象关联的第二成员对象确定特征成员对象包括:
将被修改为所述第二目标状态的所述第一成员对象确定为所述特征成员对象;和/或
将所述删除向量中的所述第一成员对象确定为所述特征成员对象。
6.一种数据同步装置,其特征在于,包括:
第二获取单元,用于在根据第一成员对象及在目标数据结构中与所述第一成员对象关联的第二成员对象确定特征成员对象之前,获取与所述目标数据结构对应的树结构,其中,所述第一成员对象位于所述树结构中的叶子节点;
第二确定单元,用于根据所述树结构中所述叶子节点所属的父节点确定所述第二成员对象;
第一获取单元,用于获取人机交互应用客户端发送的操作指令,其中,所述操作指令用于指示所要修改的目标数据结构中的所述第一成员对象;
第一修改单元,用于响应所述操作指令修改所述第一成员对象;
第一确定单元,用于根据所述第一成员对象及在所述目标数据结构中与所述第一成员对象关联的第二成员对象确定特征成员对象,其中,在所述目标数据结构中所述第二成员对象包括所述第一成员对象,包括:第一确定模块,用于将被修改为第一目标状态的所述第二成员对象确定为特征成员对象,其中,所述第一目标状态用于指示所述第二成员对象与被修改的所述第一成员对象关联;
同步发送单元,用于同步发送确定出的所述特征成员对象,其中,所述同步发送单元包括:第一同步发送模块,用于在所述特征成员对象的类型为进行逻辑运算的情况下,将所述特征成员对象同步发送给所述数据库;第二同步发送模块,用于在所述特征成员对象的类型为在所述人机交互客户端进行显示的情况下,将所述特征成员对象同步发送给所述人机交互应用客户端。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三确定单元,用于在所述根据所述树结构中所述叶子节点所属的父节点确定所述第二成员对象之后,重复执行以下步骤,直至确定出所述叶子节点所属的全部的父节点分别对应的所述第二成员对象,其中,所述全部的父节点包括:所述叶子节点在所述树结构的各级节点中所属的父节点:
确定所述叶子节点在所述数据结构的当前级节点中所属的当前父节点;
获取所述当前父节点所对应的所述第二成员对象的索引标识;
根据所述第二成员对象的索引标识确定与所述第二成员对象对应的标记数组,其中,所述第二成员对象对应的标记数组用于记录所述第二成员对象的对象状态;
将所述第二成员对象的对象状态修改为所述第一目标状态;
获取位于所述当前级节点的上一级节点作为所述当前级节点,其中,所述当前级节点从属于所述上一级节点。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三获取单元,用于在所述响应所述操作指令修改所述第一成员对象之后,获取所述第一成员对象的修改类型;
第二修改单元,用于在所述修改类型指示为调整数值的情况下,将所述第一成员对象的对象状态修改为第二目标状态,其中,所述第二目标状态用于指示所述第一成员对象已被调整;
存储单元,用于在所述修改类型指示为删除数值的情况下,将所述第一成员对象的索引标识存储到删除向量中。
9.根据权利要求8所述的装置,其特征在于,所述第二修改单元包括:
获取模块,用于获取所述叶子节点所对应的所述第一成员对象的索引标识;
第二确定模块,用于根据所述第一成员对象的索引标识确定与所述第一成员对象对应的标记数组,其中,所述第一成员对象对应的标记数组用于记录所述第一成员对象的对象状态;
修改模块,用于将所述第一成员对象的对象状态修改为所述第二目标状态。
10.根据权利要求8所述的装置,其特征在于,所述第一确定单元包括:
第三确定模块,用于将被修改为所述第二目标状态的所述第一成员对象确定为所述特征成员对象;和/或
第四确定模块,用于将所述删除向量中的所述第一成员对象确定为所述特征成员对象。
11.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至5任一项中所述的方法。
12.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至5任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235520.9A CN108737487B (zh) | 2018-03-21 | 2018-03-21 | 数据同步方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235520.9A CN108737487B (zh) | 2018-03-21 | 2018-03-21 | 数据同步方法和装置、存储介质及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108737487A CN108737487A (zh) | 2018-11-02 |
CN108737487B true CN108737487B (zh) | 2020-09-29 |
Family
ID=63940449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810235520.9A Active CN108737487B (zh) | 2018-03-21 | 2018-03-21 | 数据同步方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108737487B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015804B (zh) * | 2019-05-28 | 2024-07-09 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、设备及存储介质 |
CN112214208A (zh) * | 2020-10-20 | 2021-01-12 | 平安国际智慧城市科技股份有限公司 | 一种多级数据的处理方法及其相关产品 |
CN113934742B (zh) * | 2021-10-26 | 2023-07-04 | 冷杉云(北京)科技股份有限公司 | 数据更新方法、节点信息存储方法、电子设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383276B2 (en) * | 2004-01-30 | 2008-06-03 | Microsoft Corporation | Concurrency control for B-trees with node deletion |
CN100592291C (zh) * | 2007-03-29 | 2010-02-24 | 腾讯科技(深圳)有限公司 | 一种对网页进行动态更新的方法、系统及设备 |
CN101686121A (zh) * | 2008-09-25 | 2010-03-31 | 北大方正集团有限公司 | 一种数据同步方法、系统及装置 |
CN101374307B (zh) * | 2008-09-26 | 2012-08-22 | 北京大学 | 一种移动设备中更新数字内容信息的方法及装置 |
CN105224532B (zh) * | 2014-05-28 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN105843809B (zh) * | 2015-01-13 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置 |
-
2018
- 2018-03-21 CN CN201810235520.9A patent/CN108737487B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108737487A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294816B (zh) | 页面信息的处理方法和装置 | |
CN108255847B (zh) | 页面生成方法及装置 | |
US11221743B2 (en) | Information processing method, terminal, server, and computer storage medium | |
CN108737487B (zh) | 数据同步方法和装置、存储介质及电子装置 | |
CN107092652B (zh) | 目标页面的导航方法及装置 | |
CN108399072A (zh) | 应用页面更新方法和装置 | |
CN111309445B (zh) | 程序运行方法和装置及存储介质 | |
CN106649446B (zh) | 信息推送方法和装置 | |
CN105550252A (zh) | 一种文件定位方法、装置及电子设备 | |
CN102223361A (zh) | 通讯系统及其相关数据同步方法 | |
CN110865834B (zh) | 应用程序界面更新方法、装置、可读存储介质及终端设备 | |
CN104133765B (zh) | 网络活动的测试用例发送方法及测试用例服务器 | |
CN111258680B (zh) | 资源加载方法和装置、存储介质及电子装置 | |
CN105357204A (zh) | 生成终端识别信息的方法及装置 | |
CN104182299A (zh) | 电子设备软件恢复系统与方法 | |
CN110833693A (zh) | 游戏运行方法和装置、存储介质及电子装置 | |
CN108984339B (zh) | 数据恢复方法及相关产品 | |
CN106062693A (zh) | 桌面分享方法和移动终端 | |
CN107648854B (zh) | 一种游戏分类方法、装置及电子设备 | |
CN109213955B (zh) | 数据处理方法及相关设备 | |
CN106682014B (zh) | 游戏展示数据的生成方法和装置 | |
CN108845995B (zh) | 数据处理方法、装置、存储介质和电子装置 | |
CN112799955A (zh) | 模型变更的检测方法、装置和存储介质及电子设备 | |
CN112541645B (zh) | 伴随车辆产品项目开发的数据处理方法、系统及相关装置 | |
CN113486025B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210204 Address after: 5 / F, area C, 1801 Hongmei Road, Xuhui District, Shanghai, 201200 Patentee after: Tencent Technology (Shanghai) Co.,Ltd. Address before: 518000 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 Floors Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |
|
TR01 | Transfer of patent right |