一种跨数据源的数据推送方法及装置
技术领域
本发明属于数据推送
技术领域
,特别涉及一种跨数据源的数据推送方法及装置。背景技术
现代互联网行业数据量级指数增加,各个公司都构建了自己的数据仓库存储数据,随着企业的发展,对数据的分析应用变得更加多样化。为了避免各个部门耦合性过高,通常采用HTTP网络传输的方式来实现从数据仓库提取数据并推送到其他部门,而各部门不同的数据需求需要单独开发程序实现数据传输。
发明内容
针对相关技术中的上述技术问题,本发明提出一种跨数据源的数据推送方法及装置,能够克服现有技术的上述不足。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种跨数据源的数据推送方法,该方法包括:
通过JSON封装数据传输需求;
解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集;
数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上。
进一步的,所述JSON中封装有数据生产方、数据传输速率、数据接收方。
进一步的,所述解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集,包括:
创建数据库的链接;
根据解析出的查询条件,依据链接从数据库里查询数据,获取数据;
将获取到的数据封装成若干格式化的数据集。
进一步的,所述数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上,包括:
根据对方接口配置创建HTTP链接;
将封装好的数据集通过HTTP网络协议传输到对方接口上,其中,判断数据是否发送成功的依据为:当发送成功时,则返回成功;当发送不成功时,返回失败,重复执行步骤:将封装好的数据集通过HTTP网络协议传输到对方接口上。
另一方面,本发明提供了一种跨数据源的数据推送装置,该装置包括:
第一封装单元,用于通过JSON封装数据传输需求;
第二封装单元,用于解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集;
传输单元,用于数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上。
进一步的,所述JSON中封装有数据生产方、数据传输速率、数据接收方。
进一步的,所述第二封装单元,包括:
创建数据库的链接;
根据解析出的查询条件,依据链接从数据库里查询数据,获取数据;
将获取到的数据封装成若干格式化的数据集。
进一步的,所述传输单元,包括:
根据对方接口配置创建HTTP链接;
将封装好的数据集通过HTTP网络协议传输到对方接口上,其中,判断数据是否发送成功的依据为:当发送成功时,则返回成功;当发送不成功时,返回失败,重复执行步骤:将封装好的数据集通过HTTP网络协议传输到对方接口上。
本发明的有益效果:本发明通过简单的参数配置,即可以查询不同数据源的数据,又可以调整HTTP网络传输数据时的速度与失败重试次数,避免了大量的开发编译工作;本发明通过PrestoDB的数据源可扩展性,匹配了不同公司的不同数据库选择。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本发明实施例的一种跨数据源的数据推送方法的流程框图;
图2示出了根据本发明实施例的一种跨数据源的数据推送装置的结构示意图;
图3示出了根据本发明实施例的数据传输模块的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一种跨数据源的数据推送方法,该方法包括:
通过JSON封装数据传输需求;
解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集;
数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上。
在本发明的一些实施例中,所述JSON中封装有数据生产方、数据传输速率、数据接收方。
在本发明的一些实施例中,所述解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集,包括:
创建数据库的链接;
根据解析出的查询条件,依据链接从数据库里查询数据,获取数据;
将获取到的数据封装成若干格式化的数据集。
在本发明的一些实施例中,所述数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上,包括:
根据对方接口配置创建HTTP链接;
将封装好的数据集通过HTTP网络协议传输到对方接口上,其中,判断数据是否发送成功的依据为:当发送成功时,则返回成功;当发送不成功时,返回失败,重复执行步骤:将封装好的数据集通过HTTP网络协议传输到对方接口上。
如图2所示,另一方面,本发明提供了一种跨数据源的数据推送装置,该装置包括:
第一封装单元,用于通过JSON封装数据传输需求;
第二封装单元,用于解析JSON获得不同数据库的查询请求,查询数据,将数据封装成数据集;
传输单元,用于数据传输模块通过HTTP网络传输的方式将封装好的数据集发送到对应的接口上。
在本发明的一些实施例中,所述JSON中封装有数据生产方、数据传输速率、数据接收方。
在本发明的一些实施例中,所述第二封装单元,包括:
创建数据库的链接;
根据解析出的查询条件,依据链接从数据库里查询数据,获取数据;
将获取到的数据封装成若干格式化的数据集。
在本发明的一些实施例中,所述传输单元,包括:
根据对方接口配置创建HTTP链接;
将封装好的数据集通过HTTP网络协议传输到对方接口上,其中,判断数据是否发送成功的依据为:当发送成功时,则返回成功;当发送不成功时,返回失败,重复执行步骤:将封装好的数据集通过HTTP网络协议传输到对方接口上。
本发明包括JSON生成模块、JSON解析模块、数据解析模块、数据传输模块以及工具使用方法,使用JAVA编译开发。
1.JSON生成模块,用于描述数据三要素:数据生产方、数据传输速率、数据接收方。
jobName记录了该服务名称,envName记录其执行环境,batchSize记录了数据传输中每批次封装的数据量。
reader用于封装数据库配置,其中包括数据库类型type(如hive)、数据库登录名称、密码以及查询SQL等。数据库可以是多种数据源,如hive、MySQL以及所有可以使用PrestoDB查询的数据库,针对不同的业务需求,封装不同的查询SQL即可。PrestoDB是一个内存计算框架,可以链接很多种数据库,因此本发明可以依靠PrestoDB的这个特性扩展数据源。
writer用于封装数据接收方相关配置,如http接口url、http接口的接入方式(get,post等)、数据字段别名配置以及失败重试次数等。
2.JSON解析模块
通过一个JAVA实现类封装JSON条件,其中需要具备以下内容:
a.环境名称(envName):表示该配置所属的环境,此处可以配置不同的环境,如开发环境,测试环境等;
b.任务名称(jobName):表示该任务名称;
c.批量数量(batchSize):表示每一批最多可以发送多少条数据,如50;
d.数据流读取(reader):此项封装了数据库的查询条件;
e.数据流输出(writer):此项封装的是HTTP网络协议接口的配置信息。
3.数据解析模块
此模块是reader模型的执行模块。一共可以分为三步,一是创建数据库的链接,数据库可以是MySQL,HIVE,PRESTO,MONGO,REDIS等,二是根据解析出的查询条件执行查询,获取数据,三是将查询到的数据封装成若干格式化的数据集。
4.数据传输模块
如图3所示,在数据解析模块执行完成后,本发明将通过数据传输模块将封装好的数据集通过HTTP网络传输的方式发送到对应的接口上。
a根据对方接口配置创建HTTP链接;
b将封装好的数据集通过HTTP网络协议传输到对方接口上;
c判断数据是否发送成功,如果发送成功则返回“成功”,当发送不成功时返回“失败”,并执行重试机制,即重新执行步骤b。
5.装置使用方法
此装置使用JAVA开发,运行在配置有JDK的虚拟机上。可以依靠crontab、Azkaban等调度工具执行。
使用前只需要根据需求配置好对应的JSON,即conf.properties。其启动命令为:
java-jar database-to-http.jar conf.properties。
本发明通过简单的参数配置,即可以查询不同数据源的数据,又可以调整HTTP网络传输数据时的速度与失败重试次数,避免了大量的开发编译工作;本发明通过PrestoDB的数据源可扩展性,匹配了不同公司的不同数据库选择。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。