一种数据变更感知和快速同步的方法

文档序号:9200397阅读:213来源:国知局
一种数据变更感知和快速同步的方法
【技术领域】
[0001]本发明涉及一种用户信息数据差异化更新的方法,具体涉及一种数据变更感知和快速同步的方法,属于计算机即时通讯技术领域。
【背景技术】
[0002]在即时通信系统中,一个用户会有多个设备,用户在设备上进行登录的时候需要能够获取到最新的个人信息,包括基本信息(姓名、出生日期、职务等),群组信息(群组列表、群组基本信息、群组成员信息等)、好友信息(好友列表、好友个人信息等)、白名单信息等等。这些信息中个人基本信息是有当前用户进行维护,而群组、好友等很多信息,特别是成员的个人信息是由其他人员自己维护的;同时个人信息的相关元数据有可能会根据业务的发展进行动态调整;这些信息需要在当前用户的所有设备上进行同步,保持数据的一致性。
[0003]目前的即时通信系统中,针对个人信息数据的更新主要有以下几种办法:
[0004]1、全部更新,即客户端登录之后向服务器获取最新的全部数据,包括人员的基本信息、该人员所属的群组列表,每个群组的成员列表,每个群成员的个人基本信息,好友列表,好友的基本信息等。
[0005]2.根据版本号进行差异化更新,即从服务器上获取该人信息的最新版本,并根据设备上缓存的版本号向服务器获取之间差异版本的变动情况,并根据变动情况进行本地数据的修改。
[0006]在上面所述的两种办法中,我们可以看到第一种办法的好处在于能够确保数据的一致性,但是却存在同步数据量大,比如如果一个人员的基本属性有20项,共计数据库约200字节;该人员如果拥有20个群组(平均每个群组20人员,群的基本信息约300字节)和50个好友,则总计数据量大小约为10k字节左右,如果再加上白名单等数据量会更大。对于移动设备来讲在网络不稳定的情况下会多次同步数据,而每次数据量累计起来会很大。
[0007]第二种方法的好处在于如果客户端和服务器之间的数据差异不大的情况下数据量会小很多,如果两次同步过程之间没有数据修改,则同步的数据主要就是版本号信息,数据量会少很多,对于移动设备来讲会节省很多流量信息。
[0008]但是这个方法的问题在于很难确保双方数据的一致性,无论是服务器还是客户端,如果有一次数据同步错误,则该数据差异不会在后续的通过过程中得到修正,累积起来数据不一致的概率会明显增大。

【发明内容】

[0009]本发明的目的是为了克服已有技术的缺陷,为了解决数据同步过程中的数据量和一致性问题,提出一种数据变更感知和快速同步的方法。
[0010]一种数据变更感知和快速同步的方法,其实现步骤如下:
[0011]步骤一、数据变更的时候,服务器计算其属性名和值的hash值;
[0012]步骤二、服务器计算该数据的父级节点数据的hash值;
[0013]步骤三、父节点在更新hash值的时候,首先将所有子节点按照属性名称进行字典序排序,然后将子节点的属性名和子节点的hash值合并成一个字符串,并计算其hash值;
[0014]步骤四、以此方式逐步计算到顶节点的hash值;
[0015]步骤五、客户端也以此方式计算自己的hash值,并在登录之后将该hash值与服务器上的顶节点hash值进行对比,如果hash值一致则说明数据没有变化,包括子节点;如果hash值不一致,则获取原值并进行比对,找出发生变化的子节点或者属性,然后获取该子节点对应的值并进行同步。
[0016]自此,经过同步之后,客户端和服务器之间的hash值保持一致,数据也同时保持一致,而且实现了差异化的更新机制。
[0017]有益效果:
[0018]1、本发明通过对hash树的快速比对,能够快速进行差异节点的定位和同步,而不是针对所有节点进行原值的逐个比对,因此在大数据量的情况下数据处理效率高,
[0019]2、由于采用了 hash树,任何节点的变化都能反馈到对应的所有父节点上,通过本发明的同步算法,在保证了 hash树的一致性的同时,我们也能够保证数据原值的一致性。
【具体实施方式】
[0020]本发明提供了一种数据变更感知和快速同步的方法,其实现步骤如下:
[0021]步骤一、数据变更的时候,服务器计算其属性名和值的hash值;
[0022]步骤二、服务器计算该数据的父级节点数据的hash值,例如修改了电话号码之后,还需要随之更新该人员的hash值;
[0023]步骤三、父节点在更新hash值的时候,首先将所有子节点按照属性名称进行字典序排序,然后将子节点的属性名和子节点的hash值合并成一个字符串,并计算其hash值;
[0024]步骤四、以此方式逐步计算到顶节点的hash值;
[0025]步骤五、客户端也以此方式计算自己的hash值,并在登录之后将该hash值与服务器上的顶节点hash值进行对比,如果一致则说明数据没有变化,包括子节点;如果hash值不一致,则获取原值并进行比对,找出发生变化的子节点或者属性,然后获取该子节点对应的值并进行同步。
[0026]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种数据变更感知和快速同步的方法,其特征在于,实现步骤如下: 步骤一、数据变更的时候,服务器计算其属性名和值的hash值; 步骤二、服务器计算该数据的父级节点数据的hash值; 步骤三、父节点在更新hash值的时候,首先将所有子节点按照属性名称进行字典序排序,然后将子节点的属性名和子节点的hash值合并成一个字符串,并计算其hash值;步骤四、以此方式逐步计算到顶节点的hash值; 步骤五、客户端也以此方式计算自己的hash值,并在登录之后将该hash值与服务器上的顶节点hash值进行对比,如果hash值一致则说明数据没有变化,包括子节点;如果hash值不一致,则获取原值并进行比对,找出发生变化的子节点或者属性,然后获取该子节点对应的值并进行同步。
【专利摘要】本发明公开了一种数据变更感知和快速同步的方法,属于计算机即时通讯技术领域。首先,数据变更的时候,服务器计算其属性名和值的hash值;服务器计算该数据的父级节点数据的hash值;父节点在更新hash值的时候,首先将所有子节点按照属性名称进行字典序排序,然后将子节点的属性名和子节点的hash值合并成一个字符串,并计算其hash值;以此方式逐步计算到顶节点的hash值;客户端也以此方式计算自己的hash值,并在登录之后将该hash值与服务器上的顶节点hash值进行对比,如果一致说明数据无变化,如果不一致,则获取原值并进行比对,找出变化的子节点或者属性并获取该子节点对应的值并进行同步。
【IPC分类】G06F17/30
【公开号】CN104915381
【申请号】CN201510250796
【发明人】姜晓丹, 王双, 吕翊, 戴宇升, 李学恩, 林明, 韩国权, 黄海峰, 李庆, 袁双
【申请人】北京联信永通信息技术有限公司
【公开日】2015年9月16日
【申请日】2015年5月18日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1