DATA SYNCHRONIZATION METHOD AND DEVICE

15-11-2012 дата публикации
Номер:
WO2012151881A1
Принадлежит: 中兴通讯股份有限公司
Контакты:
Номер заявки: CN17-08-201134
Дата заявки: 03-11-2011

[0001]

一种数据同步的方法及装置 技术领域

[0002]

本发明涉及无线通讯个人信息管理技术, 尤其涉及一种数据同步的方 法及装置。 背景技术

[0003]

移动终端个人信息、 日程信息和邮件信息等的管理日益重要, 已经成 为移动终端信息管理的一个重要组成部分。 在更换移动终端或者移动终端 数据发生变化时, 如何安全有效地将数据备份到网络服务器中, 以便日后 将备份数据恢复到移动终端, 实现移动终端和网络服务器的数据同步, 得 到了越来越多的关注。

[0004]

目前基本的数据同步业务有双向快同步和双向慢同步。 其中, 双向慢 同步将移动终端和网络服务器上的所有数据记录项, 如名片夹和日程表等 进行同步; 双向快同步是将移动终端和网络服务器上自从上一次同步之后 发生的所有变化进行同步。 注册同步业务的用户可以选择其中一种方式, 将移动终端和网络服务器之间的数据进行数据同步, 最终使移动终端和网 络服务器上的数据保持一致。

[0005]

其中,对于交换变化信息为目的的双向快同步而言,存在 changelog (修 改日志)的设计和实现问题。 Changelog用于记录移动终端或者网络服务器 自从上一次同步之后的数据变化信息。 该变化信息以数据记录项的形式出 现, 包括两部分内容: 对象和针对该对象进行的操作。 其中, 针对对象进 行的操作包括三种类型: 添加( ADD )、删除( DELETE)和更新 ( UPDATE )。 即, changelog需要记录针对哪一条记录做了何种修改。

[0006]

图 1是现有技术中,在诸如手机等移动终端中 changelog的数据结构图。 如图 1所示, 该 changelog结构中包含两个数据项: 操作对象和针对该操作 对象所进行的操作。 在这里, 操作对象引用的是存储于移动终端的每一条 数据在数据库中记录的唯一 ID。

[0007]

在信息同步标准 ( Synchronization Markup Language, SyncML )协议中 , 数据库记录的唯一 ID称为局部唯一标识( Locally Unique Identifier, LUID ), 该 LUID在移动终端中生成且是唯一的;在移动终端, 即使添加的记录项的 数据内容与某一项已经删除的记录完全相同, 其 LUID也与原来被删除的 LUID不同。

[0008]

图 2是图 1所示的 changelog的具体实例图, 如图 2所示, 分别进行的 操作为: 对 LUID为 1的记录进行了添加操作,对 LUID为 5的记录进行了 删除操作, 对 LUID为 6和 7的记录进行了更新操作。

[0009]

传统 changelog记录方法是将所有数据修改操作写入 changelog文件, 达到记录修改日志信息的要求。 然而其存在如下问题:

[0010]

( 1 ) 当 changelog中记录较多, 数据库数据进行批量操作时, 如进行 DELETE操作时, 因为每个修改数据都需要写入 changelog, 导致批量操作 性能降低。

[0011]

( 2 ) 当可以使用多个同步账号时, 每个同步账号都需要维护一个 changelog 文件。 当数据发生修改时, 需要将修改数据同时供写入多个 changelog文将, 账号越多, 性能越差。

[0012]

( 3 ) 多个同步账号 changelog并不独立, 同步一个账号时, 需要将修 改信息写入其他同步账号的 changelog, 会导致同步性能降低。 发明内容

[0013]

有鉴于此, 本发明的主要目的在于提供一种数据同步的方法及装置, 能够提高数据同步的性能。

[0014]

为达到上述目的, 本发明的技术方案是这样实现的: 一种数据同步的方法, 所述方法包括:

[0015]

生成包含有当前移动终端所有数据的局部唯一标识(LUID ) 的当前数 据链表;

[0016]

将当前数据链表与用于记录上次与服务器同步过的数据的已同步数据 链表进行对比;

[0017]

根据对比结果, 进行数据同步。

[0018]

进一步地, 所述方法还包括: 数据同步完成后, 移动终端根据当前数 据同步的情况, 更新所述已同步数据链表;

[0019]

其中, 所述已同步数据链表包含数据的 LUID及根据所述数据的内容 生成的校验值。

[0020]

其中, 所述将已同步数据链表与当前数据链表进行对比后, 所述方法 还包括:

[0021]

将存在于当前数据链表且不存在于已同步数据链表中的 LUID对应的 数据加入到添加链表。

[0022]

其中, 所述将已同步数据链表与当前数据链表进行对比后, 所述方法 还包括:

[0023]

