CN106156165A - 异构数据源之间的数据同步方法和装置 - Google Patents
异构数据源之间的数据同步方法和装置 Download PDFInfo
- Publication number
- CN106156165A CN106156165A CN201510179809.XA CN201510179809A CN106156165A CN 106156165 A CN106156165 A CN 106156165A CN 201510179809 A CN201510179809 A CN 201510179809A CN 106156165 A CN106156165 A CN 106156165A
- Authority
- CN
- China
- Prior art keywords
- unit
- plug
- reading
- task
- data
- 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.)
- Pending
Links
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
-
- 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
- G06F16/275—Synchronous replication
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种异构数据源之间的数据同步方法和装置。该方法包括:接收同步任务,并获取同步任务对应的操作类型;根据操作类型选择对应类型的读插件和写插件;通过选择的对应的读插件和写插件对同步任务进行切分并根据切分结果生成任务队列,其中,选择的读插件用于从源端读取数据并发送至写插件,选择的写插件用于将读插件读取的数据写入至目的端;以及根据任务队列调用对应数量的读插件和写插件执行同步任务。本申请实施例的方法,实现了读插件和写插件隔离,并实现了读插件和写插件与系统框架的隔离,同时达到了提升同步任务并发的目的。
Description
技术领域
本申请涉及异构数据源技术领域,尤其涉及一种异构数据源之间的数据同步方法和装置。
背景技术
结构化数据是指具有行列结构的数据,例如,mysql、oracle等RDBMS,或者Hive、odps、oceanbase等NoSQL,或者csv等格式化数据。半结构化数据是指能够抽象为行列结构的数据,例如,具有指定列含义的日志数据、txt文件数据、Hadoop文件系统数据等。目前,为了实现异构数据源间结构化、半结构化数据的同步,通常可以采用开源项目Sqoop。具体而言,如图1所示,Sqoop是一个将Hadoop和RDBMS间数据转移的工具,它借用Map-Reduce框架,可以从RDBMS中导入到Hadoop的HDFS中,也可以将HDFS的数据导出到RDBMS中。Sqoop同样支持插件式添加不同数据库,即增加一种数据库类型,只要开发一个相应插件即可。
然而目前存在的问题是,采用开源项目Sqoop具有以下的缺点:
1、现有很多系统支持的存储间数据同步读写耦合严重,基本都是围绕自身系统做的数据导入或导出,数据同步的方案不够通用,甚至是需要专用通道,例如,Sqoop是局限于HDFS与外界的互通;
2、为达到各存储间数据的同步,Sqoop引入了复杂的框架来支持,提高了应用门槛,例如,Sqoop需要在Map-Reduce框架中才能运行;
3、对于数据量较大的情况,无法实现同步任务的切分,导致数据同步太慢,影响时效性。
4、在一定场景下,Sqoop能够解决自身的数据出入问题,但并不通用,无法实现任意结构化、半结构化存储系统间数据的互导,同时Sqoop运行需要复杂的框架或环境,不易于使用。
申请内容
本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本申请的第一个目的在于提出一种异构数据源之间的数据同步方法,该方法实现了读插件和写插件隔离,并实现了读插件和写插件与系统框架的隔离,同时达到提升同步任务并发的目的。
本申请的第二个目的在于提出一种异构数据源之间的数据同步装置。
为达上述目的,本申请第一方面实施例提出了一种异构数据源之间的数据同步方法,包括以下步骤:接收同步任务,并获取所述同步任务对应的操作类型;根据所述操作类型选择对应类型的读插件和写插件;通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。
本申请实施例的异构数据源之间的数据同步方法,系统框架通过指定读插件和写插件接口,从而实现了读插件和写插件隔离,并在系统框架调用不同的读插件和写插件时,使用不同的类加载器加载插件的类,从而实现了读插件和写插件与系统框架的隔离,并针对不同的读插件和写插件的同步任务做切分,从而同时达到提升同步任务并发的目的。
为达上述目的,本申请第二方面实施例提出了一种异构数据源之间的数据同步装置,包括:获取模块,用于接收同步任务,并获取所述同步任务对应的操作类型;选择模块,用于根据所述操作类型选择对应类型的读插件和写插件;生成模块,用于通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及执行模块,用于根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。
本申请实施例的异构数据源之间的数据同步装置,通过指定读插件和写插件接口,从而实现了读插件和写插件隔离,并在系统框架调用不同的读插件和写插件时,使用不同的类加载器加载插件的类,从而实现了读插件和写插件与系统框架的隔离,并针对不同的读插件和写插件的同步任务做切分,从而同时达到提升同步任务并发的目的。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是相关技术中开源项目Sqoop的结构示意图;
图2是本申请一个实施例的异构数据源之间的数据同步方法的流程图;
图3是异构数据源之间的数据同步方法中应用程编程接口API的示意图;
图4是异构数据源之间的数据同步方法的运行流程的示意图;以及
图5是本申请一个实施例的异构数据源之间的数据同步装置的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
图2是本申请一个实施例的异构数据源之间的数据同步方法的流程图。
如图2所示,异构数据源之间的数据同步方法包括:
S101,接收同步任务,并获取同步任务对应的操作类型。
在本申请的一个实施例中,通过第一类加载器生成同步任务全局空间,接收并处理全局同步任务。
具体地,类加载器负责读取Java编译后的字节码加载到Java虚拟机中,可创建相互隔离的Java类空间。系统框架通过第一类加载器接收同步任务,然后,系统框架判断该同步任务的操作类型,其中,操作类型包括在同一系统中同步或者是在不同系统中同步,同一系统中同步例如可以是在mysql中的同步任务,不同系统中同步例如可以是在mysql数据库类型和oracle数据库类型之间的同步任务。
S102,根据操作类型选择对应类型的Reader插件和Writer插件。
其中,Reader插件即读插件,Reader插件在数据同步中负责抽取源端数据,且Reader插件可插拔。Writer插件即写插件,Writer插件在数据同步中负责将数据写入目标位置,且Writer插件可插拔。
在本申请的一个实施例中,选择的Reader插件和Writer插件属于同一类型,或者不同类型。
在本申请的一个实施例中,选择的Reader插件和Writer插件分别具有独立的线程。
具体地,系统框架在判断出同步任务的操作类型之后,可以通过该操作类型选择对应类型的Reader插件和Writer插件。也就是说,一个完整的同步任务针对不同的源端类型和目的端类型抽象为Reader和Writer两种插件,例如,mysql的读写分别为mysqlReader和mysqlWriter。Reader插件和Writer插件可以是属于同一类型,也可以是不同类型的,例如,Reader插件和Writer插件可以都是mysql数据库类型,或者Reader插件是mysql数据库类型而Writer插件是oracle数据库类型。不同的Reader插件和Writer插件可以任意组合,从而实现不同源端和目的端的数据同步,即,实现Reader插件和Writer插件的隔离。
S103,通过选择的对应的Reader插件和Writer插件对同步任务进行切分并根据切分结果生成任务队列,其中,选择的Reader插件用于从源端读取数据并发送至Writer插件,选择的Writer插件用于将Reader插件读取的数据写入至目的端。
在本申请的一个实施例中,Reader插件和Writer插件均包括init()、prepare()、post()和destroy()方法。
具体地,系统框架在根据操作类型选择对应的Reader插件和Writer插件之后,通过Reader插件和Writer插件对同步任务进行切分以生成任务队列。其中,每个Reader插件和Writer插件的实现又包含两部分,即,Job和Task。其中,Job是一个完整的同步作业,对应一张逻辑表。而Task是一个同步作业分片,是同步作业的最细粒度,对应一张分表或被切分后的一块数据,Task至少包括一个Reader插件和Writer插件的线程。也就是说,Job是系统框架的实现,而Task是同步切片的实现,从而实现系统框架和插件的隔离。
进一步而言,Reader插件的Job和Writer插件的Job可以是不同的。Reader插件的Task包含startRead()方法,主要实现从源端抽取数据,而Writer插件的Task包含startWrite()方法,主要实现向目的端写入数据。然而,Job和Task都需要实现init()、prepare()、post()和destroy()等方法,用于实际数据同步前的准备和同步后的清理等操作。每个Reader插件和Writer插件本身具有自身的配置,例如,name、入口类、description等,可以在系统框架的层面加载进来。
换言之,每个Reader插件和Writer插件在执行的时候分别分为Job和Task,Job和Task中均包括以上几个方法,且这几个方法并不是Reader插件或者Writer插件都必须实现的,而是根据业务场景选择性实现。Job的方法包括init()、prepare()、post()和destroy()方法,其中,init()方法是全局作业初始化,例如检查配置是否合法,或者对配置做适当调整等;prepare()方法是全局作业准备,例如整个Job开始运行的外部打标签,或者清除目的端数据,为本Job同步任务做准备等;post()方法是全局作业的后续处理,例如整个Job运行完在外部打标签,释放全局资源等;destroy()方法是全局作业清理,例如日志整理等。
此外,Task的方法包括init()、prepare()、post()和destroy()方法,其中,init()方法是切分后的部分作业初始化,例如本插件的配置是否完整,或者对本插件配置做适当调整等;prepare()方法是切分后的部分作业准备,例如连接探测等;post()方法是切分后的部分作业后续处理,例如释放连接等;destroy()方法是切分后的部分作业清理,例如内存释放等。
S104,根据任务队列调用对应数量的Reader插件和Writer插件执行同步任务。
在本申请的一个实施例中,通过第二类加载器生成插件空间,执行对应数量的Reader插件和Writer插件以完成切分后的同步任务。
在本申请的一个实施例中,Reader插件通过Reader插件和Writer插件之间的管道将Reader插件读取的数据发送至对应的Writer插件。
具体地,系统框架在生成任务队列之后,可以通过第二类加载器生成具体的插件空间,执行对应数量的Reader插件和Writer插件来完成同步任务。
本申请实施例的异构数据源之间的数据同步方法,系统框架通过指定Reader插件和Writer插件接口,从而实现了Reader插件和Writer插件隔离,并在系统框架调用不同的Reader插件和Writer插件时,使用不同的类加载器加载插件的类,从而实现了Reader插件和Writer插件与系统框架的隔离,并针对不同的Reader插件和Writer插件的同步任务做切分,从而同时达到提升同步任务并发的目的。
下面参考图3和图4详细说明一下本申请实施例的异构数据源之间的数据同步方法中的应用编程接口API和运行流程。
图3是本申请异构数据源之间的数据同步方法中应用编程接口API的示意图,图4是异构数据源之间的数据同步方法的运行流程的示意图。如图3和图4所示:
第一步:初始化(init),系统框架同时调用Reader插件和Writer插件的Job的init()方法,例如初始化配置等静态操作;
第二步:准备(prepare),系统框架同时调用Reader插件和Writer插件的Job的prepare()方法,例如,连接探测等动态操作;
第三步:切分(split),系统框架先调用Reader插件的Job的split()方法,再根据Reader插件切分结果调用Writer插件的Job的split()方法,并将切分后的分片配对组成Task,其中,split()方法是对一个job按Reader/Writer插件的规定切分后配对组成Task,例如,一张逻辑表按照分库分表切分,或者单表按某唯一键切分;
第四步:调度(schedule),系统框架根据系统资源情况(例如一个TaskGroup包含多少Task等)将Task分发的不同TaskGroup中,这里的调度可以是本地调度,也可以是分布式调度,其中,TaskGroup是多个Task的组合,对应一个同步进程。TaskGroup根据并发启动Task,从而进入实际的数据同步流程:
1)Task初始化(init),Reader插件和Writer插件线程分别执行Task的init()方法,例如初始化配置等静态操作;
2)Task准备(prepare),Task的Reader插件和Writer插件线程分别执行Task的prepare()方法,例如预处理等动态操作;
3)Reader插件执行startRead,将从源端抽取到的数据放入传输Channel中;
4)Writer插件执行startWrite,将传输Channel中的数据写入目的端;
5)Task提交(post),Reader插件和Writer插件线程分别执行Task的post()方法;
6)Task资源回收(destroy),Reader插件和Writer插件线程分别执行Task的destroy()方法;
第五步:提交(post),系统框架同时调用Reader插件和Writer插件的Job的post()方法,例如同步完成打标等操作;
第六步:资源回收(destroy),系统框架同时调用Reader插件和Writer插件的Job的destroy()方法,做最后的资源回收处理等。
应当理解的是,整个运行流程过程Job是系统框架层面的管理,主要是对内的调度、状态收集、对外命令的接收以及状态汇报等。Job在调用Reader插件和Writer插件的相关方法时,都会切换类加载器(classLoader),从而实现系统框架和插件之间互不影响。Task的Reader插件和Writer插件各自使用不同的线程运行,无需类加载器(classLoader)的切换。换言之,本申请利用了Java语言自身的特点,通过应用程序编程接口API和类加载器classLoader解决了异构数据源间结构化、半结构化数据离线同步的问题,使数据间的互导更通用和易用,并采取split方法将大的Job切分为小的Task,提高了并发和同步速度。
为了实现上述实施例,本申请还提出一种异构数据源之间的数据同步装置。
图5是本申请一个实施例的异构数据源之间的数据同步装置的结构示意图,如图5所示,异构数据源之间的数据同步装置包括:获取模块100、选择模块200、生成模块300和执行模块400。
具体地,获取模块100用于接收同步任务,并获取同步任务对应的操作类型。
在本申请的一个实施例中,获取模块100生成同步任务全局空间,接收并处理全局同步任务。具体而言,类加载器负责读取Java编译后的字节码加载到Java虚拟机中,可创建相互隔离的Java类空间。获取模块100通过第一类加载器接收同步任务,然后,获取模块100判断该同步任务的操作类型,其中,操作类型包括在同一系统中同步或者是在不同系统中同步,同一系统中同步例如可以是在mysql中的同步任务,不同系统中同步例如可以是在mysql数据库类型和oracle数据库类型之间的同步任务。
选择模块200用于根据操作类型选择对应类型的Reader插件和Writer插件。其中,Reader插件即读插件,Reader插件在数据同步中负责抽取源端数据,且Reader插件可插拔。Writer插件即写插件,Writer插件在数据同步中负责将数据写入目标位置,且Writer插件可插拔。
在本申请的一个实施例中,选择的Reader插件和Writer插件属于同一类型,或者不同类型。其中,选择的Reader插件和Writer插件分别具有独立的线程。具体而言,获取模块100在判断出同步任务的操作类型之后,选择模块200可以通过该操作类型选择对应类型的Reader插件和Writer插件。也就是说,一个完整的同步任务针对不同的源端类型和目的端类型抽象为Reader和Writer两种插件,例如,mysql的读写分别为mysqlReader和mysqlWriter。Reader插件和Writer插件可以是属于同一类型,也可以是不同类型的,例如,Reader插件和Writer插件可以都是mysql数据库类型,或者Reader插件是mysql数据库类型而Writer插件是oracle数据库类型。不同的Reader插件和Writer插件可以任意组合,从而实现不同源端和目的端的数据同步,即,实现Reader插件和Writer插件的隔离。
生成模块300用于通过选择的对应的Reader插件和Writer插件对同步任务进行切分并根据切分结果生成任务队列,其中,选择的Reader插件用于从源端读取数据并发送至Writer插件,选择的Writer插件用于将Reader插件读取的数据写入至目的端。
在本申请的一个实施例中,Reader插件和Writer插件均包括init()、prepare()、post()和destroy()方法。具体而言,选择模块200在根据操作类型选择对应的Reader插件和Writer插件之后,生成模块300通过Reader插件和Writer插件对同步任务进行切分以生成任务队列。其中,每个Reader插件和Writer插件的实现又包含两部分,即,Job和Task。其中,Job是一个完整的同步作业,对应一张逻辑表。而Task是一个同步作业分片,是同步作业的最细粒度,对应一张分表或被切分后的一块数据,Task至少包括一个Reader插件和Writer插件的线程。也就是说,Job是系统框架的实现,而Task是同步切片的实现,从而实现系统框架和插件的隔离。
进一步而言,Reader插件的Job和Writer插件的Job可以是不同的。Reader插件的Task包含startRead()方法,主要实现从源端抽取数据,而Writer插件的Task包含startWrite()方法,主要实现向目的端写入数据。然而,Job和Task都需要实现init()、prepare()、post()和destroy()等方法,用于实际数据同步前的准备和同步后的清理等操作。每个Reader插件和Writer插件本身具有自身的配置,例如,name、入口类、description等,可以在系统框架的层面加载进来。
换言之,每个Reader插件和Writer插件在执行的时候分别分为Job和Task,Job和Task中均包括以上几个方法,且这几个方法并不是Reader插件或者Writer插件都必须实现的,而是根据业务场景选择性实现。Job的方法包括init()、prepare()、post()和destroy()方法,其中,init()方法是全局作业初始化,例如检查配置是否合法,或者对配置做适当调整等;prepare()方法是全局作业准备,例如整个Job开始运行的外部打标签,或者清除目的端数据,为本Job同步任务做准备等;post()方法是全局作业的后续处理,例如整个Job运行完在外部打标签,释放全局资源等;destroy()方法是全局作业清理,例如日志整理等。
此外,Task的方法包括init()、prepare()、post()和destroy()方法,其中,init()方法是切分后的部分作业初始化,例如本插件的配置是否完整,或者对本插件配置做适当调整等;prepare()方法是切分后的部分作业准备,例如连接探测等;post()方法是切分后的部分作业后续处理,例如释放连接等;destroy()方法是切分后的部分作业清理,例如内存释放等。
执行模块400用于根据任务队列调用对应数量的Reader插件和Writer插件执行同步任务。
在本申请的一个实施例中,执行模块400通过第二类加载器生成插件空间,执行对应数量的Reader插件和Writer插件以完成切分后的同步任务。其中,Reader插件通过Reader插件和Writer插件之间的管道将Reader插件读取的数据发送至对应的Writer插件。具体而言,生成模块300生成任务队列之后,执行模块400通过第二类加载器生成具体的插件空间,执行对应数量的Reader插件和Writer插件来完成同步任务。
本申请实施例的异构数据源之间的数据同步装置,通过指定Reader插件和Writer插件接口,从而实现了Reader插件和Writer插件隔离,并在系统框架调用不同的Reader插件和Writer插件时,使用不同的类加载器加载插件的类,从而实现了Reader插件和Writer插件与系统框架的隔离,并针对不同的Reader插件和Writer插件的同步任务做切分,从而同时达到提升同步任务并发的目的。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (12)
1.一种异构数据源之间的数据同步方法,其特征在于,包括以下步骤:
接收同步任务,并获取所述同步任务对应的操作类型;
根据所述操作类型选择对应类型的读插件和写插件;
通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及
根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。
2.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,其中,通过第一类加载器生成同步任务全局空间,接收并处理全局同步任务,并通过第二类加载器生成插件空间,执行所述对应数量的读插件和写插件以完成切分后的同步任务。
3.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述读插件通过所述读插件和写插件之间的管道将所述读插件读取的数据发送至对应的所述写插件。
4.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述选择的所述读插件和所述写插件属于同一类型,或者不同类型。
5.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述选择的所述读插件和所述写插件分别具有独立的线程。
6.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述读插件和所述写插件均包括init()、prepare()、post()和destroy()方法。
7.一种异构数据源之间的数据同步装置,其特征在于,包括:
获取模块,用于接收同步任务,并获取所述同步任务对应的操作类型;
选择模块,用于根据所述操作类型选择对应类型的读插件和写插件;
生成模块,用于通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及执行模块,用于根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。
8.如权利要求7所述的异构数据源之间的数据同步装置,其特征在于,其中,通过第一类加载器生成同步任务全局空间,接收并处理全局同步任务,并通过第二类加载器生成插件空间,执行所述对应数量的读插件和写插件以完成切分后的同步任务。
9.如权利要求7所述的异构数据源之间的数据同步装置,其特征在于,所述读插件通过所述读插件和写插件之间的管道将所述Reader插件读取的数据发送至对应的所述写插件。
10.如权利要求7所述的异构数据源之间的数据同步装置,其特征在于,所述选择的所述读插件和所述写插件属于同一类型,或者不同类型。
11.如权利要求7所述的异构数据源之间的数据同步装置,其特征在于,所述选择的所述读插件和所述写插件分别具有独立的线程。
12.如权利要求7所述的异构数据源之间的数据同步装置,其特征在于,所述读插件和所述写插件均包括init()、prepare()、post()和destroy()方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510179809.XA CN106156165A (zh) | 2015-04-16 | 2015-04-16 | 异构数据源之间的数据同步方法和装置 |
TW104141930A TW201638791A (zh) | 2015-04-16 | 2015-12-14 | 異構資料源之間的資料同步方法和裝置 |
PCT/US2016/027798 WO2016168632A1 (en) | 2015-04-16 | 2016-04-15 | System, method, and apparatus for synchronization among heterogeneous data sources |
US15/099,908 US10789271B2 (en) | 2015-04-16 | 2016-04-15 | System, method, and apparatus for synchronization among heterogeneous data sources |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510179809.XA CN106156165A (zh) | 2015-04-16 | 2015-04-16 | 异构数据源之间的数据同步方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106156165A true CN106156165A (zh) | 2016-11-23 |
Family
ID=57127040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510179809.XA Pending CN106156165A (zh) | 2015-04-16 | 2015-04-16 | 异构数据源之间的数据同步方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10789271B2 (zh) |
CN (1) | CN106156165A (zh) |
TW (1) | TW201638791A (zh) |
WO (1) | WO2016168632A1 (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562538A (zh) * | 2017-08-22 | 2018-01-09 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN107766132A (zh) * | 2017-06-25 | 2018-03-06 | 平安科技(深圳)有限公司 | 多任务调度方法、应用服务器及计算机可读存储介质 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
CN108628895A (zh) * | 2017-03-21 | 2018-10-09 | 腾讯科技(深圳)有限公司 | 一种地图数据的处理方法及装置 |
CN109783201A (zh) * | 2017-11-13 | 2019-05-21 | 北京京东尚科信息技术有限公司 | 数据交换方法及其系统 |
CN107491515B (zh) * | 2017-08-11 | 2020-10-16 | 国电南瑞科技股份有限公司 | 基于大数据平台的智能配用电数据转换方法 |
CN112163037A (zh) * | 2020-09-17 | 2021-01-01 | 彩讯科技股份有限公司 | 一种数据同步方法、装置、计算机设备及存储介质 |
CN112565042A (zh) * | 2020-12-24 | 2021-03-26 | 航天科工网络信息发展有限公司 | 一种星形结构数据交换的方法 |
CN113377863A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN113407633A (zh) * | 2018-09-13 | 2021-09-17 | 华东交通大学 | 一种分布式数据源异构同步的方法 |
CN113656474A (zh) * | 2021-08-05 | 2021-11-16 | 京东科技控股股份有限公司 | 业务数据的接入方法、装置、电子设备及存储介质 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920592B (zh) * | 2018-06-26 | 2020-11-10 | 杭州一骑轻尘信息技术有限公司 | 数据库字段关联方法及装置 |
CN108920659B (zh) * | 2018-07-03 | 2022-06-07 | 广州唯品会信息科技有限公司 | 数据处理系统及其数据处理方法、计算机可读存储介质 |
CN111669418B (zh) * | 2019-03-07 | 2022-09-27 | 阿里巴巴集团控股有限公司 | 数据通信方法、数据同步方法、系统、装置、网关设备、服务器及基站设备 |
CN110851513B (zh) * | 2019-10-16 | 2021-06-08 | 中盈优创资讯科技有限公司 | 基于Spark计算引擎的多源异构数据读取方法及装置 |
CN111737355B (zh) * | 2020-06-29 | 2023-06-23 | 广东粤财金融云科技股份有限公司 | 基于MongoDB元数据管理的异构数据源同步的方法及系统 |
CN112000649B (zh) * | 2020-07-07 | 2023-06-27 | 武汉达梦数据库股份有限公司 | 一种基于map reduce的增量数据同步的方法和装置 |
US11586592B2 (en) | 2020-08-21 | 2023-02-21 | Wandisco, Inc. | Methods, devices and systems for writer pre-selection in distributed data systems |
CN112685499A (zh) * | 2020-12-30 | 2021-04-20 | 珠海格力电器股份有限公司 | 一种工作业务流的流程数据同步方法、装置及设备 |
CN114595291B (zh) * | 2022-05-10 | 2022-08-02 | 城云科技(中国)有限公司 | 基于数据库注释的归集任务调整方法、装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916298A (zh) * | 2010-08-31 | 2010-12-15 | 深圳市赫迪威信息技术有限公司 | 数据库操作方法、设备及系统 |
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN102521387A (zh) * | 2011-12-21 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种基于插件的数据迁移方法 |
CN102681882A (zh) * | 2011-03-15 | 2012-09-19 | 新奥特(北京)视频技术有限公司 | 一种利用剧本插件控制播出任务执行的方法 |
CN102999537A (zh) * | 2011-09-19 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及系统 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694336B1 (en) | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6678700B1 (en) | 2000-04-27 | 2004-01-13 | General Atomics | System of and method for transparent management of data objects in containers across distributed heterogenous resources |
US6999956B2 (en) * | 2000-11-16 | 2006-02-14 | Ward Mullins | Dynamic object-driven database manipulation and mapping system |
US20020156756A1 (en) | 2000-12-06 | 2002-10-24 | Biosentients, Inc. | Intelligent molecular object data structure and method for application in heterogeneous data environments with high data density and dynamic application needs |
US7107297B2 (en) | 2002-01-10 | 2006-09-12 | International Business Machines Corporation | System and method for metadirectory differential updates among constituent heterogeneous data sources |
US7788225B2 (en) | 2005-03-18 | 2010-08-31 | Oracle International Corporation | Apparatus and method for identifying asynchronous data in redundant data stores and for re-synchronizing same |
US20070073899A1 (en) | 2005-09-15 | 2007-03-29 | Judge Francis P | Techniques to synchronize heterogeneous data sources |
US8010701B2 (en) * | 2005-12-19 | 2011-08-30 | Vmware, Inc. | Method and system for providing virtualized application workspaces |
US8099400B2 (en) * | 2006-08-18 | 2012-01-17 | National Instruments Corporation | Intelligent storing and retrieving in an enterprise data system |
US8131670B2 (en) * | 2007-02-22 | 2012-03-06 | Microsoft Corporation | Techniques to cross-synchronize data |
US8453136B1 (en) * | 2007-03-06 | 2013-05-28 | Cadence Design Systems, Inc. | Change tracking and incremental synchronization of EDA design and technology data |
US9411864B2 (en) | 2008-08-26 | 2016-08-09 | Zeewise, Inc. | Systems and methods for collection and consolidation of heterogeneous remote business data using dynamic data handling |
US8510270B2 (en) | 2010-07-27 | 2013-08-13 | Oracle International Corporation | MYSQL database heterogeneous log based replication |
US9953099B2 (en) | 2010-12-17 | 2018-04-24 | Dst Health Solutions, Llc | Repackageable virtualized transparent access to heterogeneous data sources |
US9152686B2 (en) * | 2012-12-21 | 2015-10-06 | Zetta Inc. | Asynchronous replication correctness validation |
IN2013MU01237A (zh) * | 2013-03-28 | 2015-04-10 | Tata Consultancy Services Ltd | |
EP2891994A4 (en) | 2013-11-04 | 2016-06-01 | Guangdong Electronics Industry Inst Ltd | METHOD FOR AUTOMATICALLY SYNCHRONIZING MULTI-SOURCE HETEROGENEOUS DATA RESOURCES |
CN103617176B (zh) | 2013-11-04 | 2017-03-15 | 广东电子工业研究院有限公司 | 一种实现多源异构数据资源自动同步的方法 |
-
2015
- 2015-04-16 CN CN201510179809.XA patent/CN106156165A/zh active Pending
- 2015-12-14 TW TW104141930A patent/TW201638791A/zh unknown
-
2016
- 2016-04-15 US US15/099,908 patent/US10789271B2/en active Active
- 2016-04-15 WO PCT/US2016/027798 patent/WO2016168632A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916298A (zh) * | 2010-08-31 | 2010-12-15 | 深圳市赫迪威信息技术有限公司 | 数据库操作方法、设备及系统 |
CN102681882A (zh) * | 2011-03-15 | 2012-09-19 | 新奥特(北京)视频技术有限公司 | 一种利用剧本插件控制播出任务执行的方法 |
CN102411506A (zh) * | 2011-07-07 | 2012-04-11 | 杭州典能科技有限公司 | Java系统业务单元插件式管理系统及业务功能动态变更方法 |
CN102999537A (zh) * | 2011-09-19 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据迁移系统和方法 |
CN102521387A (zh) * | 2011-12-21 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种基于插件的数据迁移方法 |
CN103092980A (zh) * | 2013-01-31 | 2013-05-08 | 中国科学院自动化研究所 | 一种数据自动转换与存储的方法及系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628895A (zh) * | 2017-03-21 | 2018-10-09 | 腾讯科技(深圳)有限公司 | 一种地图数据的处理方法及装置 |
CN108628895B (zh) * | 2017-03-21 | 2022-11-25 | 腾讯科技(深圳)有限公司 | 一种地图数据的处理方法及装置 |
CN107766132A (zh) * | 2017-06-25 | 2018-03-06 | 平安科技(深圳)有限公司 | 多任务调度方法、应用服务器及计算机可读存储介质 |
CN107491515B (zh) * | 2017-08-11 | 2020-10-16 | 国电南瑞科技股份有限公司 | 基于大数据平台的智能配用电数据转换方法 |
CN107562538B (zh) * | 2017-08-22 | 2020-01-07 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN107562538A (zh) * | 2017-08-22 | 2018-01-09 | 中国铁道科学研究院电子计算技术研究所 | 铁路运输统计中的数据抽取多任务管理方法和系统 |
CN107908472A (zh) * | 2017-09-30 | 2018-04-13 | 平安科技(深圳)有限公司 | 数据同步装置、方法及计算机可读存储介质 |
CN109783201A (zh) * | 2017-11-13 | 2019-05-21 | 北京京东尚科信息技术有限公司 | 数据交换方法及其系统 |
CN113407633A (zh) * | 2018-09-13 | 2021-09-17 | 华东交通大学 | 一种分布式数据源异构同步的方法 |
CN113377863B (zh) * | 2020-03-10 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN113377863A (zh) * | 2020-03-10 | 2021-09-10 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机可读存储介质 |
CN112163037A (zh) * | 2020-09-17 | 2021-01-01 | 彩讯科技股份有限公司 | 一种数据同步方法、装置、计算机设备及存储介质 |
CN112565042A (zh) * | 2020-12-24 | 2021-03-26 | 航天科工网络信息发展有限公司 | 一种星形结构数据交换的方法 |
CN113656474A (zh) * | 2021-08-05 | 2021-11-16 | 京东科技控股股份有限公司 | 业务数据的接入方法、装置、电子设备及存储介质 |
CN114840393A (zh) * | 2022-06-29 | 2022-08-02 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
CN114840393B (zh) * | 2022-06-29 | 2022-09-30 | 杭州比智科技有限公司 | 一种多数据源数据同步监控方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10789271B2 (en) | 2020-09-29 |
US20160306867A1 (en) | 2016-10-20 |
TW201638791A (zh) | 2016-11-01 |
WO2016168632A1 (en) | 2016-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106156165A (zh) | 异构数据源之间的数据同步方法和装置 | |
CN103902456B (zh) | 测试脚本处理装置、系统及方法 | |
CN104699541A (zh) | 同步数据的方法、装置、数据传输组件及系统 | |
CN109901838A (zh) | 基于组件化的前端开发方法、装置、设备及存储介质 | |
CN110162471A (zh) | 一种基于容器云的压力测试方法及系统 | |
CN106569801A (zh) | 一种基于复杂参数的组态化显控系统 | |
CN103744680B (zh) | 一种业务流程处理方法及装置 | |
CN106980571B (zh) | 一种测试用例集的构建方法和设备 | |
CN106648682B (zh) | 一种面向嵌入式系统开发的动态数据通用框架 | |
CN107832207A (zh) | 接口性能测试方法、装置、存储介质和计算机设备 | |
CN103279390A (zh) | 一种面向小作业优化的并行处理系统 | |
CN105183547B (zh) | 一种用户界面的任务调度方法和装置 | |
CN107659624A (zh) | 一种适用于云计算的异构云管理系统及方法 | |
CN105808227A (zh) | 一种美术资源文件检测方法和装置 | |
CN103649907A (zh) | 高度并发处理任务的记录和执行 | |
CN109271447A (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN110442752A (zh) | 组织架构图生成方法、装置、计算机设备和存储介质 | |
CN107506190A (zh) | 基于Spring框架的XML文件修改方法及装置 | |
CN109359038A (zh) | 一种基于Qt和Lua组合实现组态测试系统、实现方法及设备 | |
CN105306273A (zh) | 流程配置方法及装置 | |
CN104915390A (zh) | 一种etl数据血统查询系统及查询方法 | |
CN103914223B (zh) | 终端应用界面的生成方法及装置 | |
CN102004660A (zh) | 一种业务流程的实现方法及装置 | |
CN103809947B (zh) | 一种开发需求的自动发布方法和系统 | |
CN106293670B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161123 |
|
RJ01 | Rejection of invention patent application after publication |