数据采集方法、装置、存储介质和电子设备
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据采集方法、装置、存储介质和电子设备。
背景技术
目前,数据框架canal和分析程序Open Replicator,均是基于文件MySQL binlog进行分析的开源项目。其中,数据框架canal基于数据库增量日志解析,提供增量数据订阅和消费,在文件binlog分析的基础上进行了封装,仅支持关系型数据库Mysql的增量采集,而不支持其它关系型数据库的增量采集,而且不支持将数据写入目标数据源;分析程序Open Replicator也仅仅提供了文件binlog解析。这样在需要对多个关系型数据库的数据进行采集时,需要为每个关系型数据库单独开发代码,从而导致数据采集效率低。
针对现有技术中的数据采集效率低的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种数据采集方法、装置、存储介质和电子设备,以至少解决数据采集效率低的技术问题。
为了实现上述目的,根据本发明的一个方面,提供了一种数据采集方法。该方法可以包括:通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;将采集到的目标关系型数据库的增量数据写入目标数据源中。
可选地,在通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之前,该方法还包括:开启目标关系型数据库的增量采集配置功能,其中,增量采集配置功能用于允许开源项目客户端采集目标关系型数据库的增量数据。
可选地,在将采集到的目标关系型数据库的增量数据写入目标数据源中之前,该方法还包括:获取目标关系型数据库的原数据表结构,其中,原数据表结构为待采集的增量数据的表结构。
可选地,将采集到的目标关系型数据库的增量数据写入目标数据源中,包括:将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构;将目标数据表结构的增量数据写入目标数据源中。
可选地,将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构,包括:获取第一目标指令,其中,第一目标指令用于指示对原数据表结构进行转化;响应第一目标指令,以将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构。
可选地,将采集到的目标关系型数据库的增量数据写入目标数据源中,包括:获取第二目标指令,其中,第二目标指令用于指示对增量数据进行写入操作;响应第二目标指令,以将采集到的目标关系型数据库的增量数据写入目标数据源中。
可选地,增量数据的类型包括以下至少之一:增加类型;更新类型;删除类型。
可选地,目标数据源为数据仓库工具。
为了实现上述目的,根据本发明的另一方面,提供了一种数据采集装置。该装置可以包括:采集单元,用于通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;写入单元,用于将采集到的目标关系型数据库的增量数据写入目标数据源中。
为了实现上述目的,根据本发明的另一方面,提供了一种存储介质。该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行本发明实施例的数据采集方法。
为了实现上述目的,根据本发明的另一方面,提供了一种电子设备。该电子设备包括至一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执本发明实施例的数据采集方法。
通过本发明,采用通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;将采集到的目标关系型数据库的增量数据写入目标数据源中。也就是说,本申请通过开源项目客户端实现对至少一个关系型数据库的采集,并不需要为每个关系型数据库单独开发代码,可以实现代码的复用,减少重复劳动,并且可以将增量采集的数据写入目标数据源中,从而达到了提高数据采集效率的技术效果,进而解决了数据采集效率低的技术问题。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据采集方法的流程图;
图2是根据本发明实施例的一种数据采集装置的示意图;以及
图3是根据本发明实施例的一种电子设备的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
本发明实施例提供了一种数据采集方法。
图1是根据本发明实施例的一种数据采集方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤S102,通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据。
在本发明上述步骤S102提供的技术方案中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库。
在该实施例中,开源项目可以为开源项目Debezium,从而该实施例的开源项目客户端可以为开源项目Debezium客户端,该开源项目客户端可以支持至少一个关系型数据库。其中,开源项目Debezium可以为捕获数据更改(Change Data Capture,简称为CDC)提供一个低延迟的流式处理平台,可以安装并且配置开源项目Debezium去监控数据库,然后应用就可以对数据库中的每一个行级别(row-level)的数据进行更改。其中,只有已提交的更改才是可见的,所以可以避免应用对应的事务(transaction)或者更改会被回滚(rollback)。另外,开源项目Debezium为所有的数据库更改事件提供了一个统一的模型,所以可以避免每一种数据库管理系统的错综复杂性。由于开源项目Debezium通过使用持久化的、有副本备份的日志来记录数据库数据变化的历史,因而应用可以随时停止再重启,而不会错过它停止运行时发生的事件,从而可以保证所有的事件都能被正确地、完全地处理掉。
在该实施例中,数据库可以包括至少一个关系型数据库,先启动开源项目客户端,采用启动后的开源项目客户端对至少一个关系型数据库中的目标关系型数据库进行监控,如果监控到目标关系型数据库中存在增量数据,则采集该目标关系型数据库的增量数据,该增量数据为该目标关系型数据库中的发生变化的数据,可以为结构化的数据文件,需要对其进行采集,也即,进行增量采集。其中,该实施例的关系型数据库可以包括但不限于关系型数据库Mysql、关系型数据库Oracle、关系型数据库Postgresql或关系型数据库SQLServer,从而避免了现有的数据框架仅支持关系型数据库Mysql的增量采集,不支持关系型数据Oracle、关系型数据SQL Server和关系型数据Postgresql的增量采集。
可选地,该实施例可以通过编写代码,使得开源项目客户端连接目标关系型数据库,比如,连接关系型数据库Mysql,以进行增量采集。
可选地,该实施例新建一个开源项目客户端,并对其进行多项配置,在配置完成之后,开始将其连接至目标关系型数据库,对目标关系型数据库进行日志监听,一旦监听到目标关系型数据库中的数据有变动,即可将其中变化的数据采集过来。
该实施例的开源项目客户端可以采样相同的的代码采集至少一个关系型数据库中的目标关系型数据库的增量数据,也即,用于采集增量数据的代码是可以进行复用的,以实现对多个关系型数据库的采集,不用每次在采集关系型数据库中的增量数据时重复编码,从而减少重复劳动。
步骤S104,将采集到的目标关系型数据库的增量数据写入目标数据源中。
在本发明上述步骤S104提供的技术方案中,在通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之后,可以将采集到的目标关系型数据库的增量数据写入目标数据源中。
在该实施例中,目标数据源可以为数据仓库工具,比如,为数据仓库工具Hive,该Hive是基于分布式系统基础架构Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的结构化查询语言(Structured Query Language,简称为SQL)的查询功能,可以将SQL语句转换为编程模型MapReduce任务进行运行,其学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,而不必开发专门的MapReduce应用,从而十分适合数据仓库的统计分析。
该实施例将采集到的目标关系型数据库的增量数据写入目标数据源中,从而避免了现有的数据框架不支持将数据写入目标数据源的问题。
通过本申请上述步骤S102至步骤S104,采用通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;将采集到的目标关系型数据库的增量数据写入目标数据源中。也就是说,本申请通过开源项目客户端可以实现对至少一个关系型数据库的采集,并不需要为每个关系型数据库单独开发代码,可以实现代码的复用,减少重复劳动,并且可以将增量采集的数据写入目标数据源中,从而达到了提高数据采集效率的技术效果,进而解决了数据采集效率低的技术问题。
下面对该实施例的上述方法进行进一步介绍。
作为一种可选的实施方式,在步骤S102,通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之前,该方法还包括:开启目标关系型数据库的增量采集配置功能,其中,增量采集配置功能用于允许开源项目客户端采集目标关系型数据库的增量数据。
在该实施例中,目标关系型数据库具有增量采集配置功能,用于使开源项目客户端采集增量数据,从而在通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之前,可以对目标关系型数据库进行设置,需要开启目标关系型数据库的增量采集配置功能,以使得目标关系型数据库支持增量采集。
可选地,该实施例在对目标关系型数据库进行设置时,可以打开数据库的binlog设置,比如,打开Mysql的binlog设置,进行如下设置:
[mysqld]
log-bin=mysql-bin#添加这一行的设置;
binlog-format=ROW#选择行(row)模式的设置。
可选地,该实施例创建用户并赋予权限可以通过如下实现:
CREATE USER debezium IDENTIFIED BY'debezium';
GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON*.*TO'debezium'@'%';
--GRANT ALL PRIVILEGES ON*.*TO'debezium'@'%';
FLUSH PRIVILEGES。
作为一种可选的实施方式,在步骤S104,将采集到的目标关系型数据库的增量数据写入目标数据源中之前,该方法还包括:获取目标关系型数据库的原数据表结构,其中,原数据表结构为待采集的增量数据的表结构。
在该实施例中,在将采集到的目标关系型数据库的增量数据写入目标数据源中之前,可以获取要采集的目标关系型数据库的原数据表结构,也即,获取需要采集的增量数据的数据表的表结构,以将其转化为目标数据源支持的目标数据表结构,比如,转化为数据仓库工具Hive所支持的目标数据表结构,从而实现对目标数据表结构的创建。
作为一种可选的实施方式,步骤S104,将采集到的目标关系型数据库的增量数据写入目标数据源中,包括:将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构;将目标数据表结构的增量数据写入目标数据源中。
在该实施例中,在将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构之后,可以将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构,得到目标数据表结构的增量数据,进而可以将目标数据表结构的增量数据写入目标数据源中,从而达到将增量数据映射为数据库表写入到目标数据源中的目的。
作为一种可选的实施方式,将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构,包括:获取第一目标指令,其中,第一目标指令用于指示对原数据表结构进行转化;响应第一目标指令,以将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构。
在该实施例中,在实现将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构时,可以先获取第一目标指令,该第一目标指令可以为用于将原数据表结构转换为目标数据源所支持的实现创建目标数据表结构的程序代码语句,进而对其进行执行,创建目标数据表结构,从而实现了将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构的目的。
作为一种可选的实施方式,步骤S104,将采集到的目标关系型数据库的增量数据写入目标数据源中,包括:获取第二目标指令,其中,第二目标指令用于指示对增量数据进行写入操作;响应第二目标指令,以将采集到的目标关系型数据库的增量数据写入目标数据源中。
在该实施例中,在实现将采集到的目标关系型数据库的增量数据写入目标数据源中时,可以先获取第二目标指令,该第二目标指令用于指示对增量数据进行写入操作,可以先指示将增量数据转换为目标数据源所支持的数据,其中,目标数据源具有支持事务性更新的特性,进而利用目标数据源支持事务性更新的特性,指示将转换后的增量数据写入目标数据源中,比如,写入数据仓库工具Hive中。
作为一种可选的实施方式,增量数据的类型包括以下至少之一:增加类型;更新类型;删除类型。
在该实施例中,在开源项目客户端启动之后,开始采集数据,采集到的增量数据的类型可以包括增加类型、更新类型、删除类型,其中,增加类型用于指示数据的变化形式为增加,更新类型用于指示数据的变化形式为更新,删除类型用于指示数据的变化形式为删除。
该实施例通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;将采集到的目标关系型数据库的增量数据写入目标数据源中。也就是说,本申请通过开源项目客户端实现对至少一个关系型数据库的采集,并不需要为每个关系型数据库单独开发代码,可以实现代码的复用,减少重复劳动,并且可以将增量采集的数据写入目标数据源中,从而达到了提高数据采集效率的技术效果,进而解决了数据采集效率低的技术问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例2
本发明实施例还提供了一种数据采集装置。需要说明的是,该实施例的数据采集装置可以用于执行本发明实施例的数据采集方法。
图2是根据本发明实施例的一种数据采集装置的示意图。如图2所示,该数据采集装置20可以包括:采集单元21和写入单元22。
采集单元21,用于通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库。
写入单元22,用于将采集到的目标关系型数据库的增量数据写入目标数据源中。
可选地,该装置还包括:开启单元,用于在通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之前,开启目标关系型数据库的增量采集配置功能,其中,增量采集配置功能用于允许开源项目客户端采集目标关系型数据库的增量数据。
可选地,该装置还包括:获取单元,用于在将采集到的目标关系型数据库的增量数据写入目标数据源中之前,获取目标关系型数据库的原数据表结构,其中,原数据表结构为待采集的增量数据的表结构。
可选地,写入单元22包括:写入模块,用于将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构;将目标数据表结构的增量数据写入目标数据源中。
可选地,转换单元包括:第一确定模块,用于获取第一目标指令,其中,第一目标指令用于指示对原数据表结构进行转化;第一响应模块,用于响应第一目标指令,以将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构。
可选地,写入单元22包括:第二确定模块,用于获取第二目标指令,其中,第二目标指令用于指示对增量数据进行写入操作;第二响应模块,用于响应第二目标指令,以将采集到的目标关系型数据库的增量数据写入目标数据源中。
可选地,增量数据的类型包括以下至少之一:增加类型;更新类型;删除类型。
可选地,目标数据源为数据仓库工具。
在该实施例中,采集单元21通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;通过写入单元22将采集到的目标关系型数据库的增量数据写入目标数据源中。也就是说,本申请通过开源项目客户端实现对多个关系型数据库的采集,并不需要为目标关系型数据库单独开发代码,可以实现代码的复用,可以减少重复劳动,并且可以将增量采集的数据写入目标数据源中,从而达到了提高数据采集效率的技术效果,进而解决了数据采集效率低的技术问题。
实施例3
在该实施例中,所述数据采集装置包括处理器和存储器,上述采集单元21和写入单元22均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来达到提高数据采集效率的技术效果的目的。
实施例4
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据采集方法。
实施例5
图3是根据本发明实施例的一种电子设备的示意图。如图3所示,该电子设备30包括至少一个处理器301、以及与处理器301连接的至少一个存储器302、总线303;其中,处理器301、存储器302通过总线303完成相互间的通信;处理器301用于调用存储器302中的程序指令,以执行上述的数据采集方法。本文中的电子设备30可以是服务器、PC、PAD、手机等。
实施例6
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据,其中,增量数据为目标关系型数据库中的发生变化的数据,其中,开源项目客户端支持至少一个关系型数据库;将采集到的目标关系型数据库的增量数据写入目标数据源中。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在通过开源项目客户端采集至少一个关系型数据库中的目标关系型数据库的增量数据之前,开启目标关系型数据库的增量采集配置功能,其中,增量采集配置功能用于允许开源项目客户端采集目标关系型数据库的增量数据。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在将采集到的目标关系型数据库的增量数据写入目标数据源中之前,获取目标关系型数据库的原数据表结构,其中,原数据表结构为待采集的增量数据的表结构。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构;将目标数据表结构的增量数据写入目标数据源中。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:获取第一目标指令,其中,第一目标指令用于指示对原数据表结构进行转化;响应第一目标指令,以将采集到的目标关系型数据库的增量数据的表结构由原数据表结构转化为目标数据表结构。
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:获取第二目标指令,其中,第二目标指令用于指示对增量数据进行写入操作;响应第二目标指令,以将目标关系型数据库的增量数据写入目标数据源中。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种用于智慧城市的公共信息管理系统