CN103020071B - 数据同步方法及装置 - Google Patents
数据同步方法及装置 Download PDFInfo
- Publication number
- CN103020071B CN103020071B CN201110283931.3A CN201110283931A CN103020071B CN 103020071 B CN103020071 B CN 103020071B CN 201110283931 A CN201110283931 A CN 201110283931A CN 103020071 B CN103020071 B CN 103020071B
- Authority
- CN
- China
- Prior art keywords
- data
- data source
- source
- synchronization
- module
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000001360 synchronised effect Effects 0.000 claims abstract description 57
- 238000005538 encapsulation Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据同步方法及装置,该方法包括,采用读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自第一数据源的数据解析成一个或多个第一对象,并且将来自第二数据源的数据解析成一个或多个第二对象,其中,第一对象和第二对象具有相同的数据格式;根据数据同步方式,将第一对象和第二对象中的数据进行同步,其中,数据同步方式为以第一对象中的数据为准进行同步,或者,以第二对象中的数据为准进行同步;将第一对象和第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中,通过本发明,达到了可以根据定制的方式来选择不同数据库系统间数据的同步效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据同步方法及装置。
背景技术
随着系统软件的不断完善,如果原有的数据库系统因效率、设计等先天不足的原因,不再满足系统要求时,就需要考虑引入一个新的数据库系统,而这个新数据库系统往往在存储方式上、结构上同原有数据库系统有很大区别,是一个全新的数据库系统,这就注定了不可以直接同原有数据库系统交换数据。因此,为了保证软件的前向兼容性,新软件需要同时兼容新、旧两个数据库系统,为了保证用户配置的数据不丢失,系统需要考虑这两种不同数据库系统(或称为两种不同的数据源)间的相互数据同步问题。
对于不同数据库系统之间数据同步的问题,在现有技术中并没有提供一种有效的解决方案。
发明内容
针对现有技术中并不存在一种有效的数据同步方法来实现不同数据库系统间数据同步的问题,本发明提供了一种数据同步方法及装置,以至少解决上述问题。
根据本发明的一个方面,提供了一种数据同步方法,包括:读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。
优选地,将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
优选地,依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象中的数据和第一个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;按照配置的逻辑顺序重复执行上述解析、同步、封装的步骤,直到所述第二数据源中的所需要同步的数据结束。
优选地,将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象中的数据与每个所述第二对象中的数据进行同步;将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
优选地,所述数据同步方式通过以下方式之一来设置:通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
根据本发明的另一方面,提供了一种数据同步装置,包括,读取模块,用于读取第一数据源和第二数据源中的需要同步的数据;解析模块,用于将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;同步模块,用于根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;封装模块,用于将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中。
优选地,所述读取模块,还用于将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
优选地,所述读取模块,用于依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;所述解析模块,用于将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;所述同步模块,用于根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象和第一个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;所述装置还包括:循环模块,用于依次调用所述解析模块、同步模块和封装模块,直到所述第二数据源中的所需要同步的数据结束。
优选地,所述解析模块,用于将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;所述同步模块,用于查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象与每个所述第二对象中的数据进行同步;所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
优选地,所述同步模块的所述数据同步方式通过以下方式之一来设置:通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
通过本发明,采用读取第一数据源和第二数据源中的需要同步的数据;将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中,解决了现有技术中并不存在一种有效的数据同步方法来实现不同数据库系统间数据同步的问题,进而达到了可以根据定制的方式来选择不同数据库系统间数据的同步效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图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、业务组件读取新数据源的数据至内存,边解析边同步数据,系统按照逻辑上的配置先后顺序,依次读取新数据源的记录,每读取一条记录均做如下处理:
1)业务组件按照具体的业务特性将该记录解析成有意义的临时内存对象,记作TmpObj(若数据流为空,则TmpObj为空);
2)遍历对象列表ListObj中的每一个对象Obj,找到key值同TmpObj相同的对象Obj(未找到,Obj为空);
3)检查到TmpObj、Obj的数据是否完全相同,若不完全相同则根据事先定制好的同步方案需要同步:
若是以老数据源为准进行同步:则将Obj的数据覆盖新数据源的数据(覆盖key相同的数据。若Obj为空,则删除新数据源上key相同的记录)。
若是以新数据源为准进行同步:则将TmpObj的数据覆盖老数据源的数据(覆盖key相同的数据。若TmpObj为空,则删除老数据源上key相同的记录)。
本优选实施例还提供了一种数据同步处理方法,需要说明的是,在该优选实施方式中,假设,设备在v1版本中使用的是数据库系统A(下文称数据源A),在v2版本中采用了数据库系统B(下文称数据源B),为了保证设备软件能从v1版本到v2版本的平衡升级,在v2版本中需要同时支持数据库系统A和数据库系统B。
为了保持系统软件的前后兼容,加载了数据源B的系统,版本规划如下:
v1(数据源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_listObj的数据一致。具体的实现方式比较多,这里以配置文件中定义的方式实现(本例中,为以数据源A为依据进行同步):
步骤S404,业务组件读取数据源A的数据至内存,系统按照逻辑上的配置先后顺序,读取数据源A的一条记录;
步骤S406,业务组件按照具体的业务特性将该记录解析成有意义的内存对象,并存放到列表(m_ListObj)中;
步骤S408,,判断是否是数据源A的最后一条记录?未读完数据源A记录,则偏移数据源A的下一条记录,跳转到步骤S404,如果是数据源A的最后一条数据,则执行步骤S410;
步骤S410,业务组件读取数据源B的数据至内存,边解析边同步数据,同样地,系统按照逻辑上的配置先后顺序,读取数据源B的记录;
步骤S412,业务组件根据具体的业务特性将该记录解析成有意义的临时内存对象,记作ObjB(若数据流为空,则ObjB为空);
步骤S414,遍历对象列表m_ListObj中的每一个对象ObjA,找到key值同ObjB相同的对象ObjA(未找到,ObjA为空);
步骤S416,检查到ObjB、ObjA的数据是否完全相同,若不完全相同则需要同步,判断是否以数据源A的数据为准进行同步:
步骤S418,若是以数据源A为准进行同步:则将ObjA的数据覆盖数据源B的数据记录(覆盖key相同的数据。若ObjA为空,则删除数据源B上key相同的记录);
步骤S420,若是以数据源B为准进行同步:则将ObjB的数据覆盖数据源A的数据记录(覆盖key相同的数据。若ObjB为空,则删除数据源A上key相同的记录);
步骤S422,判断是否已经是数据源B的最后一条记录,如果不是,即未读完数据源B记录,则偏移数据源B的下一条记录,跳转到步骤S410。
通过上述设计步骤,实现了两种数据源间的数据同步。用户定制灵活,很容易地实现以哪个数据源为准进行同步数据。另外,该实现方案可以进一步扩展,比如在设备启动后,通过命令触发两个数据源进行数据同步,且效果是一样的。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据同步方法,其特征在于包括,
读取第一数据源和第二数据源中的需要同步的数据;
将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;
根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;
将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中;
其中,依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;
将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;
根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象中的数据和第一个所述第二对象中的数据进行同步;
将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;
按照配置的逻辑顺序重复执行上述解析、同步、封装的步骤,直到所述第二数据源中的所需要同步的数据结束。
2.根据权利要求1所述的方法,其特征在于,将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
3.根据权利要求1或2所述的方法,其特征在于,
将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;
查找关键值相同的所述第一对象和所述第二对象;
根据数据同步方式,将所述关键值相同的所述第一对象中的数据与每个所述第二对象中的数据进行同步;
将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
4.根据权利要求3所述的方法,其特征在于,所述数据同步方式通过以下方式之一来设置:
通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
5.一种数据同步装置,其特征在于包括,
读取模块,用于读取第一数据源和第二数据源中的需要同步的数据;
解析模块,用于将读取到的来自所述第一数据源的数据解析成一个或多个第一对象,并且将来自所述第二数据源的数据解析成一个或多个第二对象,其中,所述第一对象和所述第二对象具有相同的数据格式;
同步模块,用于根据数据同步方式,将所述第一对象和所述第二对象中的数据进行同步,其中,所述数据同步方式为以所述第一对象中的数据为准进行同步,或者,以所述第二对象中的数据为准进行同步;
封装模块,用于将所述第一对象和所述第二对象中完成同步的对象中的数据封装成该对象所对应的数据源中的数据格式,并将封装完成的数据写入到对应的数据源中;
其中,所述读取模块,用于依据配置的逻辑顺序读取所述第一数据源的数据和第二数据源的数据;
所述解析模块,用于将所述第一数据源的数据解析成一个或多个第一对象,将来自所述第二数据源的数据依据所述配置的逻辑顺序解析第一个所述第二对象;
所述同步模块,用于根据数据同步方式,将所述第一数据源的数据对应的第一个第一对象和第一个所述第二对象中的数据进行同步;
所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的所述数据写入到对应的数据源;
所述装置还包括:循环模块,用于依次调用所述解析模块、同步模块和封装模块,直到所述第二数据源中的所需要同步的数据结束。
6.根据权利要求5所述的装置,其特征在于,所述读取模块,用于将所述第一数据源和所述第二数据源的需要同步的数据读取到内存中,所述第一对象和所述第二对象为内存中的对象。
7.根据权利要求5或6所述的装置,其特征在于,
所述解析模块,用于将读取到的来自所述第一数据源的数据解析成多个第一对象,并且将来自所述第二数据源的数据解析成多个第二对象;
所述同步模块,用于查找关键值相同的所述第一对象和所述第二对象;根据数据同步方式,将所述关键值相同的所述第一对象与每个所述第二对象中的数据进行同步;
所述封装模块,用于将同步后的数据封装成与数据源对应的数据格式,并将封装完成的每个所述数据写入到对应的数据源。
8.根据权利要求7所述的装置,其特征在于,所述同步模块的所述数据同步方式通过以下方式之一来设置:
通过配置文件的方式、通过接收用户命令中携带的数据同步方式、通过在代码中定义。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110283931.3A CN103020071B (zh) | 2011-09-22 | 2011-09-22 | 数据同步方法及装置 |
PCT/CN2012/074615 WO2012155771A1 (zh) | 2011-09-22 | 2012-04-24 | 数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110283931.3A CN103020071B (zh) | 2011-09-22 | 2011-09-22 | 数据同步方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103020071A CN103020071A (zh) | 2013-04-03 |
CN103020071B true CN103020071B (zh) | 2017-11-28 |
Family
ID=47176300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110283931.3A Active CN103020071B (zh) | 2011-09-22 | 2011-09-22 | 数据同步方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103020071B (zh) |
WO (1) | WO2012155771A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455557B (zh) * | 2013-08-08 | 2016-06-29 | 上海新炬网络技术有限公司 | 一种基于日志的结构化数据同步方法 |
CN105574109A (zh) * | 2015-12-10 | 2016-05-11 | 青岛海信传媒网络技术有限公司 | 一种数据库同步方法、同步设备及系统 |
CN108573006B (zh) * | 2017-06-06 | 2021-03-26 | 北京金山云网络技术有限公司 | 跨机房数据同步系统、方法及装置、电子设备 |
CN107317886A (zh) * | 2017-08-21 | 2017-11-03 | 北京奇艺世纪科技有限公司 | 一种基于大数据的数据同步方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407465A (zh) * | 2001-08-13 | 2003-04-02 | 深圳市丛文软件技术有限公司 | 异构、异种数据库间适用的数据交换方法及装置 |
CN1426190A (zh) * | 2001-12-13 | 2003-06-25 | 互慧科技股份有限公司 | 数据同步系统及方法 |
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
CN101436207A (zh) * | 2008-12-16 | 2009-05-20 | 浪潮通信信息系统有限公司 | 一种基于日志快照的数据恢复和同步方法 |
CN101453317A (zh) * | 2007-12-05 | 2009-06-10 | 炎黄东方(北京)健康科技有限公司 | 实现数据同步的双向处理方法及装置 |
CN101807210A (zh) * | 2010-04-26 | 2010-08-18 | 中兴通讯股份有限公司 | 一种数据库间数据同步的方法、系统及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805423B1 (en) * | 1999-11-15 | 2010-09-28 | Quest Software, Inc. | System and method for quiescing select data modification operations against an object of a database during one or more structural operations |
CN100481837C (zh) * | 2005-09-30 | 2009-04-22 | 北京邮电大学 | 在终端和服务器之间移动用户个人数据的同步处理方法 |
CN101494534A (zh) * | 2008-01-21 | 2009-07-29 | 华为技术有限公司 | 一种数据同步方法、装置及系统 |
US8121980B2 (en) * | 2009-02-13 | 2012-02-21 | Microsoft Corporation | Transactional record manager |
-
2011
- 2011-09-22 CN CN201110283931.3A patent/CN103020071B/zh active Active
-
2012
- 2012-04-24 WO PCT/CN2012/074615 patent/WO2012155771A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1407465A (zh) * | 2001-08-13 | 2003-04-02 | 深圳市丛文软件技术有限公司 | 异构、异种数据库间适用的数据交换方法及装置 |
CN1426190A (zh) * | 2001-12-13 | 2003-06-25 | 互慧科技股份有限公司 | 数据同步系统及方法 |
CN101453317A (zh) * | 2007-12-05 | 2009-06-10 | 炎黄东方(北京)健康科技有限公司 | 实现数据同步的双向处理方法及装置 |
CN101369283A (zh) * | 2008-09-25 | 2009-02-18 | 中兴通讯股份有限公司 | 一种内存数据库与物理数据库间的数据同步方法及系统 |
CN101436207A (zh) * | 2008-12-16 | 2009-05-20 | 浪潮通信信息系统有限公司 | 一种基于日志快照的数据恢复和同步方法 |
CN101807210A (zh) * | 2010-04-26 | 2010-08-18 | 中兴通讯股份有限公司 | 一种数据库间数据同步的方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2012155771A1 (zh) | 2012-11-22 |
CN103020071A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688500B (zh) | 一种分布式任务处理方法、装置、系统及设备 | |
CN103020071B (zh) | 数据同步方法及装置 | |
CN103164239A (zh) | 基于微网可视化平台的插件实现方法 | |
CN102012954A (zh) | 用于系统芯片集成设计的子系统集成方法及其子系统集成系统 | |
CN105516542B (zh) | 基于硬件编码器的多通道视频同步系统及其同步方法 | |
CN111400407B (zh) | 数据的同步方法及装置、存储介质及电子装置 | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN112364049B (zh) | 数据同步脚本生成方法、系统、终端及存储介质 | |
CN111651525A (zh) | 区块链数据存储方法和装置 | |
CN114281793A (zh) | 数据校验方法、装置和系统 | |
CN111382201A (zh) | 异构数据库同步方法、装置、计算机设备及存储介质 | |
CN109831746A (zh) | 一种基于蓝牙广播进行数据传输的方法、装置及蓝牙设备 | |
CN111694811B (zh) | 一种批量数据入库方法及装置 | |
CN115586935A (zh) | 一种数据处理方法、装置、电子设备及介质 | |
CN101046746B (zh) | 分布式软件开发环境中的代码管理 | |
CN101986282A (zh) | 拓扑适配方法及装置 | |
WO2016197953A1 (zh) | 一种部署多模基站的方法及装置 | |
CN106454767A (zh) | 一种业务数据同步方法、装置及系统 | |
CN108595160B (zh) | Js调用原生对象的方法、存储介质 | |
CN107483399B (zh) | 一种在远程过程调用中的信息封装方法及装置 | |
US7398486B2 (en) | Method and apparatus for performing logical transformations for global routing | |
CN111679820A (zh) | 一种Android模块化开发与快速模块集成的方法 | |
CN113760907A (zh) | 一种数据库中数据唯一性标识方法 | |
CN106778301A (zh) | 基于cocos2d‑x的可靠的跨平台数据存储方法及系统 | |
CN110648140A (zh) | 一种基于区块链的多链配合方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |