一种数据同步方法与流程

文档序号:37013301发布日期:2024-02-09 13:02阅读:16来源:国知局
一种数据同步方法与流程

本技术涉及数据同步的,尤其是涉及一种数据同步方法。


背景技术:

1、在客户端从服务器同步数据时,当前方式有:全量同步、增量同步及差量同步。

2、对于全量同步,在数据量小时使用影响不明显。但是当数据量很大时,存在以下问题:同步全部数据需要很久的时间,实时性很差,用户等待时间久;占用资源,影响其他的业务流程;占用带宽,影响其他的应用程序,如果是移动应用程序,由于流量消耗大,对用户不友好。

3、对于增量同步,相比全量同步,实时性提高了,更新的数据量也变小了;增量同步的缺点包括:存在同一数据的重复的操作与不必要的操作;由于经年累月的操作,导致增量记录可能很长,占用存储资源;如果很久没有同步数据,再次同步也需要很长时间。

4、对于差量同步,与全量同步相比,减少了数据量,提高了实时性;与增量同步相比,减少了不必要的操作,减少了重复操作,因为是同步时比较,因此没有更新记录,也减少了存储要求;缺点是每次都要将历史数据与目标数据对比求出差异值,然后才能根据结果同步数据。由于每个数据都要对比一次,在数据量大时,对比差异比较耗费时间,而且未更新数据的比较是多余的动作。

5、如何优化进行客户端从服务器同步数据中存在的问题是本领域技术人员需要攻克的技术难题。


技术实现思路

1、为了至少部分解决上述技术问题,本技术提供了一种数据同步方法。

2、第一方面,本技术提供的一种数据同步方法采用如下的技术方案。

3、一种数据同步方法,应用于客户端,包括:

4、读取本地的logid;

5、将读取到的logid发送至服务器;发送至服务器的logid用于触发所述服务器以数据值升序的形式发送log表中logid值大于所述客户端发送的logid值的数据至客户端;以及,

6、执行所述服务器发送的数据并将所述数据中最大logid更新至本地的logid,

7、可选的,所述服务器以数据值升序的形式发送log表中logid值大于所述客户端发送的logid值的数据至客户端,包括:所述服务器判断log表中logid值大于所述客户端发送的logid值的数据量是否大于基准值;若是,则将基准值数据量的logid值发送至客户端并在发送的数据中设置标记信息;所述标记信息用于提示所述客户端存在剩余数据需要获取;

8、所述方法还包括:执行所述客户端发送的数据时若识别到所述标记信息,则再次从服务器同步数据。

9、可选的,读取本地的logid的触发条件包括:检测到需要同步数据的软件启动及接收到服务器发送的同步命令中的一个。

10、可选的,所述log表是所述服务器接收到客户端发送的修改操作后记录信息变化的表;

11、所述服务器每接收到一个数据属性发生更新记录一行log;

12、其中,字段数据包括:字段logid、字段s_id及字段cmd;其中,字段logid每次修改数据属性时对应的全局唯一标识,为自增型;字段s_id表示数据自身的唯一标识;字段cmd表示对数据的操作;

13、所述服务器配置有{create,u1,u2,...,um,delete}命令集合,create表示创建数据,u1修改独立属性1,um表示修改独立属性m,delete表示删除数据。

14、可选的,在所述log表中:如果cmd为delete,则会将所述log表下所有相同的s_id的行都删除;对于数据表中曾经存在的p行已删除数据,则log表有p个对应的行;如果cmd不为delete,则数据修改的时候每次更新数据都会将之前同s_id与同cmd的行删除;

15、对于一个有n行有效数据的数据表,其创建操作共有n条log,其修改操作,共有n*m条log有效数据;对应的log表总行数为n*(m+1);加上数据表的已删除p行数据,则log表的总数为n*(m+1)+p。

16、可选的,读取本地的logid,包括:

17、判断本地是否存在同步后的logid;

18、如果存在,则将同步后的logid作为读取到的logid;

19、如果不存在,则将-1作为读取到的logid。

20、第二方面,本技术提供的一种数据同步方法采用如下的技术方案。

21、一种数据同步方法,应用于服务器,包括:

22、接收客户端发送的logid;客户端发送的logid是所述客户端读取本地的logid后发送的;

23、判断log表中logid值大于所述客户端发送的logid值的数据量是否大于基准值;若是,则将基准值数据量的logid值发送至客户端并在发送的数据中设置标记信息;所述标记信息用于提示所述客户端存在剩余数据需要获取;若否,则以数据值升序的形式发送log表中logid值大于所述客户端发送的logid值的数据至客户端;发送至客户端的logid值用于触发所述客户端将数据中最大logid更新至本地的logid。

24、可选的,所述log表是所述服务器接收到客户端发送的修改操作后记录信息变化的表;

25、所述服务器每接收到一个数据属性发生更新记录一行log;

26、其中,字段数据包括:字段logid、字段s_id及字段cmd;其中,字段logid每次修改数据属性时对应的全局唯一标识,为自增型;字段s_id表示数据自身的唯一标识;字段cmd表示对数据的操作;

27、所述服务器配置有{create,u1,u2,...,um,delete}命令集合,create表示创建数据,u1修改独立属性1,um表示修改独立属性m,delete表示删除数据;

28、在所述log表中:如果cmd为delete,则会将所述log表下所有相同的s_id的行都删除;对于数据表中曾经存在的p行已删除数据,则log表有p个对应的行;如果cmd不为delete,则数据修改的时候每次更新数据都会将之前同s_id与同cmd的行删除;

29、对于一个有n行有效数据的数据表,其创建操作共有n条log,其修改操作,共有n*m条log有效数据;对应的log表总行数为n*(m+1);加上数据表的已删除p行数据,则log表的总数为n*(m+1)+p。

30、第三方面,本技术公开一种电子设备,包括存储器和处理器,所述存储器上存储有被处理器加载并执行上述的任一方法的计算机程序。

31、第四方面,本技术公开一种计算机可读存储介质,存储有能够被处理器加载并执行上述的任一方法的计算机程序。

32、通过采用上述技术方案,将数据的属性划分为互相独立的,然后每个属性的修改对应一个命令;新的属性修改操作删除同数据同属性的对应操作,数据修改表的变化稳定,可预测表大小;跨越时间很久的数据同步,已经去除了对数据的无效操作;实时同步数据时设置一段延时,则自动获得了去重功能;查询即获得最佳的数据差异,而不需要数据对比操作,且没有重复数据、无效数据。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1