将存在于已同步数据链表且不存在于当前数据链表中的 LUID对应的 数据加入到删除链表。

[0024]

其中, 所述将已同步数据链表与当前数据链表进行对比后, 所述方法 还包括:

[0025]

对同时存在于已同步数据链表和当前数据链表的 LUID对应的当前数 据内容计算校验值,并比较所述校验值与已同步数据链表中所述 LUID对应 的校险值, 若不一致, 则将所述 LUID对应的数据加入到更新链表。

[0026]

其中, 所述根据对比结果, 进行数据同步为:

[0027]

根据对比得到的添加链表、 删除链表、 更新链表中的一种或多种, 进 行数据的同步。

[0028]

一种数据同步的装置, 所述装置包括: 链表生成单元、 比较单元、 同 步单元; 其中,

[0029]

所述链表生成单元, 用于生成包含有当前移动终端所有数据的 LUID 的当前数据链表;

[0030]

所述比较单元, 用于将当前数据链表与用于记录上次与服务器同步过 的数据的已同步数据链表进行对比;

[0031]

所述同步单元, 用于根据对比结果, 进行数据同步。

[0032]

其中, 所述链表生成单元, 还用于在同步单元完成数据同步后, 根据 当前数据同步的情况, 更新所述已同步数据链表; 其中, 所述已同步数据 链表包含数据的 LUID及根据所述数据的内容生成的校验值。

[0033]

其中, 所述比较单元, 具体用于将已同步数据链表中的 LUID 与当前 数据链表中的 LUID进行对比后,将存在于当前数据链表且不存在于已同步 数据链表中的 LUID对应的数据加入到添加链表。

[0034]

其中, 所述比较单元, 具体用于将已同步数据链表中的 LUID 与当前 数据链表中的 LUID进行对比后,将存在于已同步数据链表且不存在于当前 数据链表中的 LUID对应的数据加入到删除链表。

[0035]

其中, 所述比较单元, 具体用于将已同步数据链表中的 LUID 与当前 数据链表中的 LUID进行对比后,对同时存在于已同步数据链表和当前数据 链表的 LUID对应的当前数据内容计算校验值,并比较所述校验值与已同步 数据链表中所述 LUID对应的校验值, 若不一致, 则将所述 LUID对应的数 据加入到更新链表。

[0036]

其中, 所述同步单元, 具体用于根据对比得到的添加链表、 删除链表、 更新链表中的一种或多种, 进行数据的同步。

[0037]

本发明通过对比当前数据链表与已同步数据链表实现数据的同步, 不 需要再依托于 changelog文件进行同步, 提高了数据同步的性能, 而且在修 改数据时不需要调用 changelog接口, 可移植性较强。 附图说明

[0038]

图 1为现有的 changelog的数据结构示意图;

[0039]

图 2为图 1所示的 changelog数据结构的具体实例示意图;

[0040]

图 3为本发明数据同步的方法的实现流程示意图;

[0041]

图 4为本发明数据同步的方法中已同步数据链表的具体实例示意图; 图 5为本发明数据同步的方法中当前数据链表的具体实例示意图; 图 6为图 4和图 5所示的已同步数据链表与当前数据链表的对比示意 图;

[0042]

图 7为本发明数据同步的装置的结构示意图。 具体实施方式

[0043]

本发明的基本思想为: 生成包含有当前移动终端所有数据的 LUID 的 当前数据链表; 将当前数据链表与用于记录上次与服务器同步过的数据的 已同步数据链表进行对比; 根据对比结果, 进行数据同步。

[0044]

为使本发明的目的、 技术方案和优点更加清楚明白, 以下举实施例并 参照附图, 对本发明进一步详细说明。

[0045]

图 3示出了本发明数据同步的方法的实现流程, 如图 3所示, 所述方 法包括下述步驟:

[0046]

步驟 301,生成包含有当前移动终端所有数据的 LUID的当前数据链表; 具体地, 在移动终端准备进行数据同步时, 获取当前自身所有数据的

[0047]

LUID , 生成当前数据链表, 所述当前数据链表包含有所述所有数据的

[0048]

LUID0

[0049]

步驟 302,将当前数据链表与用于记录上次与服务器同步过的数据的已 同步数据链表进行对比;

[0050]

具体地, 本步驟中, 已同步数据链表中包含了发送给服务器的添加和 更新数据, 以及从服务器接收的添加和更新数据。 接收服务器发送给移动 终端的添加和更新数据时, 移动终端会根据其内容生成新的校验值, 并将

[0051]

LUID和校验值保存到已同步数据链表中。

[0052]

