数据交换方法、装置及系统与流程

文档序号:12667280阅读:385来源:国知局
数据交换方法、装置及系统与流程

本发明涉及计算机数据交换技术领域,尤其涉及一种数据交换方法、装置及系统。



背景技术:

目前,跨系统的数据交换方案是首先通过对源数据库直接查询得到全量数据或增量数据,再将查询得到的全量数据或增量数据传输至目标系统;目标系统将获取的数据与自身拥有的数据作比对,提取出变更的数据,然后将变更的数据和自身拥有的数据合并。

该种数据交换方案存在如下缺陷:第一、对源数据库系统直接查询得到全量数据或增量数据,对源数据库和目标系统的压力大,甚至直接影响源数据库或目标系统正常运行,且数据交换的开发量随着系统规模线性增大,对于大型项目的开发周期和风险骤增;第二、与源数据库的耦合性低,需要花费大量精力对源数据库设计进行调研;第三、仅限于针对现有项目需求做临时开发,整体架构缺乏足够的灵活性和扩展性,当后续其他项目有相关需求时,仍需重新实现;第四、对于数据交换的相关变更,不能自动处理,需由开发人员或维护人员手动处理,大大增加人力成本。

综上分析,现有技术中缺乏在一种可耦合多种类型的源数据库,同时对源数据库和目标系统的资源占用少且可自动交换数据的数据交换技术方案。



技术实现要素:

本发明实施例提供一种数据交换方法、装置及系统,以解决现有技术中不存在可耦合多种类型的源数据库、且对源数据库和目标系统的资源占用少且可自动交换数据的数据交换技术方案。

根据本发明实施例提供的一种数据交换方法,包括:

获取一源数据库的日志文件;

通过所述日志文件提取所述源数据库的操作记录,并将所述操作记录转换为预设格式的操作记录;

根据所述预设格式的操作记录的字段将所述预设格式的操作记录写入对应的内存队列中,供目标系统从所述内存队列中提取预设格式的操作记录并执行,其中所述目标系统为分布式数据库。

在一个实施例中,所述操作记录中包括源数据库的表的结构信息,所述方法还包括:

从所述预设格式的操作记录中获取所述源数据库的表的结构信息,并发送至所述目标系统,以使所述目标系统根据所述源数据库的表的结构信息生成对应的表。

在一个实施例中,所述预设格式的操作记录包括以下字段:源数据库的库名、源数据库中包含的表的表名、以及源数据库中运行的实例的实例名。

根据本发明实施例提供的一种数据交换装置,包括:

获取单元,用于获取一源数据库的日志文件;

转换单元,用于通过所述日志文件提取所述源数据库的操作记录,并将所述操作记录转换为预设格式的操作记录;

写入单元,用于根据所述预设格式的操作记录的字段将所述预设格式的操作记录写入对应的内存队列中,供目标系统从所述内存队列中提取预设格式的操作记录并执行,其中,所述目标系统为分布式数据库。

在一个实施例中,所述操作记录中包括源数据库的表的结构信息;所述获取单元还用于,从所述操作记录中获取所述源数据库的表的结构信息;所述写入单元还用于,将所述源数据库的表的结构信息写入所述内存队列中,以使所述目标系统根据所述源数据库的表的结构信息生成对应的表。

在一个实施例中,所述转换单元转换的预设格式的操作记录包括以下字段:源数据库的库名、源数据库中包含的表的表名、以及源数据库中运行的实例的实例名。

根据本发明实施例提供的一种数据交换系统,包括:

源数据库,其日志文件中记录有操作所述源数据库所生成的操作记录;

数据交换装置,用于获取所述源数据库的日志文件,通过所述日志文件提取所述操作记录并将预设格式的操作记录写入内存队列;

目标系统,用于从所述内存队列中提取所述预设格式的操作记录,执行所述预设格式的操作记录中包含的操作,其中所述目标系统为分布式数据库。

在一个实施例中,所述数据交换装置还用于,从所述操作记录中获取所述源数据库的表的结构信息,将所述源数据库的表的结构信息写入所述内存队列中,以使所述目标系统根据所述源数据库的表的结构信息生成对应的表。

在一个实施例中,所述操作记录中还包括源数据库的表的结构信息;所述数据交换装置还用于,将所述操作记录转换为预设格式的操作记录,所述预设格式的操作记录包括以下字段:源数据库的库名、源数据库中包含的表的表名、以及源数据库中运行的实例的实例名。

在一个实施例中,所述目标系统采用多线程的方式从所述内存队列中提取操作记录,和/或所述目标系统采用多线程的方式执行所述操作记录中包含的操作。

本发明实施例采用的上述至少一个技术方案能够达到以下有益效果:

本发明提供的数据交换方法、装置及系统,从获取的源数据库的日志文件中提取操记录并转换预设格式的操作记录,根据转换的预设格式的操作记录更新目标系统,在本技术方案中,将提取的操作记录转换为预设格式的操作记录,使本方案能匹配多种类型的源数据库及目标系统,本技术方案可适用于多种类型的源数据库,无需开发人员或维护人员手动处理便可完成跨系统数据交换,具有扩展性好、对源数据库系统和目标数据库系统的资源占用少的优点。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1为根据本发明实施例的线性通信流程的示意图;

图2为本发明实施例中一种数据交换方法的流程图;

图3为本发明实施例中源数据库与目标系统的数据交换过程的示意图;

图4为本发明实施例中一种数据交换装置的结构示意图;

图5为本发明实施例中数据交换装置兼容多种类型的源数据库和目标系统的结构示意图;

图6为本发明实施例中一种数据交换系统的结构示意图;

图7为本发明实施例中另外一种数据交换系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合附图,详细说明本发明各实施例提供的技术方案。

图1示出了根据本发明实施例的完整的线性通信的过程。如图1所示,包括有:源数据库11、获取单元121、转换单元122、写入单元123、内存队列13、获取单元141、转换单元142、写入单元143和目标系统15。其中,获取单元121获取源数据库11的日志文件,转换单元122提取该日志文件中包含的操作记录,并将提取的操作记录转换为预设格式的操作记录,写入单元123将该预设格式的操作记录写入内存队列13(In-memory Queue)中。其中,所述预设格式为一种统一的写入数据库事件的一种形式,其数据序列化和反序列化采用Google Protobf协议;该预设格式的操作记录登记数据库时间发生的时间、源数据库的库名、表名、源数据库中的数据更改及DDL(Data Ddfination Language,数据定义语言)变更等。

获取单元141从内存队列13中提取预设格式的操作记录,写入单元143执行预设格式的操作记录中包含的操作并将执行结果写入目标系统15。其中,当需要对从内存队列13中提取的操作记录进行格式转换等操作时,还可以包括转换单元142,转换单元142将获取单元141从内存队列中提取的预设格式的操作记录转换为目标格式的操作记录,以供写入单元143执行该目标格式的操作记录中包含的操作并将执行结果写入目标系统,其中,该目标格式依据需求而进行设定。

其中,获取单元121与获取单元141、转换单元122与转换单元142、以及写入单元123与写入单元143的结构、功能及工作原理类似。

实施例1

根据本发明实施例提供一种数据交换方法,如图2所述,该方法包括以下步骤:

步骤S201、获取一源数据库的日志文件;

源数据库的日志文件中保存有对源数据库的操作记录,如对源数据库中的数据进行的类似插入、删除等类型的操作及对源数据库进行操作的时间等,或者对源数据库执行的其他操作信息,如回滚(rollback操作)等。

在获取源数据库的日志文件时,记录该次获取位点,在下次因与同一目标系统执行数据交换而获取该源数据库的日志文件时,从最后一个获取位点开始获取源数据库的日志文件。如此,使获取时间缩短,同时,提高数据交换效率。

步骤S203、通过所述日志文件提取所述源数据库的操作记录,并将所述操作记录转换为预设格式的操作记录;

可以设置时间段,在日志文件中提取该时间段内操作源数据库生成的操作记录,以将该时间段内对源数据库进行的操作更新至目标系统中,如:在2016.1.1上午10:00-2016.1.1上午10:05之间对源数据库的操作包括:插入十条数据,删除了另外五条数据。若设置的时间段为2016.1.1上午10:00-2016.1.1上午10:05,则从日志文件中提取的操作记录包括插入十条数据,及删除了另外五条数据。同时也可以不设置时间段,通过日志文件提取操作源数据库生成的操作记录,将对源数据库的操作更新至目标系统。

