一种OLTP领域多表join查询的方法技术

技术编号:34964794 阅读:20 留言:0更新日期:2022-09-17 12:45
本发明专利技术公开了一种OLTP领域多表join查询的方法,属于数据查询技术领域,包括在业务系统中发布宽表生成的配置规则并保存;对Mysql数据库中的Binlog数据进行抓取、转化并写入kafka处理平台中;加载配置规则,从kafka处理平台中获取数据,由flink流处理引擎实时计算并生成宽表数据;将生成的宽表数据存储至服务器中并经搜索引擎提供数据查询。本发明专利技术设计科学合理,使用方便,在业务系统进行数据库的增改查的过程中,无需关注宽表的逻辑,仅需宽表生成的配置规则,从kafka处理平台中获取数据,由flink流处理引擎实时计算,借助服务器的海量存储能力,形成业务数据以供查询。形成业务数据以供查询。形成业务数据以供查询。

【技术实现步骤摘要】
一种OLTP领域多表join查询的方法


[0001]本专利技术属于数据查询
,具体涉及一种OLTP领域多表join查询的方法。

技术介绍

[0002]在传统的OLTP领域,即关系型数据库中,系统需要实现大的列表查询,在需要列表查询时,运行驱动表 join连接多个被驱动表,然后在内存中生成所需的列表数据。如果关联的数据表少、列表的字段少、表中的数据体量不大、QPS(每秒查询率)不高的场景下,这种处理方式还可以支撑。但是在关联的数据表多、表中的数据体量较大的情况下,以此种这种方式支撑的系统查询对于硬件资源要求及系统运维人员的要求就会很高。
[0003]虽然在业界,也有很多基于Elasticsearch分布式搜索工具来存储大宽表,但是在OLTP领域里面,对于Elasticsearch的document构建来说,还是基于传统业务代码的硬编码处理。如此,导致宽表生成代码和真正的业务逻辑代码耦合,系统维护成本非常高,并且在难以维系超大数据量,成为所属
技术人员亟待解决的技术问题。
[0004]因此,本专利技术提供了一种OLTP领域多表join查询的方法,以至少解决上述部分技术问题。

技术实现思路

[0005]本专利技术要解决的技术问题是:提供一种OLTP领域多表join查询的方法,以至少解决上述部分技术问题。
[0006]为实现上述目的,本专利技术采用的技术方案如下:一种OLTP领域多表join查询的方法,包括以下步骤:步骤S1、在业务系统中发布宽表生成的配置规则并保存;步骤S2、对Mysql数据库中的Binlog数据进行抓取、转化并写入kafka处理平台中;步骤S3、加载配置规则,从kafka处理平台中获取Binlog数据,由flink流处理引擎实时计算并生成宽表数据;步骤S4、将生成的宽表数据存储至服务器中并经搜索引擎提供数据查询。
[0007]进一步地,所述步骤S2中,将抓取的binlog数据转化为json格式并写入kafka处理平台中。
[0008]进一步地,所述步骤S1中,配置规则包括驱动表的存储结构和被驱动表的存储结构,驱动表的存储结构包括宽表名称、宽表中各驱动表、驱动表对应的关联键、驱动表需要查询的字段以及join引起的数据延迟时间,被驱动表的存储结构包括宽表名称、宽表中各被驱动表、被驱动表对应的关联键以及被驱动表需要查询的字段。
[0009]进一步地,所述步骤S2中,一个Mysql数据库的数据表对应kafka处理平台的一个数据流集合,并建立Mysql数据库的数据表和数据流集合的映射关系。
[0010]进一步地,所述步骤S3具体包括:步骤S31、由配置规则解析出Binlog数据对应的驱动表和被驱动表,根据映射关系在flink流处理引擎中生成数据源,由数据源形成多个数
据流;步骤S32、由配置规则中的关联键将数据流依次连接形成一个链式的join流程,形成多流join的逻辑计划,由flink流处理引擎将逻辑计划转化为物理执行计划;步骤S33、通过自定义数据Sink,将物理执行计划生成的数据写入搜索服务器中以供数据查询。
[0011]进一步地,所述一个链式的join流程的形成方法具体包括:步骤S321,将输入的驱动表的数据流与第一个被驱动表的数据流关联形成连接流,再通过关联键进行hash分区,将数据流中基于相同关联键的数据分发至数据流集合的同一个patition中;步骤S322、采用延迟关联技术处理所述驱动表和被驱动表的数据,处理驱动表的数据时将驱动表和与驱动表相关联的被驱动表数据同时存放至flink流处理引擎的存储后端中,然后在驱动表的数据上注册一个定时器,当定时器触发时对驱动表的数据流和被驱动表的数据流关联并将关联好的连接流数据发送至下游;步骤S323、所述关联好的连接流继续关联被驱动表的数据直至关联至最后一个被驱动表,最终形成一个大宽表的逻辑构建。
[0012]进一步地,所述存储后端为RocksDB存储引擎。
[0013]进一步地,所述搜索引擎为Elasticsearch搜索引擎。
[0014]与现有技术相比,本专利技术具有以下有益效果:本专利技术设计科学合理,使用方便,解决了现有宽表生成代码易与业务逻辑代码耦合、系统维护成本高、以及其维系数据量大的技术问题。业务系统在进行数据库的增删改差的过程中,无需关注宽表的逻辑,仅需宽表生成的配置规则,从kafka处理平台中获取数据,由flink流处理引擎实时计算,借助服务器的海量存储能力,形成业务数据以供查询。本专利技术基于配置规则,用于清晰管理数据源与宽表的逻辑关系;基于flink流处理引擎天然的流式计算能力,具有较高的系统吞吐量,实现任务的横向扩展能力,提高整个系统的数据处理能力;借助服务器的海量分布式存储能力完成数据表全生命周期的数据存储业务;借助搜索引擎的全文索引能力,实现对宽表任意字段搜索,具有多维度的查询能力,避免了业务系统对查询维度的限制。
附图说明
[0015]图1为本专利技术方法流程图。
[0016]图2为本专利技术实施例中的一个驱动表的存储结构示意图。
[0017]图3为本专利技术实施例中的一个被驱动表的存储结构示意图。
具体实施方式
[0018]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进一步详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0019]术语解释:OLTP为On

