一种修改记录项的查找、更新和同步方法及数据同步设备的制作方法

文档序号:6586600阅读:202来源:国知局
专利名称:一种修改记录项的查找、更新和同步方法及数据同步设备的制作方法
技术领域
本发明涉及通讯领域中终端的个人信息管理(Personal InformationManager,PIM)(数据同步)业务,尤其涉及一种修改记录项的查找、更新和同步方法及数据同步设备。
背景技术
对手机、PDA (Personal Digital Assistant,个人数码助理)等终端个人信息、日程信息和邮件信息等的管理已经成为终端信息管理的一个重要组成部分。如何安全有效的将数据备份到网络服务器中,在更换终端或者终端数据发生变化时方便的将备份数据恢复到终端已成为数据同步的主题。SyncML协议可以实现终端和网络等服务器的数据同步,最终使得终端和服务器上的数据保持一致。 为了实现终端与服务器的快速高效同步,通常采用增量同步的方式。增量同步是指将自上一次同步之后到本次同步之间的数据更新进行同步。SyncML协议中的快同步即为一种增量同步方式。 为了实现增量同步,终端或服务器需要记录同步数据库(如电话本)中自上一次同步之后到本次同步之间实体(如一条电话本记录)的数据更新,即修改日志(changelog)。修改日志通常以文件形式存在,它由一个个修改记录项组成,每一个修改记录项代表一个被更新实体的修改信息,其中包括该实体的唯一标识符(该标识符是由数据库为每一实体分配的)、对该实体的操作类型以及可选的该实体更新后的数据等信息。此外,在changelog中修改记录项通常以被更新实体的修改时间为序向后生长。
现有技术中,通常是每操作(修改) 一次实体(不论对同一实体还是不同实体),都会在changelog上添加一条修改记录项。采用这种方式后,随着数据更新次数的增加,changelog会越来越大,并将无限制地增长。 为了限制changelog的无限增长,通常采用的方案为对于每一个实体,changelog中只存在其最多一个修改记录项,即当对一个实体进行修改时,在将对应的修改记录项添加到changelog中前,首先查询changelog中是否已存在该实体的修改记录项;如果存在,则按照某种叠加策略,在changelog中修改其对应的修改记录项;如果不存在,则在changelog中添加一条该实体对应的修改记录项。 采用以上方案虽能限制changelog的大小,但是需要采用遍历式搜索方式来查找changelog中是否存在该实体对应的修改记录项。而且,对于任何一次修改,不论changelog是否存在其对应的修改记录项,都要执行一次上述遍历式查找的流程,这将严重影响查找速度和效率。