在提取操作记录时,可记录每次提取的时间点,在下次提取时,从最后一个时间点开始提取,如此,便可提高提取日志文件的效率,同时扩大了数据交换效率。

将提取的操作记录转换为预设格式的操作记录,以使本数据交换方法可以耦合不同类型的源数据库,如SQL Server、Oracle等。其中,该预设格式的操作记录对多种类型的数据库透明,即,多种类型的数据库均能识别该预设格式是操作记录,因此,该预设格式的操作记录可以被多种类型的目标系统识别,提高了数据交换方法与源数据库、目标系统的耦合率。

步骤S205、根据所述预设格式的操作记录的字段将所述预设格式的操作记录写入对应的内存队列中,以使目标系统提取所述内存队列中的预设格式的操作记录并执行,其中所述目标系统为分布式数据库。

在此涉及到根据预设格式的操作记录的字段将提取的预设格式的操作记录写入对应的内存队列中;首先,根据预设格式的操作记录的字段对预设格式的操作记录进行分类,然后根据分类结果将其写入对应的内存队列,以供目标系统从相应的内存队列中提取预设格式的操作记录并执行。如库名为Basic的数据库中,包括一个表名为student的表,还包括一个名称为grade的表,两个表相同的列为学生的学号。现在以Basic为源数据库,可首先根据表名将预设格式的操作记录分类,然后将预设格式的操作记录中的表名为student的操作记录写入一个子内存队列中,将预设格式的操作记录中表名为grade的操作记录写入另外一个子内存队列;同时可记录表名为student的操作记录所在的子内存队列中最后一个操作记录所在的位点,若在下次写入内存前不涉及目标系统从内存队列中提取预设格式的操作记录,则在下次继续写入预设格式的操作记录中的表名为student的操作记录时,从最后一个操作记录所在的子内存队列的位点的下一个位点开始写入,若在两次写入之间涉及目标系统从子内存队列中提取操作记录,则下次写入从提取后的最后一个位点的下一个位点开始写入。

本发明实施例提供的数据交换方法,能够匹配多种类型的源数据库;与此同时,本技术方案扩展性好、对源数据库系统和目标数据库系统的资源占用少且无需开发人员或维护人员手动处理便可自动完成跨系统数据交换。

在一个实施例中,所述获取一源数据库的日志文件包括:通过所述源数据库内部的应用程序接口(Application Program Interface,应用程序接口,简称API)获取所述日志文件。

目标系统可优先采取直接读取日志文件的方式获取源数据库的日志文件,若无法通过直接读取日志文件的方式获取日志文件,则通过数据库内部的API接口获取所述日志文件。

在一个实施例中,所述操作记录中包括源数据库的表的结构信息,所述方法还包括:从所述操作记录中获取源数据库的表的结构信息。一般情况下,源数据库定义其包含的表的同时定义其包含的表的结构信息,该表的结构信息中可包含该源数据库包含的表的列名及各列之间存在的依赖关系等;在获取源数据库的表的结构信息之后,将其发送至目标系统,以供目标系统根据源数据库的表的结构信息生成对应的表,如此,便可使目标系统在不更改操作记录中包含的数据之间关系的前提下将操作记录中的数据完整地更新至目标系统。

在一个实施例中,预设格式的操作记录可包括以下字段:源数据库的库名、源数据库中包含的表的表名及源数据库中运行的实例的实例名。

下面列举一个具体实施例进行阐述。参见图3,为一源数据库31与目标系统35的数据交换过程,下面以源数据库为SQL Server、目标系统为HDFS(Hadoop Distributed File System,分布式系统)为例进行描述。

