异构数据源之间的数据同步方法和装置制造方法及图纸

技术编号:14233694 阅读:146 留言:0更新日期:2016-12-21 00:35
本申请提出一种异构数据源之间的数据同步方法和装置。该方法包括:接收同步任务,并获取同步任务对应的操作类型;根据操作类型选择对应类型的读插件和写插件;通过选择的对应的读插件和写插件对同步任务进行切分并根据切分结果生成任务队列,其中,选择的读插件用于从源端读取数据并发送至写插件,选择的写插件用于将读插件读取的数据写入至目的端;以及根据任务队列调用对应数量的读插件和写插件执行同步任务。本申请实施例的方法,实现了读插件和写插件隔离,并实现了读插件和写插件与系统框架的隔离,同时达到了提升同步任务并发的目的。

Method and apparatus for synchronizing data between heterogeneous data sources

The invention provides a method and a device for synchronizing data between heterogeneous data sources. The method includes: receiving a synchronization task, type of operation and obtain the corresponding synchronization task; according to the operation type of the corresponding type of read and write plug-in plug-in plug-in; by reading the corresponding selection and write plug-in for the synchronous task segmentation according to the segmentation results of the generation task queue, which read plugin selected for reading data and from the source sent to write plug-ins, choose to write plug-ins for the read data read write plug-ins to the end; and the number of read plug-ins to call the corresponding task queue and write synchronization tasks according to the plugin. The method of the embodiment of the invention realizes the isolation of the reading plug-in and the writing plug-in, realizes the isolation of the reading plug-in and the writing plug-in and the system frame, and simultaneously achieves the purpose of promoting concurrent task synchronization.

【技术实现步骤摘要】

本申请涉及异构数据源
,尤其涉及一种异构数据源之间的数据同步方法和装置
技术介绍
结构化数据是指具有行列结构的数据,例如,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插件可以本文档来自技高网
...
异构数据源之间的数据同步方法和装置

【技术保护点】
一种异构数据源之间的数据同步方法,其特征在于,包括以下步骤:接收同步任务,并获取所述同步任务对应的操作类型;根据所述操作类型选择对应类型的读插件和写插件;通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。

【技术特征摘要】
1.一种异构数据源之间的数据同步方法,其特征在于,包括以下步骤:接收同步任务,并获取所述同步任务对应的操作类型;根据所述操作类型选择对应类型的读插件和写插件;通过所述选择的对应的读插件和写插件对所述同步任务进行切分并根据切分结果生成任务队列,其中,选择的所述读插件用于从源端读取数据并发送至所述写插件,选择的所述写插件用于将所述读插件读取的数据写入至目的端;以及根据所述任务队列调用对应数量的读插件和写插件执行所述同步任务。2.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,其中,通过第一类加载器生成同步任务全局空间,接收并处理全局同步任务,并通过第二类加载器生成插件空间,执行所述对应数量的读插件和写插件以完成切分后的同步任务。3.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述读插件通过所述读插件和写插件之间的管道将所述读插件读取的数据发送至对应的所述写插件。4.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述选择的所述读插件和所述写插件属于同一类型,或者不同类型。5.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述选择的所述读插件和所述写插件分别具有独立的线程。6.如权利要求1所述的异构数据源之间的数据同步方法,其特征在于,所述读插件和所述写插件均包括init()、prepare()、post()和destroy()方法。7.一种异构数据源之间的数据同步装置,...

【专利技术属性】
技术研发人员:邓小勇陈守元何健超
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1