著录项信息
专利名称 | 一种数据同步方法及系统 |
申请号 | CN200610076027.4 | 申请日期 | 2006-04-24 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2007-10-31 | 公开/公告号 | CN101064630 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L12/24 | IPC分类号 | H;0;4;L;1;2;/;2;4;;;H;0;4;L;2;9;/;0;8查看分类表>
|
申请人 | 华为技术有限公司 | 申请人地址 | 广东省深圳市龙岗区坂田华为总部办公楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 华为技术有限公司 | 当前权利人 | 华为技术有限公司 |
发明人 | 尚万军 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 郭润湘 |
摘要
本发明公开了一种数据同步方法,应用于客户端和服务器之间的数据同步,包括:对用户数据记录根据操作顺序设置递增的记录版本号;客户端将本地存储的用户数据记录的最大记录版本号作为客户端数据总版本号;服务器将本地存储的该用户数据记录的最大记录版本号作为该用户数据总版本号;当客户端登录服务器时,客户端向服务器发起数据同步请求,携带所述客户端数据总版本号;服务器判断所述客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,进行数据同步。本发明还公开了一种相对应的数据同步系统。本发明能高效率地实现客户端和服务器之间的数据实时同步。
1.一种数据同步方法,应用于客户端和服务器之间的数据同步,其特征在于,包括:在服务器中,针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号根据用户数据记录的操作顺序设置为递增的整数;服务器将本地存储的该用户的用户数据记录的最大记录版本号作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户客户端首次登录所述服务器时,服务器将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端;客户端在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;
当客户端再次登录服务器时,执行下列步骤:
A、客户端向服务器发起数据同步请求,携带所述客户端数据总版本号;
B、服务器判断所述客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户数据记录,发送给客户端,进行数据同步。
2.如权利要求1所述的方法,其特征在于,所述步骤A之前还包括:客户端判断本地数据文件是否存在或损坏;当本地数据文件不存在或已损坏时,创建新的数据文件;
所述步骤A中,所述客户端向服务器发起数据同步请求,携带客户端数据总版本号为
0;所述步骤B中,服务器将本地存储的该用户的全部用户数据记录发送给所述客户端,进行数据完全同步并记录完全同步时间。
3.如权利要求2所述的方法,其特征在于,还包括所述客户端登录服务器后,向所述服务器发起数据记录操作请求,携带操作类型信息;
所述服务器根据请求的操作类型对用户数据记录执行相应操作,并返回操作结果信息和当前服务器中存储的该用户数据总版本号;
所述客户端对本地用户数据记录进行相应操作,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。
4.如权利要求3所述的方法,其特征在于,当所述客户端向服务器发起新增数据记录请求时,携带操作类型为新增记录;
所述服务器新增一条用户数据记录,设置该新增记录的记录版本号;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回新增记录操作结果和更新后的该用户数据总版本号;
所述客户端新增对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。
5.如权利要求3所述的方法,其特征在于,当所述客户端向服务器发起删除数据记录请求时,携带操作类型为删除记录;
所述服务器对请求删除的用户数据记录设置删除标志、更新其记录版本号;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回删除记录操作结果和更新后的该用户数据总版本号;
所述客户端实删除本地对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号,所述实删除是指将设置有删除标记的记录从本地真正的删除。
6.如权利要求5所述的方法,其特征在于,所述服务器定期执行实删除操作,删除本地有删除标志的用户数据记录;并记录最近一次执行实删除操作的对应时间。
7.如权利要求6所述的方法,其特征在于,当客户端登录服务器发起数据同步请求时,所述服务器还判断该客户端的完全同步时间是否早于最近一次执行实删除操作的时间;如果是,将本地存储的该用户的全部数据记录发送给该客户端,进行数据完全同步,并携带该用户数据总版本号。
8.如权利要求3所述的方法,其特征在于,当所述客户端向服务器发起修改数据记录请求时,携带操作类型为修改记录;
所述服务器对请求修改的用户数据记录先进行实删除,再新增一条对应的数据记录,设置该新增记录的记录版本号,所述实删除是指将设置有删除标记的记录从本地真正的删除;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回修改记录操作结果和更新后的该用户数据总版本号;
所述客户端修改本地对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。
9.如权利要求1-8任一权项所述的方法,其特征在于,当用户同时有两个或以上的客户端登录服务器,且服务器根据其中之一客户端发起的数据记录操作请求,对用户数据记录进行操作后,获取已登录的其余客户端的地址信息,将发生了变化的用户数据记录及变化后的该用户数据总版本号发送给其余客户端;
所述其余客户端分别对本地用户数据记录进行相应操作,并更新本地存储的客户端数据总版本号为服务器返回的该用户数据总版本号。
10.一种数据同步系统,包括客户端和服务器,其特征在于:
所述客户端包括同步请求执行单元,用于当客户端再次登录服务器时,向服务器发起数据同步请求,携带客户端数据总版本号;
所述服务器包括同步判断执行单元,用于接收客户端的数据同步请求,判断所述客户端数据总版本号和用户数据总版本号是否相同;当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的用户数据记录,发送给客户端,进行数据同步;
其中,
所述客户端还用于当其首次登录所述服务器时,接收服务器下发的用户的全部用户数据记录及对应的用户数据总版本号;并在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;接收服务器发送的服务器本地存储的记录版本号大于客户端数据总版本号的用户的数据记录,进行数据同步;
所述服务器还用于针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号根据用户数据记录的操作顺序设置为递增的整数,并将本地存储的该用户的用户数据记录的最大记录版本号作为该数据的总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户的客户端首次登录所述服务器时,将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端。
11.如权利要求10所述的数据同步系统,其特征在于,所述客户端还包括第一数据记录操作单元,用于向所述服务器发起数据记录操作请求,携带操作类型信息;在接收到服务器返回的操作结果信息和该用户数据总版本号后,对本地用户数据记录进行相应操作,并更新客户端数据总版本号为服务器返回的该用户数据总版本号;
所述服务器还包括第二数据记录操作单元,用于根据客户端请求的操作类型对用户数据记录执行相应操作,并向客户端返回操作结果信息和当前服务器中存储的该用户数据总版本号;
其中,所述第二数据记录操作单元包括:
记录操作执行模块,根据客户端请求的操作类型对用户数据记录执行相应操作;
记录版本号生成模块,对被操作的用户数据记录生成新的递增的记录版本号;
用户数据总版本更新发送模块,将本地存储的该用户数据记录的最大记录版本号作为该用户数据总版本号并发送给客户端。
12.一种数据同步方法,应用于客户端和服务器之间的数据同步,其特征在于,包括:
在服务器中,针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号为当前记录的操作时间对应的时间戳;服务器将本地存储的该用户的用户数据记录的最近时间戳作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户客户端首次登录所述服务器时,服务器将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端;客户端在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;
当客户端再次登录服务器时,执行下列步骤:
A、客户端向服务器发起数据同步请求,携带所述客户端数据总版本号;
B、服务器判断所述客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户数据记录,发送给客户端,进行数据同步。
13.一种数据同步系统,包括客户端和服务器,其特征在于:
所述客户端包括同步请求执行单元,用于当该客户端再次登录所述服务器时,向服务器发起数据同步请求,携带客户端数据总版本号;
所述服务器包括同步判断执行单元,用于接收客户端的数据同步请求,判断所述客户端数据总版本号和用户数据总版本号是否相同;当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,进行数据同步;
其中,
所述客户端还用于当其首次登录所述服务器时,接收服务器下发的用户的全部用户数据记录及对应的用户数据总版本号;并在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;接收服务器发送的服务器本地存储的记录版本号大于客户端数据总版本号的用户的数据记录,进行数据同步;
所述服务器还用于针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号为当前记录的操作时间对应的时间戳,并将本地存储的该用户的用户数据记录的最近时间戳作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户的客户端首次登录所述服务器时,将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端。
一种数据同步方法及系统 \n技术领域\n[0001] 本发明涉及数据同步,尤其涉及一种基于客户端/服务器模型的数据同步方法与系统。 \n背景技术\n[0002] 互联网为人们提供丰富的服务,比如地址本管理,聊天记录管理。这些服务的特点是基于客户端/服务器(C/S)模型,用户通过客户端与服务器交互。由于客户端数量巨大,客户端需要频繁地向服务器发回数据和处理请求,对服务器的性能要求非常高,在低带宽或高延迟的情况下,情况会被恶化,产生的性能问题可能导致应用程序可用性和用户效率大幅度下降。为了提高客户端操作的性能,当前很多系统采用了在客户端部署代码和数据,在本地执行和访问数据,通过本地数据缓存,减少从客户端传输到服务器的数据量,进而提高系统的性能和实用性。这种处理方式客户端和服务器都存在数据,系统需要进行必要的数据同步。比如:在聊天工具中,用户在客户端进行地址簿维护,添加联系人信息,修改联系人号码,删除联系人等,系统修改服务器数据后再修改客户端的数据,这些操作可能在多个客户端进行,这样,各个客户端的数据和服务器数据可能不一致,造成客户端操作的数据不是最新数据的问题。 \n[0003] 现有技术一的同步方案: \n[0004] 完全下载同步方案,用户在客户端每次操作本地数据库前,首先从服务器下载相关表的所有数据,完成同步,然后进行维护操作。 \n[0005] 现有技术一的缺点: \n[0006] 数据表的数据量一般比较大,频繁完全下载数据,效率低,严重影响服务器性能,与本地数据方案提高性能的目标有冲突,在数据量大的系统中不可用。 [0007] 现有技术二的同步方案: \n[0008] 数据库系统负责同步处理,系统定义哪些表需要同步即可,数据库的列级和行级检测保证同步。 \n[0009] 现有技术二的缺点: \n[0010] 此方案需要客户端具备本地数据库,对客户端的运行设备要求比较高。 [0011] 发明内容\n[0012] 本发明提供一种数据同步方法,用以解决现有技术中存在的客户端和服务器之间数据同步效率低、以及对服务器及客户端设备要求较高的问题。 \n[0013] 根据本发明提供的方法,本发明另提供一种相对应的数据同步系统。 [0014] 本发明方法包括:在服务器中,针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号根据用户数据记录的操作顺序设置为递增的整数;服务器将本地存储的该用户的用户数据记录的最大记录版本号作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户客户端首次登录所述服务器时,服务器将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端;客户端在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步; \n[0015] 当客户端再次登录服务器时,执行下列步骤: \n[0016] A、客户端向服务器发起数据同步请求,携带所述客户端数据总版本号; [0017] B、服务器判断所述客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户数据记录,发送给客户端,进行数据同步。 \n[0018] 所述步骤A之前还包括:客户端判断本地数据文件是否存在或损坏;当本地数据文件不存在或已损坏时,创建新的数据文件; \n[0019] 所述步骤A中,所述客户端向服务器发起数据同步请求,携带客户端数据总版本号为0;所述步骤B中,服务器将本地存储的该用户的全部用户数据记录发送给所述客户端,进行数据完全同步并记录完全同步时间。 \n[0020] 根据本发明的上述方法,还包括所述客户端登录服务器后,向所述服务器发起数据记录操作请求,携带操作类型信息; \n[0021] 所述服务器根据请求的操作类型对用户数据记录执行相应操作,并返回操作结果信息和当前服务器中存储的该用户数据总版本号; \n[0022] 所述客户端对本地用户数据记录进行相应操作,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。 \n[0023] 根据本发明的上述方法,当所述客户端向服务器发起新增数据记录请求时,携带操作类型为新增记录; \n[0024] 所述服务器新增一条用户数据记录,设置该新增记录的记录版本号;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回新增记录操作结果和更新后的该用户数据总版本号; \n[0025] 所述客户端新增对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。 \n[0026] 根据本发明的上述方法,当所述客户端向服务器发起删除数据记录请求时,携带操作类型为删除记录; \n[0027] 所述服务器对请求删除的用户数据记录设置删除标志、更新其记录版本号;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回删除记录操作结果和更新后的该用户数据总版本号; \n[0028] 所述客户端实删除本地对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号,所述实删除是指将设置有删除标记的记录从本地真正的删除。 \n[0029] 根据本发明的上述方法,所述服务器定期执行实删除操作,删除本地有删除标志的用户数据记录;并记录最近一次执行实删除操作的对应时间。 \n[0030] 根据本发明的上述方法,当客户端登录服务器发起数据同步请求时,所述服务器还判断该客户端的完全同步时间是否早于最近一次执行实删除操作的时间;如果是,将本地存储的该用户的全部数据记录发送给该客户端,进行数据完全同步,并携带该用户数据总版本号。 \n[0031] 根据本发明的上述方法,当所述客户端向服务器发起修改数据记录请求时,携带操作类型为修改记录; \n[0032] 所述服务器对请求修改的用户数据记录先进行实删除,再新增一条对应的数据记录,设置该新增记录的记录版本号;更新服务器端存储的该用户数据总版本号;并获取该客户端的地址信息,返回修改记录操作结果和更新后的该用户数据总版本号; [0033] 所述客户端修改本地对应的用户数据记录,并更新客户端数据总版本号为服务器返回的该用户数据总版本号。 \n[0034] 根据本发明的上述方法,当用户同时有两个或以上的客户端登录服务器,且服务器根据其中之一客户端发起的数据记录操作请求,对用户数据记录进行操作后,获取已登录的其余客户端的地址信息,将发生了变化的用户数据记录及变化后的该用户数据总版本号发送给其余客户端; \n[0035] 所述其余客户端分别对本地用户数据记录进行相应操作,并更新本地存储的客户端数据总版本号为服务器返回的该用户数据总版本号。 \n[0036] 本发明提供一种数据同步系统,包括客户端和服务器,所述客户端包括同步请求执行单元,用于当客户端再次登录服务器时,向服务器发起数据同步请求,携带客户端数据总版本号; \n[0037] 所述服务器包括同步判断执行单元,用于接收客户端的数据同步请求,判断所述客户端数据总版本号和用户数据总版本号是否相同;当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的用户数据记录,发送给客户端,进行数据同步; [0038] 其中, \n[0039] 所述客户端还用于当其首次登录所述服务器时,接收服务器下发的用户的全部用户数据记录及对应的用户数据总版本号;并在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;接收服务器发送的服务器本地存储的记录版本号大于客户端数据总版本号的用户的数据记录,进行数据同步; \n[0040] 所述服务器还用于针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号根据用户数据记录的操作顺序设置为递增的整数,并将本地存储的该用户的用户数据记录的最大记录版本号作为该数据的总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户的客户端首次登录所述服务器时,将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端。 \n[0041] 所述客户端还包括第一数据记录操作单元,用于向所述服务器发起数据记录操作请求,携带操作类型信息;在接收到服务器返回的操作结果信息和该用户数据总版本号后,对本地用户数据记录进行相应操作,并更新客户端数据总版本号为服务器返回的该用户数据总版本号; \n[0042] 所述服务器还包括第二数据记录操作单元,用于根据客户端请求的操作类型对用户数据记录执行相应操作,并向客户端返回操作结果信息和当前服务器中存储的该用户数据总版本号; \n[0043] 其中,所述第二数据记录操作单元包括: \n[0044] 记录操作执行模块,根据客户端请求的操作类型对用户数据记录执行相应操作; [0045] 记录版本号生成模块,对被操作的用户数据记录生成新的递增的记录版本号; [0046] 用户数据总版本更新发送模块,将本地存储的该用户数据记录的最大记录版本号作为该用户数据总版本号并发送给客户端。 \n[0047] 一种数据同步方法,应用于客户端和服务器之间的数据同步; [0048] 在服务器中,针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号为当前记录的操作时间对应的时间戳;服务器将本地存储的该用户的用户数据记录的最近时间戳作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户客户端首次登录所述服务器时,服务器将本地存储的该用户的全部用户数据记录 及对应的用户数据总版本号发送给所述客户端;客户端在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步; \n[0049] 当客户端再次登录服务器时,执行下列步骤: \n[0050] A、客户端向服务器发起数据同步请求,携带所述客户端数据总版本号; [0051] B、服务器判断所述客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户数据记录,发送给客户端,进行数据同步。 \n[0052] 一种数据同步系统,包括客户端和服务器; \n[0053] 所述客户端包括同步请求执行单元,用于当该客户端再次登录所述服务器时,向服务器发起数据同步请求,携带客户端数据总版本号; \n[0054] 所述服务器包括同步判断执行单元,用于接收客户端的数据同步请求,判断所述客户端数据总版本号和用户数据总版本号是否相同;当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,进行数据同步; [0055] 其中, \n[0056] 所述客户端还用于当其首次登录所述服务器时,接收服务器下发的用户的全部用户数据记录及对应的用户数据总版本号;并在本地存储用户数据记录,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步;接收服务器发送的服务器本地存储的记录版本号大于客户端数据总版本号的用户的数据记录,进行数据同步; \n[0057] 所述服务器还用于针对每一个用户,为该用户的用户数据的每一条记录设置对应的记录版本号,该记录版本号为当前记录的操作时间对应的时间戳,并将本地存储的该用户的用户数据记录的最近时间戳作为该用户数据总版本号;当对用户数据记录进行了操作时,用户数据总版本号进行相应改变;当用户的客户端首次登录所述服务器时,将本地存储的该用户的全部用户数据记录及对应的用户数据总版本号发送给所述客户端。 [0058] 本发明有益效果如下: \n[0059] 本发明采用对用户数据记录根据操作顺序设置递增的记录版本号;客户端将本地存储的用户数据记录的最大记录版本号作为客户端数据总版本号;服务器将本地存储的该用户数据记录的最大记录版本号作为该用户数据总版本号;当客户端登录服务器时,客户端向服务器发起数据同步请求,携带客户端数据总版本号;由服务器判断客户端数据总版本号和该用户数据总版本号是否相同,当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,进行数据同步。这样,数据同步量仅为客户端与服务器之间的差异部分,同步的数据量小,减少了客户端与服务器的交互数据量和交互次数,提高了数据同步效率。\n[0060] (2)当用户同时有两个或以上的客户端登录服务器,且服务器根据其中之一客户端发起的数据记录操作请求,对用户数据记录进行操作后,获取已登录的其余客户端的地址信息,将发生了变化的数据记录及变化后的该用户数据总版本号发送给其余客户端;其余客户端分别对本地用户数据记录进行相应操作,并更新本地存储的客户端数据总版本号为服务器返回的该用户数据总版本号。这样,对同一用户的多个客户端数据实现了实时同步,保证了各客户端数据的准确性和完整性。 \n[0061] 附图说明\n[0062] 图1为本发明实施例客户端登录服务器的信令交互流程图; \n[0063] 图2为本发明实施例客户端登录服务器之后请求新增用户数据记录信令流程图; [0064] 图3为本发明系统结构示意图。 \n[0065] 具体实施方式\n[0066] 本发明提供的数据同步方法,应用于客户端和服务器之间的数据同步。下面结合附图对本发明方法进行详细描述。 \n[0067] 在服务器端,为每一个用户建立一个或多个用户数据表,存储用户的用户数据记录。在服务器与客户端之间,需要同步的是该用户的用户数据。 \n[0068] 在服务器中,为每一个用户的用户数据每一条记录设置一个对应的记录版本号,该记录版本号根据对用户数据记录的操作顺序设置为一个递增的整数值,或设置为对应的时间戳,如YYYYMMDDHHMMSS,表示当前记录的操作时间为某年某月某日某时某分某秒,以此作为该数据记录的记录版本号。 \n[0069] 在服务器中,每一个用户的用户数据对应一个服务器端此用户数据总版本号。采用被操作的最后一条用户数据记录对应的记录版本号作为该用户的服务器端用户数据总版本号;即服务器将本地存储的用户记录的最大记录版本号作为该用户数据总版本号。若采用时间戳作为记录版本号,则服务器端用户数据总版本号为最近时间戳。 [0070] 本发明还对需要删除的用户数据记录分两步进行处理:第一步,对需要删除的用户数据记录在服务器端设置删除标记,称为伪删除;第二步,服务器定期执行实删除操作,将设置了删除标记的记录从本地真正删除。 \n[0071] 服务器端为了实现对每个用户的管理和数据同步,还需要存储一些相应的管理信息。例如: \n[0072] (1)在服务器端存储用户完全同步记录表,如下表1所示: \n[0073] 表1: \n[0074] \n用户名称 最后一次完全同步时间\nAAA 20050627090909\nBBB 20050627110906\n…… ……\nZZZ 20050627132308\n[0075] (2)在服务器端存储用户数据总版本号记录表,如下表2所示: [0076] 表2: \n[0077] \n用户名称 服务器端该用户数据总版本号\nAAA 3\nBBB 4\n…… ……\nZZZ 20\n[0078] 表2中的用户数据总版本号也可以是时间戳,且当对用户数据记录进行了操作时,进行相应改变。例如,当服务器对用户AAA的一条用户记录数据进行了修改,则该条记录的记录版本号必须改变为一个大于3的整数值,假设该条记录的记录版本号变为4,则用户AAA在服务器端的当前数据总版本号也变为4。 \n[0079] (3)在服务器中存储用户的呼叫日志表,如下表3所示: \n[0080] 表3: \n[0081] \n用户名称 日志标识 用户数据的记录版本号 操作类型\nAAA 1 2 新增\nAAA 2 3 修改\nBBB 3 5 修改\nBBB 4 4 新增\nBBB 5 3 删除\n…… …… …… ……\n[0082] 表3中,用户数据的记录版本号,对同一个用户,不会存在两条记录拥有相同的记录版本号;但对于不同的用户,可以具有相同的记录版本号。如表3中的用户AAA请求对自己的记录版本号为3的用户数据进行修改;用户BBB请求对自己的记录版本号为3的用户数据进行删除;尽管两条数据记录的记录版本号都是3,但由于是分属于不同用户的数据,因此,可以具有相同的记录版本号。 \n[0083] (4)在服务器中存储客户端登录信息表,如下表4所示: \n[0084] 表4: \n[0085] \n用户名称 客户端IP 客户端端口号\nAAA 192.168.11.110 5060\nBBB 192.168.23.173 3089\n…… ……\nZZZ 192.168.19.181 4080\n[0086] 在服务器中还存储最近一次对用户数据执行实删除操作的时间,当客户端的完全同步时间早于服务器最近一次执行实删除操作的时间,则必须对客户端进行一次完全同步:即删除客户端数据文件,重新建立新的数据文件,将服务器中存储的该用户的全部记录数据都发送到该用户客户端。 \n[0087] 当用户客户端首次登录服务器后,服务器将本地存储的该用户的全部用户数据及对应的用户数据总版本号发送给该客户端;客户端在本地存储用户数据,并将服务器发送的用户数据总版本号作为本地客户端数据总版本号,首次实现数据完全同步。 [0088] 当客户端再次登录服务器后,主动向服务器发起数据同步请求,携带本地 存储的客户端数据总版本号;服务器将接收到的客户端数据总版本号和服务器存储的该用户数据总版本号进行比较,若两者相同,表示该用户的数据已同步;如果客户端数据总版本号较小,则表示客户端和服务器端数据不同步,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的记录数据发送给该客户端,进行数据同步。 \n[0089] 以个人地址通讯簿同步为例,具体步骤流程图如图1所示,包括: [0090] 1、用户通过客户端发起登录服务器的申请; \n[0091] 2、服务器对用户进行合法性鉴权,鉴权通过后,记录客户端IP地址和端口号,并返回相应信息,由客户端呈现给用户(如:一些可操作的功能列表,用户个人的一些资料等); \n[0092] 3、客户端首先判断个人客户端通讯簿文件是否存在或者是否损坏;如果文件不存在或已损坏,则执行步骤4;否则,直接执行步骤5; \n[0093] 4、如果文件不存在,则创建文件,并设置客户端数据总版本号为0;如果文件损坏,则删除已损坏文件后再创建新文件,并设置客户端数据总版本号为0;如果文件存在并且没有损坏,继续步骤5; \n[0094] 5、客户端发起数据同步请求,携带客户端数据总版本号信息; [0095] 6、如果服务器判断客户端数据总版本号等于0,则读取服务器中用户通讯簿数据,进行完全同步; \n[0096] 如果服务器判断客户端数据总版本号大于0,则进一步判断该用户数据的最后一次完全同步时间是否早于服务器端最近一次实删除时间,如果是,则必须进行完全同步;否则,服务器选择出该用户通讯簿数据记录版本号大于同步请求中携带的客户端数据总版本号的记录,发送给客户端;如果服务器中不存在数据记录版本号大于客户端数据总版本号的相应记录,则表示数据已同步; \n[0097] 7、服务器向客户端返回同步标识、步骤6中获取的用户的通讯簿记录和服务器端该用户的用户数据总版本号; \n[0098] 8、客户端根据同步标识分析是否需要进行完全同步或部分同步;如果需 要完全同步,则删除客户端数据文件,重新建新的数据文件,并记录完全同步时间; [0099] 如果仅需要部分同步,则根据需要同步的记录对应的操作类型进行相应处理;如果操作类型为新增类型,则在客户端增加一条相应记录;如果操作类型为修改类型,则在客户端数据文件中先删除对应记录,然后增加一条记录;如果操作类型为删除类型,则在客户端数据文件中进行记录删除;并更新客户端数据总版本号为服务器端返回的用户数据总版本号。 \n[0100] 以上流程为客户端登录服务器时实现数据同步。当客户端登录服务器后,客户端可以向服务器发起数据记录操作申请,携带操行类型信息,例如:客户端向服务器请求新增记录、删除记录或修改记录;服务器收到客户端发起的记录操作请求后,根据操作类型对相应的记录进行操作,并返回操作结果信息和更新后的用户数据总版本号。 [0101] 如果用户同时有两个或以上的客户端登录服务器,服务器根据其中之一客户端发起的数据记录操作请求,对用户数据记录进行操作后,获取已登录的其余客户端的地址信息,将发生了变化的数据记录及变化后的该用户数据总版本号发送给其余客户端;其余客户端分别对本地用户数据记录进行相应操作,并更新本地存储的客户端数据总版本号为服务器返回的该用户数据总版本号,实现数据同步。 \n[0102] 如图2所示,为用户的客户端1请求往地址簿中新增记录时,通过服务器实现数据同步流程图,具体步骤包括: \n[0103] 1、用户通过客户端1往地址簿中增加一联系人,客户端查询本地数据,判断不存在该记录,向服务器发起新增记录申请; \n[0104] 2和3、如果服务器判断此记录不存在,则新增一条用户数据记录;将该记录的操作类型设置为新增,设置该记录的记录版本号,并更新服务器端该用户数据总版本号; [0105] 如果服务器判断该记录存在,由于客户端在登录时已与服务器进行过数据 同步,则该记录在服务器端的最近操作类型应为删除类型,在这种情况下,服务器将该记录的操作类型更改为新增,设置该记录的记录版本号,并更新服务器端该用户的数据总版本号; [0106] 4、服务器获取客户端1的IP地址和端口号,返回操作结果信息和该用户在服务器端的用户数据总版本号; \n[0107] 5、客户端1在本地新增对应记录; \n[0108] 6、客户端1更新本地存储的客户端数据总版本号为服务器端发送的用户数据总版本号。 \n[0109] 如果服务器将该新增的记录同时加入到了用户其它登录客户端的地址簿中,则需要对用户的其他已经登录的客户端进行数据同步,具体步骤包括: \n[0110] 4’、服务器获取已登录的其它客户端2的IP地址和端口号,发送同步更新消息,通知客户端2新增一条记录,并携带服务器端该用户数据总版本号; \n[0111] 5’客户端2在本地新增对应记录; \n[0112] 6’客户端2更新本地存储的客户端数据总版本号为服务器端发送的用户数据总版本号。 \n[0113] 根据本发明提供的上述方法,本发明另提供一种相对应的数据同步系统,其结构示意图如图3所示,包括:包括客户端和服务器,其中: \n[0114] 客户端包括有同步请求执行单元,用于向服务器发起数据同步请求,携带客户端数据总版本号;所述客户端数据总版本号为客户端本地存储的用户数据记录的最大记录版本号; \n[0115] 服务器包括有同步判断执行单元,用于接收客户端的数据同步请求,判断所述客户端数据总版本号和该用户数据总版本号是否相同,所述该用户数据总版本号为服务器存储的该用户数据记录的最大记录版本号;当两者不相同时,服务器将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,进行数据同步。 [0116] 所述客户端还包括第一数据记录操作单元,向服务器发起数据记录操作请 求,携带操作类型信息;在接收到服务器返回的操作结果信息和该用户数据总版本号后,对本地用户数据记录进行相应操作,并更新客户端数据总版本号为服务器返回的该用户数据总版本号; \n[0117] 服务器还包括第二数据记录操作单元,根据客户端请求的操作类型对用户数据记录执行相应操作,并向客户端返回操作结果信息和当前服务器中存储的该用户数据总版本号。 \n[0118] 第二数据记录操作单元还可以包括: \n[0119] 记录操作执行模块,根据客户端请求的操作类型对用户数据记录执行相应操作; [0120] 记录版本号生成模块,对被操作的用户数据记录生成新的递增的记录版本号; [0121] 用户数据总版本更新发送模块,将本地存储的该用户数据记录的最大记录版本号作为该用户数据总版本号并发送给客户端。 \n[0122] 综上所述,本发明通过在客户端登录服务器过程中,由客户端主动发起数据同步请求,服务器仅将本地存储的记录版本号大于客户端数据总版本号的该用户的数据记录,发送给客户端,这样,数据同步量仅为客户端与服务器之间的差异部分,同步的数据量小,减少了客户端与服务器的交互数据量和交互次数,提高了数据同步效率。 [0123] 客户端登录服务器后,可以发起数据记录操作请求,如新增数据、删除数据和修改数据,服务器和客户端数据进行同步更新。且当用户同时有两个或以上的客户端登录服务器,且服务器根据其中之一客户端发起的数据记录操作请求,对用户数据记录进行操作后,通过获取已登录的其余客户端的地址信息,将发生了变化的数据记录及变化后的该用户数据总版本号发送给其余客户端;其余客户端分别对本地用户数据记录进行相应操作,并更新本地存储的客户端数据总版本号为服务器返回的该用户数据总版本号。这样,对同一用户的多个客户端数据实现了实时同步,保证了各客户端数据的准确性和完整性。 [0124] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2011-09-21
- 2009-03-11
- 2007-10-31
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2001-03-21
|
2000-09-08
| | |
2
| |
2003-04-02
|
2001-08-24
| | |
3
| |
2004-03-10
|
2002-09-03
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2011-12-23 | 2011-12-23 | | |
2 | | 2011-12-23 | 2011-12-23 | | |