欲将SQL Server中的表名为dbo.a和dbo.b的表中的数据分别变更复制到HDFS的/user/hive/warehouse/cdc.db/a/和/user/hive/warehouse/cdc.db/b/中。数据交换方法具体为:首先,获取SQL Server的日志文件,图中的获取单元321完成该日志文件获取功能,获取单元321优先从SQL Server中直接读取日志文件;若无法直接从SQL Server中直接读取到日志文件,则获取单元321从源数据库SQL Serve内部的应用程序接口中获取日志文件。然后,转换单元322提取获取单元321从日志文件中获取的表名为dho.a和dbo.b的操作记录,并将提取的操作记录转换为预设格式的操作记录。该预设格式的操作记录对大多数数据库透明,因此,大多数目标系统均能识别该预设格式的操作记录。写入单元323按照预设格式的操作记录的字段分别将其写入0号内存队列和1号内存队列中。

最后,由于需要分别从0号内存队列和1号内存队列中提取预设格式的操作记录并执行,目标系统可通过两个获取单元(获取单元341和获取单元361)以多线程的方式分别从内存队列33的0号内存队列中提取预设格式的操作记录和从内存队列33的1号内存队列中提取预设格式的操作记录;再通过写入单元343执行获取单元341提取的预设格式的操作记录中包含的操作并将执行结果写入目标系统HDFS的user/hive/warehouse/cdd.db/a/;同理,通过获取单元361从1号内存队列中提取操作记录,写入单元363执行获取单元361提取的预设格式的操作记录中包含的操作并将执行结果写入目标系统HDFS的user/hive/warehouse/cdd.db/b/中。

其中,获取单元341与获取单元361可采用多线程的方式从内存队列33中提取相应的预设格式的操作记录,而写入单元343和写入单元363也可以采用多线程的方式执行提取的预设格式的操作记录中包含的操作并将执行结果写入目标系统HDFS。如此,便可提高源数据库与目标系统的数据交换的效率。

需要说明的是,当需要对从内存队列中提取的预设格式的操作记录进行转换等操作,可设置转换单元(未示出),其可耦接在获取单元341和写入单元343之间。转换单元转换将获取单元提取的预设格式的操作记录转换为目标格式的操作记录,以供写入单元执行该目标格式的操作记录中包含的操作并将执行结果写入目标系统35,其中,该目标格式依据用户的需求而进行设定。

在从获取单元321获取的日志文件中提取的操作记录中还可包含表名为dbo.a的表的结构信息和表名为dbo.b的表的结构信息,以供目标系统根据表名为dbo.a的表的结构信息生成user/hive/warehouse/cdd.db/a/的表的结构;及,供目标系统根据表名为dbo.b的表的结构信息生成user/hive/warehouse/cdd.db/b/的表的结构。

实施例2

参见图4所示,本实施例提供一种数据交换装置,包括获取单元421、转换单元422和写入单元423。其中,获取单元421用于获取一源数据库的日志文件;转换单元422用于通过所述日志文件提取所述源数据库的操作记录,并将所述操作记录转换为预设格式的操作记录;写入单元423用于根据所述预设格式的操作记录的字段将所述预设格式的操作记录写入对应的内存队列中,以供目标系统提取所述内存队列中的预设格式的操作记录并执行,其中,所述目标系统为分布式数据库。

在本技术方案中,获取单元421获取一源数据库的日志文件,继而转换单元422在日志文件提取操作源数据库生成的操作记录,并将操作记录转换为预设格式的操作记录,该预设格式的操作记录对大多数数据库系统均透明,即大多数数据库系统均能识别该预设格式的操作记录,如此,便能兼容大多数的源数据库和目标系统,使数据交换装置有较高的适用性。

在一个实施例中,获取单元421可直接从源数据库中直接读取其日志文件,若获取单元421无法直接读取源数据库的日志文件,则获取单元421从源数据库内部的应用程序接口获取日志文件。

在一个实施例中,所述获取单元421还用于从所述操作记录中获取所述源数据库的表的结构信息;所述写入单元423还用于将所述源数据库的表的结构信息写入内存队列中,以供所述目标系统根据所述源数据库的表的结构信息生成对应的表。

在一个实施例中,转换单元422转换的预设格式的操作记录中包括以下字段:源数据库的库名、源数据库中包含的表的表名及源数据库中运行的实例的实例名。