发明内容
本发明的目的在于提供一种修改日志中修改记录项的查找、更新和同步方法及数据同步设备,以克服现有技术中查找修改记录项效率低下的问题。
为解决上述问题,本发明提供了一种修改记录项的查找方法,包括 在数据同步设备的修改日志中,各修改记录项按照各项包含的实体标识符的数值
大小顺序排列; 在所述数据同步设备中,当其上数据库中有实体发生数据更新时,利用有序数列
中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记录项。 进一步地,上述查找方法还可具有以下特征 所述有序数列中元素的查找算法包括折半查找算法。 本发明还提供了一种修改记录项的更新方法,包括 在数据同步设备的修改日志中,各修改记录项按照各项包含的实体标识符的数值大小顺序排列; 在所述数据同步设备中,当其上数据库中有实体发生数据更新时,利用有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记录项;如存在,则按照叠加策略,将所述修改记录项中的原更新信息修改为本次更新的信息;否则,将本次更新所对应的修改记录项添加到所述修改日志中,且完成添加后的所述修改日志中各修改记录项仍按照各项包含的实体标识符的数值大小顺序排列。
进一步地,上述更新方法还可具有以下特征 所述将本次更新所对应的修改记录项添加到所述修改日志中是指将本次更新所对应的修改记录项添加到所述修改日志中的任意位置,然后将所述修改日志中的各修改记录项按照实体标识符的数值大小顺序排列。
进一步地,上述更新方法还可具有以下特征 所述将本次更新所对应的修改记录项添加到所述修改日志中是指按照有序序列
中元素的插值算法对所述修改记录项中实体标识符进行处理,将本次更新所对应的修改记
录项添加到所述修改日志中的相应位置。
进一步地,上述更新方法还可具有以下特征 所述有序数列中元素的查找算法包括折半查找算法。
进一步地,上述更新方法还可具有以下特征 所述有序数列中元素的插值算法包括折半插值算法。
本发明还提供了一种修改记录项的同步方法,包括 在进行同步时,数据同步设备将本地修改日志中保存的修改记录项对应的数据同步到对端设备上;在同步完成后,所述数据同步设备将所有未成功同步的修改记录项保存下来,并对所述所有未成功同步的修改记录项按照各项包含的实体标识符的数值大小顺序进行排列。 进一步地,上述更新方法还可具有以下特征 所述修改日志中的每一修改记录项对应一个FLAG, FLAG的值用于表示对应的修改记录项是否有效; 在同步过程中,对端设备在接收到所述数据同步设备发来的数据后,在本地进行相关数据的同步处理,并按照该条数据的同步处理结果向所述数据同步设备返回同步成功响应或同步失败响应;所述数据同步设备在接收到所述同步成功响应后,将该条数据对应的相关修改记录项的FLAG值置为表示无效
在同步完成后,所述数据同步设备将所有未成功同步的修改记录项保存下来是 指在同步完成后,所述数据同步设备将所有FLAG值表示有效的修改记录项保存下来。
本发明还提供了一种数据同步设备,包括存储单元及查找单元;
所述存储单元用于保存修改日志,且在该修改目志中各修改记录项按照各项包含 的实体标识符的数值大小顺序排列; 所述查找单元用于在所述数据同步设备的数据库中有实体发生数据更新时,利用 有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记 录项。 进一步地,上述数据同步设备还可包括更新单元; 所述查找单元还用于根据查找结果向所述更新单元相应的发送查找成功或查找 失败消息; 所述更新单元用于在收到查找成功消息后按照叠加策略,将所述修改记录项中的
原更新信息修改为本次更新的信息;还用于在收到查找失败消息后将本次更新所对应的修
改记录项添加到所述修改日志中;其中,完成添加后的所述修改日志中各修改记录项仍按
照各项包含的实体标识符的数值大小顺序排列。 进一步地,上述数据同步设备还可具有以下特征 所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中是指
所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中的任意位置,然
后将所述修改日志中的各修改记录项按照实体标识符的数值大小顺序排列; 或者所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中
是指所述更新单元用于按照有序序列中元素的插值算法对所述修改记录项中实体标识符
进行处理,将本次更新所对应的修改记录项添加到所述修改日志中的相应位置。 进一步地,上述数据同步设备还可包括同步单元; 在与对端设备进行数据同步时,所述同步单元用于将所述修改日志中保存的修改 记录项对应的数据同步到所述对端设备上;还用于在同步完成后,将所有未成功同步的修 改记录项保存下来,并对所述所有未成功同步的修改记录项按照各项包含的实体标识符的 数值大小顺序进行排列。 对有序序列进行查找的速度远远高于遍历式查找。因此,采用本发明不仅可以限 制changelog的大小、使得文件维护简单,而且可大大提高对修改记录项的查找速度。


