数据更新信息获取方法、装置及数据同步方法、装置与流程

文档序号:13596142阅读:403来源:国知局
数据更新信息获取方法、装置及数据同步方法、装置与流程

本发明涉及通信领域,具体涉及一种数据更新信息获取方法、装置及一种数据同步方法、装置。



背景技术:

各种终端上的个人信息、日程信息和以及邮件信息等的管理日益重要,已经成为各种终端信息管理的一个重要组成部分。常见的做法是将终端和网络服务器的数据进行安全有效的同步,保证用户可方便的备份数据恢复到终端。

目前数据同步业务有双向快同步和双向慢同步。其中,双向慢同步将移动终端和网络服务器上的所有数据记录项(例如,名片夹和日程表)进行同步;双向快同步将移动终端和网络服务器上自从上一次同步之后发生的所有变化进行同步。同步的最终结果是使手机终端和服务器上的数据保持一致。

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

图1是现有技术中,在诸如手机等终端中Changelog的数据结构图。如图所示,该Changelog结构中包含两个数据项:操作对象和针对该对象所进行的操作。在这里,操作对象引用的是数据库中与各数据唯一对应的一ID号,并将ID称为局部唯一标识(Locally Unique Identifier,简称LUID),该LUID在终端中生成且是唯一的;在终端,即使新增的记录项的数据内容与某一项已经删除的记录完全相同,新增记录数据的LUID也与原来被删除的LUID不同。

图2是图1所示的Changelog的具体实例图,如图2所示,分别进行了以下操作:对LUID为1的数据进行了新增操作,对LUID为5的数据进行了删除操作,对LUID为6和7的数据进行了更新操作。由上可以看出,传统Changelog记录方法是将所有数据修改操作写入Changelog文件,达到记录修改日志信息的目的,该方案存在以下问题:

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

(2)当终端可以使用多个同步账号时,每个同步账号都需要维护一个Changelog文件,且当数据发生修改时,需要将数据的修改同时写入多个Changelog文件,账号越多,性能越差,从而导致同步性能下降。



技术实现要素:

本发明要解决的主要技术问题是,提供一种数据更新信息获取方法、装置及一种数据同步方法、装置,可提高系统的数据处理性能,以及同步性能,进而提高用户体验的满意度。

为解决上述技术问题,本发明提供一种数据更新信息获取方法,包括:

为数据增设更新标识字段;

对数据更新,同时更新该数据的更新标识,使更新后的更新标识区别于该数据更新前的更新标识;

根据当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识得到数据更新信息。

在本发明的一种实施例中,更新所述数据的更新标识包括:获取上一次同步结束时所有数据的更新标识的计数值的最大值,将所述数据的更新标识的计数值更新为比所述最大值大的值。

在本发明的一种实施例中,更新所述数据的更新标识包括:获取数据库中所有数据的更新标识的计数值的最大值,将所述数据的更新标识的计数值更新为比所述最大值大的值。

在本发明的一种实施例中,对所述数据更新的具体操作为删除时,同时删除所述数据的更新标识字段。

在本发明的一种实施例中,根据当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识得到数据更新信息具体包括:

根据上一次同步结束时所有数据的更新标识和当前所有数据的更新标识,得到总的数据更新信息;

将上一次同步结束时所有数据的局部唯一标识与当前所有数据的局部唯一标识进行比较,得到更新具体操作为增加和删除的数据更新信息;

将得到的具体操作为增加的数据更新信息与所述总的数据更新信息进行比较,得到更新具体操作为修改的数据更新信息。

在本发明的一种实施例中,根据上一次同步结束时所有数据的更新标识和当前所有数据的更新标识得到总的数据更新信息包括:

获取上一次同步结束时所有数据的更新标识的计数值的最大值,将当前所有数据的更新标识的计数值与所述最大值进行比较,大于所述最大值的更新标识的计数值所对应的数据为经更新后的数据。

本发明还提供了一种数据同步方法,包括:

根据如上所述的方法获取数据更新信息;

根据所述数据更新信息对相应的数据进行同步。

本发明还提供了一种数据更新信息获取装置,包括依次连接的设置模块、更新模块和比较模块,其中:

所述设置模块用于为数据增设更新标识字段;

所述更新模块用于对数据更新,并用于同时更新该数据的更新标识,使更新后的更新标识区别于更新前的更新标识;

所述比较模块用于将当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识进行比较得到数据更新信息。在本发明的一种实施例中,所述更新模块更新所述数据的更新标识包括:所述更新模块获取数据库中所有数据的更新标识的计数值的最大值,将所述数据的更新标识的计数值更新为比所述最大值大的值。

在本发明的一种实施例中,所述比较模块将当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识进行比较得到数据更新信息具体包括:

根据上一次同步结束时所有数据的更新标识和当前所有数据的更新标识,得到总的数据更新信息;

将上一次同步结束时所有数据的局部唯一标识与当前所有数据的局部唯一标识进行比较,得到更新具体操作为增加和删除的数据更新信息;

将得到的具体操作为增加的数据更新信息与所述总的数据更新信息进行比较,得到更新具体操作为修改的数据更新信息。