将已同步数据链表中的 LUID与当前数据链表中的 LUID进行对比后, 还包括将存在于当前数据链表且不存在于已同步数据链表中的 LUID对应 的数据加入到添加链表; 将存在于已同步数据链表且不存在于当前数据链 表中的 LUID对应的数据加入到删除链表;对同时存在于已同步数据链表和 当前数据链表的 LUID对应的当前数据内容计算校验值,并比较所述校验值 与已同步数据链表中所述 LUID对应的校验值,若不一致,则将当前数据链 表的所述 LUID对应的数据加入到更新链表。

[0053]

具体地, 结合图 4示出的已同步数据链表、 图 5示出的当前数据链表 以及图 6的已同步数据链表与当前数据链表的对比示意图, 进行详细说明。

[0054]

图 4示出了移动终端上次与服务器同步过的已同步数据链表, 由图 4 可知, 移动终端与服务器同步过的数据包括 LUID为 1、 2、 4、 9的数据, 其各自的校验值参考图 4所示的校验值;

[0055]

图 5 示出了移动终端的当前数据链表, 即移动终端再次与服务器进行 同步时, 当前自身所有数据的 LUID, 如图 5所示, 包括 LUID为 1、 2、 9、 10的数据;

[0056]

结合图 6,将已同步数据链表与当前数据链表进行对比,其中, LUID 10 记录存在于当前数据链表中,但不存在于已同步数据链表中,所以 LUID 10 对应的数据是新增数据, 将该数据加入到添加链表中;

[0057]

其中, LUID 4 记录存在于已同步数据链表中, 但不存在于当前数据链 表中,所以 LUID 4对应的数据为是删除数据,将该数据加入到删除链表中; 找到既存在于当前数据链表中, 又存在于已同步数据链表中的 LUID, 并根据每个 LUID当前记录的数据内容产生新的校验值, 形成链表, 如图 6 所示的中间数据链表。 遍历所述中间数据链表中的 LUID, 将中间数据链表 和已同步数据链表相同 LUID的校验值进行比较,如果不相等,则认为是修 改数据, 将该数据添加到更新链表; 如果相等, 则认为是未修改数据。

[0058]

如图 6所示, LUID 9在已同步数据链表中的校验值为 5DB7AB8A, 但 在中间数据链表中其校验值为 DD2E9124, 由于两个校验值不相等, 所以 LUID 9为更新数据; LUID 1和 LUID 2, 在中间数据链表中的校验值与已 同步数据链表中校验值相等, 所以这两个数据为未修改数据。

[0059]

步驟 303 , 根据对比结果, 进行数据同步。

[0060]

根据步驟 302对比得到的添加链表、 删除链表、 更新链表中的一种或 多种, 对数据进行操作, 完成数据的同步;

[0061]

另外, 该方法还包括: 数据同步完成后, 移动终端根据当前数据同步 的情况, 更新所述已同步数据链表; 其中, 所述已同步数据链表包含数据 的 LUID及根据所述数据的内容生成的校验值,这里,所述校验值可以通过 循环冗余校验 ( Cyclic Redundancy Check, CRC )等校验算法进行生成。

[0062]

本发明还提供了一种实现上述数据同步的方法的装置, 图 7示出了该 装置的结构, 如图 7所示, 所述装置包括: 链表生成单元 71、 比较单元 72、 同步单元 73; 其中,

[0063]

所述链表生成单元 71 ,用于生成包含有当前移动终端所有数据的 LUID 的当前数据链表;

[0064]

所述比较单元 72, 用于将当前数据链表与用于记录上次与服务器同步 过的数据的已同步数据链表进行对比;

[0065]

所述同步单元 73 , 用于根据对比结果, 进行数据同步。

[0066]

其中, 所述链表生成单元 71 , 还用于在同步单元 73完成数据同步后, 根据当前数据同步的情况, 更新所述已同步数据链表; 其中, 所述已同步 数据链表包含数据的 LUID及根据所述数据的内容生成的校验值;这里,所 述校验值可以通过 CRC等校验算法进行生成。

[0067]

其中, 所述比较单元 72, 具体用于将已同步数据链表中的 LUID与当 前数据链表中的 LUID进行对比后,将存在于当前数据链表且不存在于已同 步数据链表中的 LUID对应的数据加入到添加链表;这里, 已同步数据链表 中包含了发送给服务器的添加和更新数据, 以及从服务器接收的添加和更 新数据。 接收服务器发送给移动终端的添加和更新数据时, 移动终端会根 据其内容生成新的校验值, 并将 LUID和校验值保存到已同步数据链表中。

[0068]

其中, 所述比较单元 72, 具体用于将已同步数据链表中的 LUID与当 前数据链表中的 LUID进行对比后,存在于已同步数据链表且不存在于当前 数据链表中的 LUID对应的数据加入到删除链表。

[0069]