参见图5所示,源数据库51可以为MySQL、Oracle、SQL Server或DB2等类型的数据库,但是无论采用哪一种类型的源数据库,数据交换装置均可获取其日志文件,使数据交换装置52可以兼容多种类型的源数据库。而作为目标系统55的分布式数据库,可以为数据库系统、大数据系统、消息系统、缓存系统或实时计算系统,预设格式的操作记录对上述任何一种目标系统均透明,使数据交换装置有很高的适用性。

实施例3

参见图6所示,本实施例还提供一种数据交换系统,包括源数据库61、数据交换装置62和目标系统65。其中,源数据库61的日志文件中记录有所述源数据库的操作记录;数据交换装置62用于获取所述源数据库的日志文件,通过所述日志文件提取所述操作记录并将预设格式的操作记录写入内存队列;目标系统65用于从所述内存队列中提取所述预设格式的操作记录,执行所述预设格式的操作记录中包含的操作,其中所述目标系统为分布式数据库。

在一个实施例中,数据交换装置62还用于从所述内存队列中提取所述预设格式的操作记录,执行所述预设格式的操作记录中包含的操作,并将执行结果写入目标系统,其中所述目标系统为分布式数据库。

在一个实施例中,所述数据交换装置62还用于,将所述操作记录转换为预设格式的操作记录,以提高数据交换装置与源数据库及目标系统的耦合率;所述预设格式的操作记录包括以下字段:源数据库的库名、源数据库中包含的表的表名、以及源数据库中运行的实例的实例名。

在一个实施例中,目标系统65采用多线程的方式从所述内存队列中提取操作记录,和/或所述目标系统采用多线程的方式执行所述操作记录中包含的操作。

在一个实施例中,为了提高数据交换效率,设置多个内存队列,同时在数据交换装置中设置多个获取单元、写入单元。下面结合图7详细描述根据本发明实施例的目标系统采用多线程的方式从内存队列中提取预设格式的操作记录,和/采用多线程的方式执行提取的所述预设格式的操作记录中包含的操作的具体工作过程。

参见图7所示,数据转换装置72将从源数据库71的日志文件中提取的操作记录转换为预设格式的操作记录并分别将其存储于五个内存队列中,分别为第一内存队列731、第二内存队列732……第五内存队列735;而目标系统75采用多线程的方式从内存队列73中提取的预设格式的操作记录并执行。

在一个实施例中,还可以包括数据转换装置74,目标系统75可通过数据转换装置74从内存队列73中提取预设格式的操作记录,并通过数据转换装置74执行操作记录中包含的操作并将执行结果写入目标系统75。

在此提出,数据转换装置74中可以包括多个获取单元(获取单元741、获取单元761、获取单元771、获取单元781、获取单元791)和多个写入单元(写入单元743、写入单元763、写入单元773、写入单元783、写入单元793)。其中,获取单元741、获取单元761、获取单元771、获取单元781、获取单元791可以采用多线程的方式分别从不同的内存队列中提取预设格式的操作记录;和/或写入单元743、写入单元763、写入单元773、写入单元783、写入单元793可采用多线程的方式执行预设格式的操作记录中包含的操作并将执行结果写入目标系统75,作为一种可选的方案,一个写入单元与一个获取单元对应。

可以看出,上述未涉及到数据转换装置74的转换单元,若需要对获取单元提取的预设格式的操作记录做转换等操作,可以设置转换单元,可耦合在获取单元741与写入单元743之间;其中,转换单元可以与数据转换装置74的获取单元一一对应,也可以转换单元的数量少于数据转换装置的获取单元的数量,依据需求而设定,在此对其数量不做限制。

本发明的方法的操作步骤与装置及系统的结构特征对应,可以相互参照,不再一一赘述。

综上所述,根据本发明提供的上述技术方案,从获取的源数据库的日志文件中提取操记录并将操作记录转换为预设格式的操作记录,根据提取的预设格式的操作记录更新目标系统,本方案将提取的操作记录转换为预设格式的操作记录,能匹配多种类型的源数据库及目标系统,本技术方案扩展性好、对源数据库系统和目标数据库系统的资源占用少、可适用于多种类型的源数据库且无需开发人员或维护人员手动处理便可完成跨系统数据交换。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

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