图1为本发明实施例中更新修改记录项方法的流程图; 图2为本发明实施例中增量同步流程图; 图3为本发明实施例中changelog中修改记录项结构示意图; 图4为本发明实施例中有序的changelog示意图; 图5为本发明实施例中经过更新后的changelog示意图; 图6为本发明实施例中插入实体标识符为6的修改记录项后的不changelog示意 图; 图7(a)为本发明实施例中直接将实体标识符为6的新修改记录项添加至changelog尾的示意图; 图7(b)为本发明实施例中经过重新排序后的changelog示意图。
具体实施例方式
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。 本发明所述查找方法的基本构思是在数据同步设备(如手机或PDA (Personal
Digital Assistant,掌上电脑)等终端、服务器或任意其它能实现数据同步的设备)的
changelog中,各修改记录项按照各项包含的实体标识符的数值大小顺序排列; 在该数据同步设备中,当其上数据库中有实体发生数据更新时,利用有序数列中
元素的查找算法在上述changelog中查找是否存在包含该实体标识符的修改记录项。 相应地,如图1所示,所述更新方法的基本构思是在按照上述查找方法完成查找
后,若在changelog中查找到包含该实体标识符的修改记录项,则按照叠加策略,将该修改
记录项中的原更新信息修改为本次更新的信息;否则,将本次更新所对应的修改记录项添
加到上述changelog中,且完成添加后的changelog中各修改记录项仍然按照各项包含的
实体标识符的数值大小顺序排列。 要实现完成添加后的changelog中各修改记录项仍按照各项包含的实体标识符 的数值大小顺序排列,可采用以下两种方式中的任意一种实现 方式一 在changelog中添加修改记录项时,可将本次更新所对应的修改记录项 添加到上述changelog中的任意位置(优选地,可添加到changelog的尾部);完成添加 后,按照changelog中各修改记录项包含的实体标识符的数值大小顺序重新对修改记录项 进行排列。 方式二 在changelog中添加修改记录项时,可按照有序序列中元素的插值 算法对该修改记录项中实体标识符进行处理,将本次更新所对应的修改记录项添加到 changelog中的相应位置。 采用上述更新方法后,能得到一个全新的有序的changelog,如此循环地对该 changelog进行操作,不仅文件维护较为简单,且大大提高了对修改记录项的查找速度。总 之,本发明将changelog的排序和插值融入同步中,实现了 changelog中修改记录项的快速 查找。 当上述数据同步设备需要与其它设备进行数据同步时,如图2所示,执行下述步 骤 1)读取changelog :读取changelog中的所有changelog记录项;
2)同步实现该数据同步设备与上述其它设备的数据同步; 3)刷新changelog :将已经同步成功的实体对应的修改记录项从changelog中删 除,并在剩余的修改记录项多于1条的情况下,对剩余的修改记录项按照各项包含的实体 标识符的数值大小进行顺序排列。 同步结束后,若对数据库中的某个或某些实体进行了更新操作,则按照上述更新 方法将该更新操作更新到上述刷新后的changelog中。
下面用本发明的一应用实例进一步加以说明。 以SyncML协议同步电话本数据库为例。图3为changelog中修改记录项的结构,其中包括实体标识符和带有FLAG的操作类型。 实体标识符LUID,为电话本数据库为该电话本中每一实体分配的唯一 ID号;
带有FLAG的操作类型其值可为0 3。其中,O代表无效,1 3均为有效,1代 表添加(ADD) , 2代表删除(DELETE) , 3代表更新(UPDATE)。 在同步结束后,对changelog中的各未成功同步的修改标记项进行排序操作,包 括 (1)利用任何一种排序算法,将所有未成功同步的修改记录项按照其中实体标识 符的数值大小升序或降序地存入一个临时文件。因此,该临时文件有序;
在进行数据同步时,同步设备会将本地保存的changelog中所有有效的修改记录 项对应的数据逐条同步到对端设备上,并会收到对端发来的关于每条数据是否同步成功的 响应(即同步成功响应或同步失败响应)。由于本实施例采用FLAG的值来表示相应的修改 操作类型,因此,上述同步设备在收到某条响应时,如根据该响应判断出某条数据已同步成 功,则将本地保存的该条数据对应的修改记录项对应的FLAG值置为表示无效(在本实施例 中即为0);否则,不对该条修改记录项对应的FLAG值进行修改。 则在同步结束后,所有未成功同步的修改记录项即为changelog中FLAG值表示有 效的修改记录项。 (2)将原changelog删除。 (3)将临时文件更名为原changelog名,得到一个有序的changelog,如图4所示。 当对电话本中某项数据(及实体)发生更新时,包括以下步骤 (1)在有序的changelog中根据任何一种有效的有序序列中元素的查找算法查找
changelog中是否有该实体标识符对应的修改记录项; (2)根据上一步查找的结果,操作如下 1)如果有该实体标识符对应的修改记录项,则按照一定的叠加策略对该记录进行 修改。 如对图4中标识符为5的实体又进行了一次操作,本次操作为删除,则按照叠加 策略,在changelog中查找到标识符为5的修改记录项后,将原操作类型(UPDATE)修改为 DELETE。 2)如果不存在该实体标识符对应的修改记录项,根据上述设计思想,可采用下述 两种方案中的任意一种 a)可按照一定的插值算法,将新的修改记录项有序地插入到changelog中,使 changelog在对电话本的手动操作过程中一直保持有序。 如对实体标识符为6的实体进行了添加操作,则需要将此次修改对应的修改记录 项添加到changelog中。采用上述插值算法后,该修改记录项会被添加到实体标识符为5 与7的修改记录项之间,如图6所示; b)可将新的修改记录项直接添加至changelog尾,接着进行一次changelog中各 修改记录项的重新排序操作,亦可达到排序目的。 如对实体标识符为6的实体进行了添加操作,则需要将此次修改对应的修改记录 项添加到changelog中。则如图7(a)所示,需先将该修改记录项添加到changelog的尾部 (即添加到包含实体标识符为7的修改记录项后),然后重新对各修改记录项进行排序,按照各项中实体标识符的数值大小进行升序或降序排列,排序后的文件如图7(b)所示。 采用上述两种方式,都可以得到一个全新的有序的changelog。 假设在一般方案中,changelog中各修改记录项无序排列(数字代表changelog
中各修改记录项中包含的实体标识符) 1439712171520 则如果要更新标识符为15的修改记录项,采用传统的方案,则需遍历8次,即8次
才能找到。最坏情况下需要9次。采用遍历式查找,复杂度为O(N),即最坏情况下需查找N
次,其中,N为changelog中包含的修改标记项的个数。 而如果对changelog中的修改标记项采用有序排列,则排序为 1347912151720 如采用常用的有序序列元素的查找方法——折半查找法,查找标识符为15的修改 记录项,则只需要2次。最坏的情况是查找20,也只需4次。因为折半查找法的复杂度为 0(log2N)。 则当N = 1000时,对于遍历式查找,最坏情况下需查找1000次;而对于折半查找, 最坏只需查找10次。因此大大提高了查找速度。 在一般方案中,同上述第一个序列,假设需要向changelog中添加标识符为13的 changelog记录,则在一般方案中,会将13排在20后面,即
143971217152013 在本说明中,当名片夹有修改时,假设为新增的changelog记录,要将新的 changelog修改记录力口入changelog,有两禾中方法 方法一 可采用折半插入法,即采用折半查找的方法,查找到应该插入的位置,直 接将新的修改记录项有序地插入changelog,使changelog在对数据库的更新过程中一直 保持有序。同上,折半插入法的复杂度为0(log2N)。当N为1000时,在最坏的情况下,也只 需10次查找便可实现changelog的有序。 方法二 可将新的修改记录项直接添加至changelog尾,接着进行一次changelog 中各修改记录项的重新排序操作,亦可达到排序目的。 虽然采用方法一时增加了插值,但其实也只是进行了折半查找,N = 1000时,最坏 也只需查找10次。也就是说,对于N = IOOO,有序的插入和查找加起来最多也就是20次, 而对于无序的遍历,最坏情况查找却要1000次。因此采用本发明大大降低了复杂度。
综上所述,采用本发明使得对修改记录项的查询速度大大提高。本发明不仅可以 限制文件的无限增长,使得文件维护较为简单,而且可大大提高对修改记录项的查找速度。
此外,本发明还提供了一种数据同步设备,包括存储单元及查找单元;
所述存储单元用于保存修改日志,且在该修改日志中各修改记录项按照各项包含 的实体标识符的数值大小顺序排列; 所述查找单元用于在所述数据同步设备的数据库中有实体发生数据更新时,利用 有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记 录项。 上述设备中还可还包括更新单元; 所述查找单元还用于根据查找结果向所述更新单元相应的发送查找成功或查找失败消息; 所述更新单元用于在收到查找成功消息后按照叠加策略,将所述修改记录项中的 原更新信息修改为本次更新的信息;还用于在收到查找失败消息后将本次更新所对应的修 改记录项添加到所述修改日志中;其中,完成添加后的所述修改日志中各修改记录项仍按 照各项包含的实体标识符的数值大小顺序排列。 进一步地,所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日 志中是指所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中的任 意位置,然后将所述修改日志中的各修改记录项按照实体标识符的数值大小顺序排列;或 者,所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中是指所述 更新单元用于按照有序序列中元素的插值算法对所述修改记录项中实体标识符进行处理, 将本次更新所对应的修改记录项添加到所述修改日志中的相应位置。 上述设备中还可包括同步单元;在与对端设备进行数据同步时,所述同步单元用 于将所述修改日志中保存的修改记录项对应的数据同步到所述对端设备上;还用于在同步 完成后,将所有未成功同步的修改记录项保存下来,并对所述所有未成功同步的修改记录 项按照各项包含的实体标识符的数值大小顺序进行排列。 当然 ,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟 悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变 形都应属于本发明所附的权利要求的保护范围。
权利要求
一种修改记录项的查找方法,其特征在于,在数据同步设备的修改日志中,各修改记录项按照各项包含的实体标识符的数值大小顺序排列;在所述数据同步设备中,当其上数据库中有实体发生数据更新时,利用有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记录项。
2. 如权利要求l所述的查找方法,其特征在于,所述有序数列中元素的查找算法包括折半查找算法。
3. —种修改记录项的更新方法,其特征在于,在数据同步设备的修改日志中,各修改记录项按照各项包含的实体标识符的数值大小顺序排列;在所述数据同步设备中,当其上数据库中有实体发生数据更新时,利用有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记录项;如存在,则按照叠加策略,将所述修改记录项中的原更新信息修改为本次更新的信息;否则,将本次更新所对应的修改记录项添加到所述修改日志中,且完成添加后的所述修改日志中各修改记录项仍按照各项包含的实体标识符的数值大小顺序排列。
4. 如权利要求3所述的更新方法,其特征在于,所述将本次更新所对应的修改记录项添加到所述修改日志中是指将本次更新所对应的修改记录项添加到所述修改日志中的任意位置,然后将所述修改日志中的各修改记录项按照实体标识符的数值大小顺序排列。
5. 如权利要求3所述的更新方法,其特征在于,所述将本次更新所对应的修改记录项添加到所述修改日志中是指按照有序序列中元素的插值算法对所述修改记录项中实体标识符进行处理,将本次更新所对应的修改记录项添加到所述修改日志中的相应位置。
6. 如权利要求3所述的更新方法,其特征在于,所述有序数列中元素的查找算法包括折半查找算法。
7. 如权利要求5所述的更新方法,其特征在于,所述有序数列中元素的插值算法包括折半插值算法。
8. —种修改记录项的同步方法,其特征在于,在进行同步时,数据同步设备将本地修改日志中保存的修改记录项对应的数据同步到对端设备上;在同步完成后,所述数据同步设备将所有未成功同步的修改记录项保存下来,并对所述所有未成功同步的修改记录项按照各项包含的实体标识符的数值大小顺序进行排列。
9. 如权利要求8所述的同步方法,其特征在于,所述修改日志中的每一修改记录项对应一个FLAG, FLAG的值用于表示对应的修改记录项是否有效;在同步过程中,对端设备在接收到所述数据同步设备发来的数据后,在本地进行相关数据的同步处理,并按照该条数据的同步处理结果向所述数据同步设备返回同步成功响应或同步失败响应;所述数据同步设备在接收到所述同步成功响应后,将该条数据对应的相关修改记录项的FLAG值置为表示无效;在同步完成后,所述数据同步设备将所有未成功同步的修改记录项保存下来是指在同步完成后,所述数据同步设备将所有FLAG值表示有效的修改记录项保存下来。
10. —种数据同步设备,其特征在于,包括存储单元及查找单元;所述存储单元用于保存修改日志,且在该修改日志中各修改记录项按照各项包含的实体标识符的数值大小顺序排列;所述查找单元用于在所述数据同步设备的数据库中有实体发生数据更新时,利用有序数列中元素的查找算法在所述修改日志中查找是否存在包含该实体标识符的修改记录项。
11. 如权利要求IO所述的设备,其特征在于,还包括更新单元;所述查找单元还用于根据查找结果向所述更新单元相应的发送查找成功或查找失败消息;所述更新单元用于在收到查找成功消息后按照叠加策略,将所述修改记录项中的原更新信息修改为本次更新的信息;还用于在收到查找失败消息后将本次更新所对应的修改记录项添加到所述修改日志中;其中,完成添加后的所述修改日志中各修改记录项仍按照各项包含的实体标识符的数值大小顺序排列。
12. 如权利要求ll所述的设备,其特征在于,所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中是指所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中的任意位置,然后将所述修改日志中的各修改记录项按照实体标识符的数值大小顺序排列;或者所述更新单元用于将本次更新所对应的修改记录项添加到所述修改日志中是指所述更新单元用于按照有序序列中元素的插值算法对所述修改记录项中实体标识符进行处理,将本次更新所对应的修改记录项添加到所述修改日志中的相应位置。
13. 如权利要求11所述的设备,其特征在于,还包括同步单元;在与对端设备进行数据同步时,所述同步单元用于将所述修改日志中保存的修改记录项对应的数据同步到所述对端设备上;还用于在同步完成后,将所有未成功同步的修改记录项保存下来,并对所述所有未成功同步的修改记录项按照各项包含的实体标识符的数值大小顺序进行排列。
全文摘要
一种修改日志中修改记录项的查找、更新和同步方法及数据同步设备,所述查找方法包括在数据同步设备的修改日志中,各修改记录项按照各项包含的实体标识符的数值大小顺序排列;数据同步设备上的数据库中有实体发生数据更新时,利用有序数列中元素的查找算法在修改日志中查找是否存在包含该实体标识符的修改记录项。所述更新方法包括利用上述查找方法如判断出存在相应修改记录项,则按照叠加策略将修改记录项中的原更新信息修改为本次更新的信息;否则,将本次更新所对应的修改记录项添加到修改日志中,且完成添加后的修改日志中各修改记录项仍按照各项包含的实体标识符的数值大小顺序排列。采用本发明可大大提高对修改记录项的查找速度。
文档编号G06F11/14GK101751473SQ200910262788
公开日2010年6月23日 申请日期2009年12月31日 优先权日2009年12月31日
发明者付丽琴, 何建桥, 蒲竞春, 谢鑫, 鞠飞, 魏上凯 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1