数据同步方法及装置的制作方法

文档序号:6433805阅读:140来源:国知局
专利名称:数据同步方法及装置的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种数据同步方法及装置。
背景技术
随着系统软件的不断完善,如果原有的数据库系统因效率、设计等先天不足的原因,不再满足系统要求时,就需要考虑引入一个新的数据库系统,而这个新数据库系统往往在存储方式上、结构上同原有数据库系统有很大区别,是一个全新的数据库系统,这就注定了不可以直接同原有数据库系统交换数据。因此,为了保证软件的前向兼容性,新软件需要同时兼容新、旧两个数据库系统,为了保证用户配置的数据不丢失,系统需要考虑这两种不同数据库系统(或称为两种不同的数据源)间的相互数据同步问题。对于不同数据库系统之间数据同步的问题,在现有技术中并没有提供一种有效的解决方案。

发明内容
针对现有技术中并不存在一种有效的数据同步方法来实现不同数据库系统间数据同步的问题,本发明提供了一种数据同步方法及装置,以至少解决上述问题。根据本发明的一个方面,提供了一种数据同步方法,包括读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。优选地,将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。优选地,依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象中的数据和第一个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;按照配置的逻辑顺序重复执行上述解析、同步、封装的步骤,直到所述第二数据源中的所需要同步的数据结束。优选地,将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象中的数据与每个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。优选地,所述数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。根据本发明的另一方面,提供了一种数据同步装置,包括,读取模块,用于读取第一数据源和第二数据源中的需要同步的数据;解析模块,用于将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;同步模块,用于根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;封装模块,用于将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。优选地,所述读取模块,还用于将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。优选地,所述读取模块,用于依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;所述解析模块,用于将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;所述同步模块,用于根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象和第一个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;所述装置还包括循环模块,用于依次调用所述解析模块、同步模块和封装模块,直到所述第二数据源中的所需要同步的数据结束。优选地,所述解析模块,用于将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;所述同步模块,用于查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象与每个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。优选地,所述同步模块的所述数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。通过本发明,采用读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中,解决了现有技术中并不存在一种有效的数据同步方法来实现不同数据库系统间数据同步的问题,进而达到了可以根据定制的方式来选择不同数据库系统间数据的同步效果。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的数据同步方法的流程图;图2是根据本发明实施例的数据同步装置的结构框图;图3是根据本发明优选实施例的包括业务组件的数据同步装置的结构示意图;图4是根据本发明优选实施例的数据同步处理方法的流程图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。在本实施例中提供了一种不同数据源批量相互同步数据的方法,并且该数据同步方式可以定制。图1是根据本发明实施例的数据同步方法的流程图,如图1所示,该方法包括如下步骤步骤S102,读取第一数据源和第二数据源中的需要同步的数据;步骤S104,将读取到的来自该第一数据源的数据解析成一个或多个第一对象,并且将来自该第二数据源的数据解析成一个或多个第二对象,其中,第一对象和第二对象具有相同的数据格式;步骤S106,根据数据同步方式,将第一对象和第二对象中的数据进行同步,其中,该数据同步方式为以第一对象中的数据为准进行同步,或者,以第二对象中的数据为准进行同步,数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在程序代码中定义;步骤S108,将第一对象和第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。通过上述步骤,将读取到的数据源中的数据解析为对应的对象,使用对象中的数据来进行同步,提供了一种与现有技术不同的数据同步方案,上述步骤可以运行在服务器上,该服务器可以是一个或者一组服务器的结合,也可以是一个或多个位于服务器上的功能模块,在具体实施时,可以根据实际的软硬件情况来选择新增加服务器或者公用已有的服务器上的功能,在以下实施例中,将服务器成为是业务组件。通过上述步骤使用了转换成对象的方式,这样的处理方式在一定程度上能够提高同步的效果。并且,还可以选择用户设置的同步方式来进行同步,实现方式灵活。作为一个较优的实施方式,可以将第一数据源和第二数据源的需要同步的数据读取到内存中,该第一对象和第二对象为内存中的对象。通过这样的处理,在处理同步的过程中,可以不需要执行存储到外部的存储器以及从外部的存储器中读取需要同步的数据,节省了执行的步骤,进行增加了同步处理的速度。根据同步数据所采取的方式不同,执行不同的步骤,下面以两种同步方式为例进行说明方式(一),对数据源中的数据采用解析、同步步骤同时处理的方式,具体实施如下依据配置的逻辑顺序读取第一数据源的数据和第二数据源的数据;将第一数据源的数据解析成一个或多个第一对象,将来自第二数据源的数据依据同样的配置的逻辑顺序解析第一个第二对象;根据数据同步方式,将第一数据源的数据对应的第一个第一对象中的数据和第一个第二对象中的数据进行同步;同时将第一数据源的数据对应的第二个第一对象中的数据和第二个第二对象的数据进行同步,换句话说,只要其逻辑顺序相同就对该对应的数据进行同步,将同步后的数据封装成与数据源对应的数据格式,并将封装完成的数据写入到对应的数据源,封装的格式与数据源的格式有关;按照配置的逻辑顺序重复执行上述解析、同步、封装的步骤,直到第二数据源中的所需要同步的数据结束。这样的处理方式,有利于节省同步处理的内存资源,使每次处理都具有足够的资源,并不会出现抢占资源的问题。方式(二),对数据源中的需要同步的数据都先进行解析,然后统一进行同步,其实施方式如下将读取到的来自第一数据源的数据解析成多个第一对象,并且将来自第二数据源的数据解析成多个第二对象;查找关键值相同的第一对象和第二对象;根据数据同步方式,将所述关键值相同的第一对象中的数据与每个第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个数据写入到对应的数据源。对于系统稳定以及需要处理同步的数据量较大时,可以通过这样的处理方式,这样的处理方式比较机械,简单,循环的步骤较少。在本实施例中还提供了 一种数据同步装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能被构想的。图2是根据本发明实施例的数据同步装置的结构框图,如图2所示,该装置包括读取模块22、解析模块24、同步模块26和封装模块28。下面对该装置进行说明。读取模块22,用于读取第一数据源和第二数据源中的需要同步的数据;解析模块24,用于将读取到的来自第一数据源的数据解析成一个或多个第一对象,并且将来自第二数据源的数据解析成一个或多个第二对象,其中,第一对象和第二对象具有相同的数据格式;同步模块26,用于根据数据同步方式,将第一对象和第二对象中的数据进行同步,其中,数据同步方式为以第一对象中的数据为准进行同步,或者,以第二对象中的数据为准进行同步,同步模块的所述数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义;封装模块28,用于将第一对象和第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。优选地,该读取模块,还用于将第一数据源和第二数据源的需要同步的数据读取到内存中,第一对象和第二对象为内存中的对象。优选地,该读取模块,用于依据配置的逻辑顺序读取该第一数据源的数据和第二数据源的数据;该解析模块,用于将该第一数据源的数据解析成一个或多个第一对象,将来自该第二数据源的数据依据该配置的逻辑顺序解析第一个该第二对象;该同步模块,用于根据数据同步方式,将该第一数据源的数据对应的第一个第一对象和第一个该第二对象中的数据进行同步;该封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的该数据写入到对应的数据源;该装置还包括循环模块,用于依次调用所述解析模块、同步模块和封装模块,直到该第二数据源中的所需要同步的数据结束。优选地,该解析模块,用于将读取到的来自该第一数据源的数据解析成多个第一对象,并且将来自该第二数据源的数据解析成多个第二对象;该同步模块,用于查找关键值相同的该第一对象和该第二对象;根据数据同步方式,将该关键值相同的该第一对象与每个该第二对象中的数据进行同步;该封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个该数据写入到对应的数据源。在本实施例中提供了一种不同数据源批量相互同步数据的方法,通过该方法,用户可以灵活地定制不同的同步方案,从而确定以哪个数据源为准进行同步数据。该方法包括以下步骤步骤S1、用户定义数据恢复的方案用户可以灵活定制数据恢复的方案,亦即以哪个数据源的数据为准进行同步数据。同步的结果将是,该数据源的数据覆盖另外数据源的数据,从而保证所有各数据源的数据一致。具体实现方式比较灵活,可以在软件代码中定义,也可以在配置文件中定义。步骤S2、业务组件读取老数据源的数据到内存不同数据库系统由于采用的存储方式不同,不能直接互通数据。因此,需要引入一个能够同时适配两个数据库系统的组件,这就是业务组件,图3是根据本发明优选实施例的包括业务组件的数据同步装置的结构示意图,如图3所示,(图中以数据源A和数据源B为例)业务组件可以分别从数据源A和数据源B中读取/写入(Read/Write)数据。该业务组件提供的功能有解析数据库系统数据、封装数据库系统数据。下面分别对业务组件的功能进行说明。解析数据库系统数据业务组件通过数据库系统的读接口读取到数据流后,能够将数据流解析出来成特殊意义的业务对象,并保存在内存中。封装数据库系统数据能将内存中的业务对象封装成数据流,并通过数据库系统写接口写入数据源。业务组件是软件系统的核心功能组件。系统按照逻辑上的配置先后顺序,依次读取老数据源的记录,经业务组件模块解析成有意义的内存对象,并存放到列表(ListObj)中。步骤S3、业务组件读取新数据源的数据至内存,边解析边同步数据,系统按照逻辑上的配置先后顺序,依次读取新数据源的记录,每读取一条记录均做如下处理I)业务组件按照具体的业务特性将该记录解析成有意义的临时内存对象,记作TmpObj (若数据流为空,则TmpObj为空);2)遍历对象列表ListObj中的每一个对象Obj,找到key值同TmpObj相同的对象Obj (未找到,Obj为空);3)检查到TmpObj、Obj的数据是否完全相同,若不完全相同则根据事先定制好的同步方案需要同步若是以老数据源为准进行同步则将Obj的数据覆盖新数据源的数据(覆盖key相同的数据。若Obj为空,则删除新数据源上key相同的记录)。若是以新数据源为准进行同步JMfTmpObj的数据覆盖老数据源的数据(覆盖key相同的数据。若TmpObj为空,则删除老数据源上key相同的记录)。
本优选实施例还提供了一种数据同步处理方法,需要说明的是,在该优选实施方式中,假设,设备在Vl版本中使用的是数据库系统A (下文称数据源A),在v2版本中采用了数据库系统B (下文称数据源B),为了保证设备软件能从Vl版本到v2版本的平衡升级,在v2版本中需要同时支持数据库系统A和数据库系统B。为了保持系统软件的前后兼容,加载了数据源B的系统,版本规划如下Vl (数据源A) —) v2 (数据源A、数据源B)——〉v3 (数据源B)——〉· ·若用户首次使用版本v2,为了平滑升级不丢失数据,用户需要定义数据同步方式为以数据源A为准;若用户非首次使用版本v2,则直接以新系统的数据库系统B的数据为准,则用户将可以选择数据同步方式以数据源B为准即可。此后,在v3、v4...版本中均是以数据源B为准即可,即使废除数据库系统A也能保证数据始终一致。图4是根据本发明优选实施例的数据同步处理方法的流程图,如图4所示,该流程包括,步骤S402,用户定制数据恢复的方案假设有两个数据源A,数据源B,用户可以预先定制系统以哪种数据源为准进行数据同步。确定以数据恢复的依据以数据源A,还是以数据源B的数据为准进行恢复。恢复的结果将是数据源A、数据源B、内存对象列m_list0bj的数据一致。具体的实现方式比较多,这里以配置文件中定义的方式实现(本例中,为以数据源A为依据进行同步)
权利要求
1.一种数据同步方法,其特征在于包括,读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
3.根据权利要求1或2所述的方法,其特征在于,依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象中的数据和第一个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;按照配置的逻辑顺序重复执行上述解析、同步、封装的步骤,直到所述第二数据源中的所需要同步的数据结束。
4.根据权利要求1或2所述的方法,其特征在于,将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象中的数据与每个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
5.根据权利要求4所述的方法,其特征在于,所述数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
6.一种数据同步装置,其特征在于包括,读取模块,用于读取第一数据源和第二数据源中的需要同步的数据;解析模块,用于将读取到的来自所述第一数据源的数据解析成一个或多个第一对象, 并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;同步模块,用于根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;封装模块,用于将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。
7.根据权利要求6所述的装置,其特征在于,所述读取模块,用于将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
8.根据权利要求6或7所述的装置,其特征在于,所述读取模块,用于依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;所述解析模块,用于将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;所述同步模块,用于根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象和第一个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;所述装置还包括循环模块,用于依次调用所述解析模块、同步模块和封装模块,直到所述第二数据源中的所需要同步的数据结束。
9.根据权利要求6或7所述的装置,其特征在于,所述解析模块,用于将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;所述同步模块,用于查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象与每个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
10.根据权利要求9所述的装置,其特征在于,所述同步模块的所述数据同步方式通过以下方式之一来设置通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
全文摘要
本发明公开了一种数据同步方法及装置,该方法包括,采用读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自第一数据源的数据解析成一个或多个第一对象,并且将来自第二数据源的数据解析成一个或多个第二对象,其中,第一对象和第二对象具有相同的数据格式;根据数据同步方式,将第一对象和第二对象中的数据进行同步,其中,数据同步方式为以第一对象中的数据为准进行同步,或者,以第二对象中的数据为准进行同步;将第一对象和第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中,通过本发明,达到了可以根据定制的方式来选择不同数据库系统间数据的同步效果。
文档编号G06F17/30GK103020071SQ20111028393
公开日2013年4月3日 申请日期2011年9月22日 优先权日2011年9月22日
发明者李德云 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1