本发明还提供了一种数据同步装置,包括:

设置模块,用于为数据增设更新标识字段;

更新模块,与所述设置模块连接,用于对数据更新,并用于同时更新该数据的更新标识,使更新后的更新标识区别于更新前的更新标识;

比较模块,与所述更新模块连接,用于将当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识进行比较得到数据更新信息;

同步模块,与所述比较模块连接,用于根据所述数据更新信息对相应的数据进行同步。

本发明的有益效果是本发明提供的数据更新信息获取方法,为数据增设更新标识字段;对数据库中的数据更新时,同时更新该数据的更新标识,使更新后的更新标识区别于更新前的更新标识;因此通过与上一次同步结束时数据更新前的更新标识进行对比,即可得到哪些数据被更新过,然后根据当前所有数据的局部唯一标识与上一次同步结束时所有数据的局部唯一标识进行比较,即可进一步得到详细的数据更新信息。因此在本发明中,当对数据进行更新时,并不需要对Changelog(修改日志)文件进行维护,而只是对应的更新数据的更新标识即可,当对数据库中的数据进行批量处理时,不需要每处理一个数据就得维护Changelog文件,而是直接对多个数据进行相应的处理即可,可提高系统的数据处理性能。

另外,本发明中在数据变化时只需要修改数据的更新标识,不需要写入任何changelog。当某一账号同步时,根据该账号记录的上一次同步记录就可以找出所有更新数据,该账号的同步导致的数据变化不会影响其他账号changelog文件,所以本发明中各同步账号的Changelog文件是相互独立的,且同步一个账号时,不需要将数据更新信息写入其他同步账号的Changelog文件,可提高系统的同步性能。

附图说明

图1为一种修改日志图的数据结构图;

图2为一种修改日志图的数据结构的具体示意图;

图3为本发明一种实施例的数据结构图;

图4为本发明一种实施例的上次同步结束时的数据信息链表示意图;

图5为本发明一种实施例的上次同步结束时的ListIDlast链表意图;

图6为本发明一种实施例的当前数据库中的数据的数据信息链表示意图;

图7为本发明一种实施例的当前数据库中的数据的ListIDcur链表示意图;

图8为本发明一种实施例的得到ListIDchange链表的示意图;

图9为本发明一种实施例获得删除操作和增加操作的数据的数据更新信息示意图;

图10为本发明一种实施例的当前数据库中的数据的ListIDadd链表示意图;

图11为本发明一种实施例的获得修改操作数据的数据更新信息示意图;

图12为本发明一种实施例的数据更新信息获取装置结构示意图;

图13为本发明一种实施例的数据同步装置结构示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。

本例中的数据更新信息获取方法包括以下步骤:

为数据库中的数据增设更新标识字段,请参见图3,增设更新标识字段后的数据至少包括局部唯一标识ID和更新标识;

对数据更新时,同时更新该数据的更新标识,使更新后的更新标识区别于该数据更新前的更新标识;

根据当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识得到数据更新信息。

值得注意的是,本例中更新数据时,对其更新标识进行更新以区别于更新前的更新标识的方式可包括多种,首先,可使该数据的更新标识更新后,区别于该数据更新之前的更新标识,也可使该数据的更新标识更新后,区别于数据库中所有数据的更新标识,包括更新前和其他数据更新后的更新标识;另外,为了使更新后的更新标识区别于更新前的更新标识,对其进行更新的方式也可包括多种,例如:

更新方式一:获取上一次同步结束时所有数据的更新标识的计数值的最大值,将该数据的更新标识的计数值更新为比获取的最大值大的值,例如假设上次同步结束时数据库中所有数据的更新标识的计数值的最大值为N,则可将该数据的更新标识的计数值更新为N+1,且可将当前数据库中被更新过的所有数据的更新标识的计数值全都更新为N+n(其中n的值可固定为一个非零的整数值,也可为大于零的任意一个整数值);

更新方式二,获取当前数据库中所有数据的更新标识的计数值的最大值,将该数据的更新标识的计数值更新为比获取的最大值大的值,例如当前数据库中所有数据的更新标识的计数值的最大值为M,则可将该数据的更新标识的计数值更新为M+1,则对下一个数据进行更新时,其更新标识的计数值就为M′+1(M′=M+1),当然,当前更新的数据的更新标识的计数值也可为比上一次更新时的最大值M+1大的任意一个整数值;

更新方式三,可通记录每次更新的时间值来区分哪些数据被更新,此时本例中的更新标识则包括计时值,用于分别记录数据更新的时间值,然后将其与上一次同步时最后更新的数据的更新标识则包括计时值进行比较,即可得知哪些数据被更新过。

值得注意的是,由于本例中对数据更新的具体操作包括增加、修改、和删除,而删除操作时将数据删除,因此相应的也会将该数据的更新标识字段删除,因此本例中对于删除操作所删除的数据并不记录其更新标识,因此根据当前所有数据的更新标识和上一次同步结束时所有数据的更新标识进行比较得到的数据更新信息中,并不包括删除数据的更新信息,而只包括增加的数据和修改的数据的更新信息。