其中, 所述比较单元 72, 具体用于将已同步数据链表中的 LUID与当 前数据链表中的 LUID进行对比后,对同时存在于已同步数据链表和当前数 据链表的 LUID对应的当前数据内容计算校验值,并比较所述校验值与已同 步数据链表中所述 LUID对应的校验值,若不一致,则将当前数据链表中的 所述 LUID对应的数据加入到更新链表。

[0070]

其中, 所述同步单元 73 , 具体用于根据对比得到的添加链表、 删除链 表、 更新链表中的一种或多种, 进行数据的同步。

[0071]

以上所述, 仅为本发明的较佳实施例而已, 并非用于限定本发明的保 护范围。



[0000]

The present invention provides a data synchronization method and device. The method comprises: generating a current data linked list containing a local unique identifier (LUID) of all data in a current mobile terminal; comparing the current data linked list with a synchronized data linked list recording data that is already synchronized with a server; and performing data synchronization according to a comparison result. In the present invention, the current data linked list is compared with the synchronized data linked list to implement data synchronization without relying on a changelog file, which improves the performance of data synchronization and does not need to invoke a changelog interface when data is modified, so that high portability is achieved.

[1]



权利要求书

1、 一种数据同步的方法, 其特征在于, 所述方法包括:

生成包含有当前移动终端所有数据的局部唯一标识 LUID 的当前数据 链表;

将当前数据链表与用于记录上次与服务器同步过的数据的已同步数据 链表进行对比;

根据对比结果, 进行数据同步。

2、 根据权利要求 1所述的方法, 其特征在于, 所述方法还包括: 数据 同步完成后, 移动终端根据当前数据同步的情况, 更新所述已同步数据链 表;

其中, 所述已同步数据链表包含数据的 LUID及根据所述数据的内容 生成的校验值。

3、 根据权利要求 1所述的方法, 其特征在于, 所述将已同步数据链表 与当前数据链表进行对比后, 所述方法还包括:

将存在于当前数据链表且不存在于已同步数据链表中的 LUID对应的 数据加入到添加链表。

4、 根据权利要求 1所述的方法, 其特征在于, 所述将已同步数据链表 与当前数据链表进行对比后, 所述方法还包括:

将存在于已同步数据链表且不存在于当前数据链表中的 LUID对应的 数据加入到删除链表。

5、 根据权利要求 1所述的方法, 其特征在于, 所述将已同步数据链表 与当前数据链表进行对比后, 所述方法还包括:

对同时存在于已同步数据链表和当前数据链表的 LUID对应的当前数 据内容计算校验值,并比较所述校验值与已同步数据链表中所述 LUID对应 的校险值, 若不一致, 则将所述 LUID对应的数据加入到更新链表。 6、 根据权利要求 1至 5任一项所述的方法, 其特征在于, 所述根据对 比结果, 进行数据同步为:

根据对比得到的添加链表、 删除链表、 更新链表中的一种或多种, 进 行数据的同步。

7、一种数据同步的装置, 其特征在于, 所述装置包括: 链表生成单元、 比较单元、 同步单元; 其中,

所述链表生成单元, 用于生成包含有当前移动终端所有数据的局部唯 一标识 LUID的当前数据链表;

所述比较单元, 用于将当前数据链表与用于记录上次与服务器同步过 的数据的已同步数据链表进行对比;

所述同步单元, 用于根据对比结果, 进行数据同步。

8、 根据权利要求 7所述的装置, 其特征在于, 所述链表生成单元, 还 用于在同步单元完成数据同步后, 根据当前数据同步的情况, 更新所述已 同步数据链表;其中,所述已同步数据链表包含数据的 LUID及根据所述数 据的内容生成的校验值。

9、 根据权利要求 7所述的装置, 其特征在于, 所述比较单元, 具体用 于将已同步数据链表中的 LUID与当前数据链表中的 LUID进行对比后,将 存在于当前数据链表且不存在于已同步数据链表中的 LUID对应的数据加 入到添加链表。

10、 根据权利要求 7所述的装置, 其特征在于, 所述比较单元, 具体 用于将已同步数据链表中的 LUID与当前数据链表中的 LUID进行对比后, 将存在于已同步数据链表且不存在于当前数据链表中的 LUID对应的数据 加入到删除链表。

11、 根据权利要求 7所述的装置, 其特征在于, 所述比较单元, 具体 用于将已同步数据链表中的 LUID与当前数据链表中的 LUID进行对比后, 对同时存在于已同步数据链表和当前数据链表的 LUID对应的当前数据内 容计算校验值,并比较所述校验值与已同步数据链表中所述 LUID对应的校 验值, 若不一致, 则将所述 LUID对应的数据加入到更新链表。

12、 根据权利要求 7至 11任一项所述的装置, 其特征在于, 所述同步 单元, 具体用于根据对比得到的添加链表、 删除链表、 更新链表中的一种 或多种, 进行数据的同步。