Line Transaction Processing,表示联机事务处理过程;Join为程序语言,表示字符串,该字符串由包含在数组中的许多子字符串联接创建;MySQL为一种关系型数据库管理系统;
Binlog为二进制日志;flink为一种开源流处理框架;Kafka为一种开源流处理平台;kafka

connector为一种流式传输数据的框架;debezium为一种捕获数据更改的平台;JSON为JavaScript Object Notation,为一种轻量级的数据交换格式;RichSinkFunction为flink框架中的一种抽象的数据输出函数;Elasticsearch为一个搜索服务器;hash为散列函数;partition为一种计算机编程函数;RocksDB 是一种可嵌入式的支持持久化的存储系统;document为计算机术语,每一个载入浏览器的超文本标记语言文档都会成为document 对象。
[0020]如图1所示,本专利技术提供的一种OLTP领域多表join查询的方法,包括以下步骤:步骤S1、在业务系统中发布宽表生成的配置规则并保存;步骤S2、对Mysql数据库中的Binlog数据进行抓取、转化并写入kafka处理平台中;步骤S3、加载配置规则,从kafka处理平台中获取Binlog数据,由flink流处理引擎实时计算并生成宽表数据;步骤S4、将本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种OLTP领域多表join查询的方法,其特征在于,包括以下步骤:步骤S1、在业务系统中发布宽表生成的配置规则并保存;步骤S2、对Mysql数据库中的Binlog数据进行抓取、转化并写入kafka处理平台中;步骤S3、加载配置规则,从kafka处理平台中获取Binlog数据,由flink流处理引擎实时计算并生成宽表数据;步骤S4、将生成的宽表数据存储至服务器中并经搜索引擎提供数据查询。2.根据权利要求1所述的一种OLTP领域多表join查询的方法,其特征在于,所述步骤S2中,将抓取的binlog数据转化为json格式并写入kafka处理平台中。3.根据权利要求1所述的一种OLTP领域多表join查询的方法,其特征在于,所述步骤S1中,配置规则包括驱动表的存储结构和被驱动表的存储结构,驱动表的存储结构包括宽表名称、宽表中各驱动表、驱动表对应的关联键、驱动表需要查询的字段以及join引起的数据延迟时间,被驱动表的存储结构包括宽表名称、宽表中各被驱动表、被驱动表对应的关联键以及被驱动表需要查询的字段。4.根据权利要求3所述的一种OLTP领域多表join查询的方法,其特征在于,所述步骤S2中,一个Mysql数据库的数据表对应kafka处理平台的一个数据流集合,并建立Mysql数据库的数据表和数据流集合的映射关系。5.根据权利要求4所述的一种OLTP领域多表join查询的方法,其特征在于,所述步骤S3具体包括:步骤S31、由配置规则解析出Binlog数据对应的驱动表...

【专利技术属性】
技术研发人员:韩雷马洋
申请(专利权)人:中建电子商务有限责任公司
类型:发明
国别省市:

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

1