本例中更新数据时,对其更新标识进行更新以区别于更新前的更新标识的方式优选为上述方式一或上述方式二,根据当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识得到数据更新信息则具体包括:

根据上一次同步结束时所有数据的更新标识和当前所有数据的更新标识,得到总的数据更新信息,且有上述分析可知,得到的总的数据更新信息并不包括进行删除操作的数据的更新信息,而得到总数据更新信息具体为:获取上一次同步结束时所有数据的更新标识的计数值的最大值,将当前所有数据的更新标识的计数值与获取的最大值进行比较,大于所述最大值的更新标识的计数值所对应的数据为经更新后的数据;

将上一次同步结束时所有数据的局部唯一标识与当前所有数据的局部唯一标识进行比较,得到更新具体操作为增加和删除的数据更新信息,

将得到的具体操作为增加的数据更新信息与所述总的数据更新信息进行比较,得到更新具体操作为修改的数据更新信息。

通过上述方法获取到数据更新信息后,即可根据获取到的数据更新信息对相应的数据进行同步。

为了更好的理解本发明,下面比表格的形式列出具体的实现方式对本发明做进一步说明。

此处更新数据时,对其更新标识进行更新以区别于更新前的更新标识具体采用的方式为:将其更新为当前数据库中所有数据的更新标识的计数值的最大值加1,即将其更新为M+1。

定义数据信息链表包括数据库中各数据的局部唯一标识和更新标识的计数值,请参见图4,该图所示为上次同步结束时数据库中各数据的局部唯一标识和更新标识的计数值。

定义各数据的局部唯一标识组成的链表为LUID链表,其中,进一步定义同步结束时的LUID链表为ListIDlast链表,请参见图5,该图为上次同步结束时数据库中所有数据的ListIDlast链表;同时,定义当前数据库中所有数据的局部唯一标识组成的LUID链表为ListIDcur链表;定义上述总的数据更新信息中所对应的所有数据的局部唯一标识组成的LUID链表为ListIDchange链表。

请参见图6,该图所述为数据库中的当前数据的数据信息链表,从该链表中可以看出当前数据库中包括LUID分别为1、2、4、6、7、8、9的数据,且可分别得到每个数据的更新标识的计数值。

从图6所示的数据信息链表中得到图7所示的ListIDcur链表,然后从图4所示的数据信息链表中得到上次同步结束时,数据库中各数据更新标识的计数值最大的为6,然后将该最大值6与图6所示的数据库中当前各数据的计数值进行比较,请参见图8,得到图8右边所示的ListIDchange链表。

将得到的ListIDlast链表和ListIDcur链表中的LUID分别进行比较,如果在ListIDlast链表存在的LUID在ListIDcur链表中不存在,则表示这些LUID对应的数据已经被删除,对应的更新操作为删除;若在ListIDcur链表存在的LUID在ListIDlast链表中不存在,则表示这些LUID对应的数据在原数据库中是没有的,这些数据是新增加的数据,对应的更新操作为增加。请参见图9,由该图可以得知,LUID为3和5对应的数据已经被删除,而LUID为7、8、9对应的数据则为新增的数据,将新增数据的LUID组成链表ListIDadd,请参见图10,然后将图8所示的ListIDchange链表与ListIDadd链表中的LUID进行比较,即可筛选出更新的所有数据中,哪些数据对应的更新操作为修改,请参见11,由图11的对比可以看出,对LUID为1、6对应的数据所做的更新的具体操作是修改。

经上述过程得到具体的数据更新信息后,即可对相应的数据做删除、增加等同步操作,完成数据的同步。

且由上述过程可知,本例中对数据进行更新时,并不需要对Changelog(修改日志)文件进行维护,而只是对应的更新数据的更新标识即可,因此当对数据库中的数据进行批量处理时,不需要每处理一个数据就得维护Changelog文件,而是直接对多个数据进行相应的处理即可,可提高系统的数据处理性能。

另外,本发明中各同步账号的Changelog文件是相互独立的,因此同步一个账号时,不需要将数据更新信息写入其他同步账号的Changelog文件,可提高系统的同步性能。

请参见图12,本例中还提供了一种数据更新信息获取装置,包括依次连接的设置模块、更新模块和比较模块,其中:

设置模块,用于按上述方法为数据增设更新标识字段;

更新模块,用于对数据更新,并用于按上述方法同时更新该数据的更新标识,使更新后的更新标识区别于更新前的更新标识;

比较模块,用于按上述方法将当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识进行比较得到数据更新信息。

请参见图13,本例中还提供了一种数据同步装置包括:

设置模块,用于按上述方法为数据增设更新标识字段;

更新模块,用于对数据更新,并用于按上述方法同时更新该数据的更新标识,使更新后的更新标识区别于更新前的更新标识;

比较模块,用于按上述方法将当前所有数据的局部唯一标识和更新标识与上一次同步结束时所有数据的局部唯一标识和更新标识进行比较得到数据更新信息;

同步模块,与所述比较模块连接,用于根据所述数据更新信息对相应的数据进行同步。

以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

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