CN107370803A - 一种数据同步的方法及终端 - Google Patents
一种数据同步的方法及终端 Download PDFInfo
- Publication number
- CN107370803A CN107370803A CN201710561251.0A CN201710561251A CN107370803A CN 107370803 A CN107370803 A CN 107370803A CN 201710561251 A CN201710561251 A CN 201710561251A CN 107370803 A CN107370803 A CN 107370803A
- Authority
- CN
- China
- Prior art keywords
- data
- renewal time
- time stamp
- record
- field
- 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.)
- Granted
Links
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)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及数据处理领域,尤其涉及一种数据同步的方法及终端。本发明通过获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。实现在同步数据的过程中减少客户端的流量消耗。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种数据同步的方法及终端。
背景技术
APP数据同步,是客户端APP从服务端获取数据的一种方式,大多APP应用都采用分页方式获取服务端的数据,客户端提交页码与每页大小两个参数从服务端获取数据,数据列表会根据具体的排序字段排序显示;在APP中使用手势操作,向下滑动时提交固定的页码为1,每页10条(下次向下滑动也是同样参数值),向服务端获取第1页的数据;手势向上滑动时,会将页码加1(即页码为2),向服务端获取第2页的数据,再次向上滑动时,页码再加1(即页码为3),向服务端获取第3页的数据,以此类推来获取其它页的数据;
采用分页方式获取服务端的数据,适用于排序字段的数据不会被修改的场景,此场景下获取服务端的数据不会发生问题,然而如果排序字段的数据被修改了,就会出现部分服务端的数据会漏掉获取的问题;例如:在APP中手势向下滑动时,提交固定页码为1,此时获取服务端第1页的数据,手势向上滑动时,会将页码加1(即页码为2),向服务端获取第2页的数据;若在客户端获取第3页数据之前,服务端中原在第3页或第4页的数据的排序字段被修改后实际顺序往前移动到了第2页,原先第2页的客户端已经获取的数据则移动到了第3页的位置,此时在客户端获取第3页的数据,就出现了被修改后处于第2页的数据出现漏掉获取的问题,为了避免这个问题,就需要每次打开APP页面时将已经获取的数据清空,再重新从第1页开始获取服务端的数据,原先已经获取到的数据没办法缓存起来,增量用户的流量消耗。
发明内容
本发明所要解决的技术问题是:如何在同步数据的过程中减少客户端的流量消耗。
为了解决上述技术问题,本发明采用的技术方案为:
本发明提供一种数据同步的方法,包括:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
本发明还提供一种数据同步的终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
本发明的有益效果在于:通过根据客户端已同步数据的最大更新时间戳和最小更新时间戳同步服务端的数据,实现在同步数据的过程中不会由于服务端中一数据的更新时间戳发生变化而导致数据遗漏的同时减少客户端的流量消耗。
附图说明
图1为本发明提供的一种数据同步的方法的具体实施方式的流程框图;
图2为本发明提供的一种数据同步的终端的具体实施方式的结构框图;
标号说明:
1、处理器; 2、存储器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1以及图2,
如图1所示,本发明提供一种数据同步的方法,包括:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
进一步地,还包括:
计算上次同步数据的时间与当前系统时间的时间间隔;
当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值。
进一步地,所述S3具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则:
从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则:
从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
服务端发送与所述第一记录集合对应的第一数据集合至客户端。
由上述描述可知,避免同步大量不具有时效性的数据造成浪费客户端流量的现象。
进一步地,还包括:
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;
若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值。
由上述描述可知,实现有效避免同步重复数据。
进一步地,所述S4具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第二同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端。
进一步地,还包括:
预设第一同步条数;
根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合。
由上述描述可知,同步数据时综合考虑数据的发布时间和更新时间,避免频繁更新造成需多次操作才可同步到具有时效性的最新发布数据。
进一步地,还包括:
获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;
获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;
设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
由上述描述可知,由于本发明是根据数据的更新时间戳同步数据,因此设置根据发布时间同步的数据的更新时间戳字段值为零,可消除由于虚假扩大客户端已同步数据的范围而造成的同步过程中数据遗漏的现象。
如图2所示,本发明还提供一种数据同步的终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
进一步地,还包括:
计算上次同步数据的时间与当前系统时间的时间间隔;
当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值。
进一步地,所述S3具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则:
从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则:
从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
服务端发送与所述第一记录集合对应的第一数据集合至客户端。
进一步地,还包括:
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;
若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值。
进一步地,所述S4具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第二同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端。
进一步地,还包括:
预设第一同步条数;
根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合。
进一步地,还包括:
获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;
获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;
设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
本发明的实施例一为:
本实施例提供一种数据同步的方法,包括:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
其中,若客户端是初次同步服务端的数据,则服务端发送最新更新的第二同步条数数据至客户端;若客户端不是初次同步服务端的数据,则发送与客户端已同步数据中大于最大更新时间戳,且与最大更新时间戳相邻的更新时间戳对应的数据至客户端;
服务端发送与所述第一记录集合对应的第一数据集合至客户端;
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值;
其中,若第一记录集合中包含已删除的数据对应的记录,则客户端获取不到已删除的数据;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合;具体为:
获取服务端的数据信息表;
当接收到所述第二同步指令时,根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端;
S5、计算上次同步数据的时间与当前系统时间的时间间隔;当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值;
其中,若客户端较长时间未同步数据,则根据客户端初次同步数据的规则从服务端同步最新更新的数据,以免同步较多不具有时效性的数据,浪费客户端的流量;
S6、根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合;
S7、获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
本发明的实施例二为:
本实施例提供一种数据同步的终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
其中,若客户端是初次同步服务端的数据,则服务端发送最新更新的第二同步条数数据至客户端;若客户端不是初次同步服务端的数据,则发送与客户端已同步数据中大于最大更新时间戳,且与最大更新时间戳相邻的更新时间戳对应的数据至客户端;
服务端发送与所述第一记录集合对应的第一数据集合至客户端;
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值;
其中,若第一记录集合中包含已删除的数据对应的记录,则客户端获取不到已删除的数据;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合;具体为:
获取服务端的数据信息表;
当接收到所述第二同步指令时,根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端;
S5、计算上次同步数据的时间与当前系统时间的时间间隔;当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值;
其中,若客户端较长时间未同步数据,则根据客户端初次同步数据的规则从服务端同步最新更新的数据,以免同步较多不具有时效性的数据,浪费客户端的流量;
S6、根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合;
S7、获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
本发明的实施例三为:
新闻数据信息表的数据结构如表1所示。
表1
字段名 | 字段类型 | 字段描述 |
Id | 长整数 | 新闻编号,自增主键 |
Title | 字符类型 | 新闻标题,唯一的 |
Content | 字符类型 | 新闻内容 |
PublishTime | 日期类型 | 发布时间 |
UpdateTime | 日期类型 | 修改时间 |
IsRem | 布尔值 | 是否删除标记 |
VerId | 长整数 | 版本号 |
其中,版本号为该记录对应数据的更新时间戳。
版本区间范围表结构如表2所示。
表2
字段名 | 字段类型 | 字段描述 |
TableName | 字符类型 | 表名,主键 |
MinVer | 长整型 | 最小的版本号,默认为0 |
MaxVer | 长整型 | 最大的版本号,默认为0 |
新闻数据信息表中的数据按发布时间升序排序,如表3所示;
表3
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/1/1 03:00:00 | false | 1483210800 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
3 | T3 | Con | 2017/1/11 03:00:00 | 2017/1/11 03:00:00 | false | 1484074800 |
4 | T4 | Con | 2017/1/21 03:00:00 | 2017/2/21 03:00:00 | true | 1487617200 |
5 | T5 | Con | 2017/2/1 03:00:00 | 2017/2/1 03:00:00 | false | 1485889200 |
6 | T6 | Con | 2017/2/10 03:00:00 | 2017/2/15 03:00:00 | false | 1487098800 |
7 | T7 | Con | 2017/2/21 03:00:00 | 2017/2/22 03:00:00 | false | 1487703600 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 1488308400 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
新闻被编辑修改以及收藏点赞等更新操作,会造成版本号发生变化,因此新闻数据信息表按发布时间字段排序与按版本号字段排序显示的结果不同。按版本号降序排序的显示结果如表4所示;
表4
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 1488308400 |
7 | T7 | Con | 2017/2/21 03:00:00 | 2017/2/22 03:00:00 | false | 1487703600 |
4 | T4 | Con | 2017/1/21 03:00:00 | 2017/2/21 03:00:00 | true | 1487617200 |
6 | T6 | Con | 2017/2/10 03:00:00 | 2017/2/15 03:00:00 | false | 1487098800 |
5 | T5 | Con | 2017/2/1 03:00:00 | 2017/2/1 03:00:00 | false | 1485889200 |
3 | T3 | Con | 2017/1/11 03:00:00 | 2017/1/11 03:00:00 | false | 1484074800 |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/1/1 03:00:00 | false | 1483210800 |
客户端的初始版本区间范围表如表5所示。
表5
TableName | MinVer | MaxVer |
News | 0 | 0 |
设置客户端每次从服务端同步3条数据。
客户端首次同步服务端的新闻数据时,提交的版本号Ver参数为0。
服务端会返回以版本号降序和发布时间降序的组合新闻数据;以版本号降序的最新数据结果集A中包含ID为2、10、9的三条数据,如果有删除标记的需要排除,而以发布时间降序的最新数据结果集B中包含ID为10、9、8的三条数据,合并结果集A和结果集B,得到结果集C;结果集C中包含ID为2、10、9、8的四条数据。
其中,在客户端的已同步数据表中设置ID为8对应的记录的版本号字段VerId为0。
根据发布时间降序得到的最新数据结果集B是一份临时显示在客户端列表中的占位数据,显示在最前面,不能有版本号,如果有版本号会影响客户端记录的最大与最小版本号的值,导致客户端的版本区间范围扩大,而扩大这个范围内还有数据没有从服务端获取下来,造成遗漏数据更新;因此这里以版本号降序和发布时间降序的组合的数据,后者是不能带有版本号的数据,所以版本号字段为0,它只时一个提供客户临时预先显示给用户的最新结果,不会让用户操作多次下滑才从服务端得到更新的最新的结果。
客户端的已同步数据表与服务端的新闻数据信息表的结构相同,保存首次获取服务端返回的ID为2、10、9、8的新闻数据的相关信息;当前已同步数据表如表6所示:
表6
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 0 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
此时,版本区间范围表如表7所示;
表7
TableName | MinVer | MaxVer |
News | 1490986800 | 1496257200 |
最小版本号的有效区间是大于0的整数,当从服务端获取数据时需要排除为0的最小版本号,因此这里最小的是1490986800,只有客户端首次未有任何数据时,最大与最小版本号才为0,服务端也是以0来判断客户端没有同步过数据,需要下发特定的组合逻辑数据。
在客户端中使用手势向下滑动时,提交版本号Ver参数为:1496257200,获取服务端高版本的数据。
服务端读取新闻表中VerId字段大于1496257200的记录,此时服务端的新闻数据信息表中没有更新的数据,返回空结果。
修改ID为1的记录,此时服务器时间为2017/6/2 03:00:00,版本号更新为1496343600;此时,客户端再次提交版本号Ver参数为:1496257200,获取服务端高版本的数据,返回ID为1的新闻数据。若客户端间隔好几个月再同步数据,可能会超过同步上限200条,此时需清空客户端的旧的新闻数据。
此时,客户端的已同步数据表如表8所示。
表8
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 0 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/6/2 03:00:00 | false | 1496343600 |
此时,版本区间范围表如表9所示。
表9
TableName | MinVer | MaxVer |
News | 1490986800 | 1496343600 |
在客户端中手势向上滑动时,提交版本号Ver参数为:1490986800,将会获取服务端较低版本的数据;
服务端读取新闻数据信息表中VerId字段小于1490986800的3条记录,返回的结果集包括ID为8、7、4的记录对应的数据,然而ID为4的记录是有删除标记的会被排除不下发,最后返回的结果集为包括ID为8、7、6的记录对应的数据;
此时,客户端的已同步数据表如表10所示。
表10
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 1488308400 |
7 | T7 | Con | 2017/2/21 03:00:00 | 2017/2/22 03:00:00 | false | 1487703600 |
6 | T6 | Con | 2017/2/10 03:00:00 | 2017/2/15 03:00:00 | false | 1487098800 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/6/2 03:00:00 | false | 1496343600 |
此时,版本区间范围表如表10所示。
表11
TableName | MinVer | MaxVer |
News | 1487098800 | 1496343600 |
此次返回ID为8的记录对应的数据时,会使用ID为8的记录的版本号更新已同步数据表中原ID为8的记录对应的版本号0。
ID为8的记录对应的发布时间PublishTime字段不会变化,而客户端显示也是以这个发布时间降序来显示的,所有ID为8的记录对应的数据的显示位置不会变化,起到一个占位作用。首次更新时以版本号降序和发布时间降序的组合的数据下发,ID为8的记录对应的数据只是一个提供客户端临时预先显示给用户的最新结果,因为发布时间最新的数据有在版本号降序的列表里可能处于第2,3或更后面的位置,需要多次更新才能被客户端更新到,因此采用这种首次合组版本号降序和发布时间降序的方式下发数据,不会让用户操作多次下滑才从服务端到更新的最新的结果,同时发布时间降序的数据采用版本号为0也不会影响版本号范围区间。
在客户端中手势再次向上滑动时,读取低于版本号为1487098800的记录,接着服务端会返回ID为5和3的记录对应的数据,最后低版本的数据就全部同步到客户端了,已同步数据表如表12所示。
表12
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 1488308400 |
7 | T7 | Con | 2017/2/21 03:00:00 | 2017/2/22 03:00:00 | false | 1487703600 |
6 | T6 | Con | 2017/2/10 03:00:00 | 2017/2/15 03:00:00 | false | 1487098800 |
5 | T5 | Con | 2017/2/1 03:00:00 | 2017/2/1 03:00:00 | false | 1485889200 |
3 | T3 | Con | 2017/1/11 03:00:00 | 2017/1/11 03:00:00 | false | 1484074800 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/6/2 03:00:00 | false | 1496343600 |
此时,版本区间范围表如表13所示。
表13
TableName | MinVer | MaxVer |
News | 1484074800 | 1496343600 |
将服务端ID为3的记录对应的数据删除,此时服务器时间为2017/6/303:00:00,ID为3的记录的IsRem字段被设置为true,版本号为1496430000。在客户端中手势再次向下滑动时,提交版本号Ver参数为1496343600,返回的ID为3的记录对应的数据。
同步高版本数据时有IsRem标记的需要下发给客户端让其删除,而取低版本时有IsRem标记的记录在客户端不会存在不需要删除,因此也就不用下发了。
客户端APP获取服务端返回的高版本新闻数据,其中ID为3是带删除标记,需要删除客户端的记录,注意删除后要更新版本区间范围表MaxVer字段。
此时,已同步数据表如表14所示。
表14
Id | Title | Content | PublishTime | UpdateTime | IsRem | VerId |
10 | T10 | Con | 2017/5/1 03:00:00 | 2017/5/1 03:00:00 | false | 1493578800 |
9 | T9 | Con | 2017/4/1 03:00:00 | 2017/4/1 03:00:00 | false | 1490986800 |
8 | T8 | Con | 2017/3/1 03:00:00 | 2017/3/1 03:00:00 | false | 1488308400 |
7 | T7 | Con | 2017/2/21 03:00:00 | 2017/2/22 03:00:00 | false | 1487703600 |
6 | T6 | Con | 2017/2/10 03:00:00 | 2017/2/15 03:00:00 | false | 1487098800 |
5 | T5 | Con | 2017/2/1 03:00:00 | 2017/2/1 03:00:00 | false | 1485889200 |
2 | T2 | Con | 2017/1/2 03:00:00 | 2017/6/1 03:00:00 | false | 1496257200 |
1 | T1 | Con | 2017/1/1 03:00:00 | 2017/6/2 03:00:00 | false | 1496343600 |
此时,版本区间范围表如表15所示。
表15
TableName | MinVer | MaxVer |
News | 1484074800 | 1496430000 |
综上所述,本发明提供的一种数据同步的方法及终端,通过根据客户端已同步数据的最大更新时间戳和最小更新时间戳同步服务端的数据,实现在同步数据的过程中不会由于服务端中一数据的更新时间戳发生变化而导致数据遗漏的同时减少客户端的流量消耗。由上述描述可知,避免同步大量不具有时效性的数据造成浪费客户端流量的现象。进一步地,实现有效避免同步重复数据。进一步地,同步数据时综合考虑数据的发布时间和更新时间,避免频繁更新造成需多次操作才可同步到具有时效性的最新发布数据。进一步地,由于本发明是根据数据的更新时间戳同步数据,因此设置根据发布时间同步的数据的更新时间戳字段值为零,可消除由于虚假扩大客户端已同步数据的范围而造成的同步过程中数据遗漏的现象。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (14)
1.一种数据同步的方法,其特征在于,包括:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
2.根据权利要求1所述的数据同步的方法,其特征在于,还包括:
计算上次同步数据的时间与当前系统时间的时间间隔;
当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值。
3.根据权利要求2所述的数据同步的方法,其特征在于,所述S3具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则:
从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则:
从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
服务端发送与所述第一记录集合对应的第一数据集合至客户端。
4.根据权利要求3所述的数据同步的方法,其特征在于,还包括:
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;
若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值。
5.根据权利要去1所述的数据同步的方法,其特征在于,所述S4具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第二同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端。
6.根据权利要求1所述的数据同步的方法,其特征在于,还包括:
预设第一同步条数;
根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合。
7.根据权利要求6所述的数据同步的方法,其特征在于,还包括:
获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;
获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;
设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
8.一种数据同步的终端,其特征在于,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:
S1、获取客户端的已同步数据表;所述已同步数据表包括唯一标识符字段和更新时间戳字段;
S2、根据所述已同步数据表获取最大更新时间戳和最小更新时间戳;
S3、当接收到预设的第一同步指令时,从服务端同步更新时间戳大于所述最大更新时间戳的第一数据集合;
S4、当接收到预设的第二同步指令时,从服务端同步更新时间戳小于所述最小更新时间戳的第二数据集合。
9.根据权利要求8所述的数据同步的终端,其特征在于,还包括:
计算上次同步数据的时间与当前系统时间的时间间隔;
当所述时间间隔大于预设时长阈值时,设置所述最大更新时间戳为预设的初始值。
10.根据权利要求9所述的数据同步的终端,其特征在于,所述S3具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第一同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第一有序数据信息表;
若所述最大更新时间戳为所述预设的初始值,则:
从所述第一有序数据信息表获取与所述第二同步条数对应的连续记录,得到第一记录集合;否则:
从所述第一有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值大于所述最大更新时间戳的连续记录,得到第一记录集合;
服务端发送与所述第一记录集合对应的第一数据集合至客户端。
11.根据权利要求10所述的数据同步的终端,其特征在于,还包括:
获取所述第一记录集合中具有最大所述更新时间戳字段的值的记录,得到最新更新记录;
若服务器中不存在与所述最新更新记录对应的数据,则设置所述最大更新时间戳为与所述最新更新记录对应的更新时间戳字段的值。
12.根据权利要去8所述的数据同步的终端,其特征在于,所述S4具体为:
预设第二同步条数;
获取服务端的数据信息表;所述数据信息表包括唯一标识符字段和更新时间戳字段;
当接收到所述第二同步指令时,
根据所述更新时间戳字段排序所述数据信息表,得到第二有序数据信息表;
从所述第二有序数据信息表获取与所述第二同步条数对应的,且更新时间戳字段的值小于所述最小更新时间戳的连续记录,得到第二记录集合;
服务端发送与所述第二记录集合对应的第二数据集合至客户端。
13.根据权利要求8所述的数据同步的终端,其特征在于,还包括:
预设第一同步条数;
根据发布时间戳同步服务端中与所述第一同步条数对应的第三数据集合。
14.根据权利要求13所述的数据同步的终端,其特征在于,还包括:
获取所述第一数据集合中不存在,且所述第三数据集合中存在的数据,得到第四数据集合;
获取所述已同步数据表中与所述第四数据集合对应的记录,得到第三记录集合;
设置所述第三记录集合中每一记录的更新时间戳字段的值为零。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710561251.0A CN107370803B (zh) | 2017-07-11 | 2017-07-11 | 一种数据同步的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710561251.0A CN107370803B (zh) | 2017-07-11 | 2017-07-11 | 一种数据同步的方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107370803A true CN107370803A (zh) | 2017-11-21 |
CN107370803B CN107370803B (zh) | 2020-09-08 |
Family
ID=60306087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710561251.0A Active CN107370803B (zh) | 2017-07-11 | 2017-07-11 | 一种数据同步的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107370803B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536752A (zh) * | 2018-03-13 | 2018-09-14 | 北京信安世纪科技有限公司 | 一种数据同步方法、装置和设备 |
CN109062592A (zh) * | 2018-07-16 | 2018-12-21 | 福建省天奕网络科技有限公司 | 一种游戏数值同步的方法及系统 |
CN109558458A (zh) * | 2018-12-30 | 2019-04-02 | 贝壳技术有限公司 | 数据同步方法、配置平台、交易平台及数据同步系统 |
CN111611252A (zh) * | 2020-04-01 | 2020-09-01 | 石化盈科信息技术有限责任公司 | 数据同步过程中安全数据的监控、装置、设备和存储介质 |
CN112100189A (zh) * | 2020-09-16 | 2020-12-18 | 南京亚信软件有限公司 | 数据更新冲突的检测方法、装置以及电子设备 |
CN112486934A (zh) * | 2020-08-21 | 2021-03-12 | 海信视像科技股份有限公司 | 一种文件同步方法及显示设备 |
CN112527763A (zh) * | 2019-09-19 | 2021-03-19 | 深圳艾派网络科技股份有限公司 | 文本格式数据的更新方法及系统 |
CN112838980A (zh) * | 2020-12-30 | 2021-05-25 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、系统、装置、电子设备及存储介质 |
CN113742426A (zh) * | 2021-09-08 | 2021-12-03 | 深圳市云鼠科技开发有限公司 | 一种数据同步方法、装置、设备、服务器及存储介质 |
CN114567644A (zh) * | 2022-02-21 | 2022-05-31 | 深圳希施玛数据科技有限公司 | 一种数据同步的方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN103297529A (zh) * | 2013-06-06 | 2013-09-11 | 浙江大学 | 基于时间戳的树型结构数据同步方法 |
US8843491B1 (en) * | 2012-01-24 | 2014-09-23 | Google Inc. | Ranking and ordering items in stream |
CN105657049A (zh) * | 2016-02-26 | 2016-06-08 | 北京皮尔布莱尼软件有限公司 | 一种增量数据同步方法、装置和移动终端 |
CN106844689A (zh) * | 2017-01-23 | 2017-06-13 | 北京皮尔布莱尼软件有限公司 | 一种分页数据同步方法、装置及系统 |
-
2017
- 2017-07-11 CN CN201710561251.0A patent/CN107370803B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843491B1 (en) * | 2012-01-24 | 2014-09-23 | Google Inc. | Ranking and ordering items in stream |
CN102880685A (zh) * | 2012-09-13 | 2013-01-16 | 北京航空航天大学 | 一种时间密集大数据量的b/s分区间分页查询方法 |
CN103297529A (zh) * | 2013-06-06 | 2013-09-11 | 浙江大学 | 基于时间戳的树型结构数据同步方法 |
CN105657049A (zh) * | 2016-02-26 | 2016-06-08 | 北京皮尔布莱尼软件有限公司 | 一种增量数据同步方法、装置和移动终端 |
CN106844689A (zh) * | 2017-01-23 | 2017-06-13 | 北京皮尔布莱尼软件有限公司 | 一种分页数据同步方法、装置及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536752A (zh) * | 2018-03-13 | 2018-09-14 | 北京信安世纪科技有限公司 | 一种数据同步方法、装置和设备 |
CN108536752B (zh) * | 2018-03-13 | 2021-11-09 | 北京信安世纪科技有限公司 | 一种数据同步方法、装置和设备 |
CN109062592A (zh) * | 2018-07-16 | 2018-12-21 | 福建省天奕网络科技有限公司 | 一种游戏数值同步的方法及系统 |
CN109558458A (zh) * | 2018-12-30 | 2019-04-02 | 贝壳技术有限公司 | 数据同步方法、配置平台、交易平台及数据同步系统 |
CN109558458B (zh) * | 2018-12-30 | 2021-08-03 | 贝壳找房(北京)科技有限公司 | 数据同步方法、配置平台、交易平台及数据同步系统 |
CN112527763A (zh) * | 2019-09-19 | 2021-03-19 | 深圳艾派网络科技股份有限公司 | 文本格式数据的更新方法及系统 |
CN111611252A (zh) * | 2020-04-01 | 2020-09-01 | 石化盈科信息技术有限责任公司 | 数据同步过程中安全数据的监控、装置、设备和存储介质 |
CN111611252B (zh) * | 2020-04-01 | 2023-07-18 | 石化盈科信息技术有限责任公司 | 数据同步过程中安全数据的监控、装置、设备和存储介质 |
CN112486934A (zh) * | 2020-08-21 | 2021-03-12 | 海信视像科技股份有限公司 | 一种文件同步方法及显示设备 |
CN112100189A (zh) * | 2020-09-16 | 2020-12-18 | 南京亚信软件有限公司 | 数据更新冲突的检测方法、装置以及电子设备 |
CN112838980A (zh) * | 2020-12-30 | 2021-05-25 | 北京奇艺世纪科技有限公司 | 一种消息处理方法、系统、装置、电子设备及存储介质 |
CN113742426A (zh) * | 2021-09-08 | 2021-12-03 | 深圳市云鼠科技开发有限公司 | 一种数据同步方法、装置、设备、服务器及存储介质 |
CN114567644A (zh) * | 2022-02-21 | 2022-05-31 | 深圳希施玛数据科技有限公司 | 一种数据同步的方法、装置及电子设备 |
CN114567644B (zh) * | 2022-02-21 | 2023-10-20 | 深圳希施玛数据科技有限公司 | 一种数据同步的方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107370803B (zh) | 2020-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107370803A (zh) | 一种数据同步的方法及终端 | |
CN102164186B (zh) | 一种实现云搜索服务的方法及系统 | |
CN104794177B (zh) | 一种数据存储方法及装置 | |
CN103699638B (zh) | 一种基于配置参数实现跨数据库类型同步数据的方法 | |
CN111177144B (zh) | 表同步方法、装置、设备、存储介质及系统 | |
CN101136016A (zh) | 一种全文检索系统的索引在线更新方法 | |
CN103514274A (zh) | 非关系型数据库HBase的数据迁移方法 | |
CN106933836A (zh) | 一种基于分表的数据存储方法和系统 | |
CN109254901B (zh) | 一种指标监测方法及系统 | |
WO2001016799A1 (en) | Method and system for supporting multiple, historical and future designs in a relational database | |
CN103164525A (zh) | Web应用发布方法和装置 | |
CN105528371B (zh) | 一种执行写任务的方法、装置及系统 | |
CN105900093A (zh) | 一种KeyValue数据库的数据表的更新方法与表数据更新装置 | |
CN100579133C (zh) | 一种产生标识符的方法 | |
CN105426506B (zh) | 一种海量动态数据管理方法 | |
KR20120135588A (ko) | 다중범위 스캔에서의 n 정렬 질의를 최적으로 처리하기 위한 방법 및 장치 | |
CN114185991A (zh) | 基于分布式数据库实现数据同步的方法及相关装置 | |
CN109739885A (zh) | 基于本地缓存的数据查询方法、装置、设备及存储介质 | |
CN103516765A (zh) | 社会性网络服务后台数据的存储方法和系统 | |
CN102902735B (zh) | 一种交互式网络电视iptv搜索缓存方法和系统 | |
CN108363796A (zh) | 一种数据的迁移方法及装置 | |
CN108769166A (zh) | 一种基于元数据的cdn缓存内容管理装置 | |
CN105095224A (zh) | 一种在移动通信网络中进行olap分析的方法、装置和系统 | |
CN109756780B (zh) | 一种视频处理的方法及装置 | |
CN104252503B (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 |