一种分布式数据库查询加速方法技术

技术编号:27287755 阅读:12 留言:0更新日期:2021-02-06 11:56
本发明专利技术涉及分布式数据库领域,具体提供了一种分布式数据库查询加速方法,将SQL层算子下推到存储层执行,所述存储层在拉取到数据后通过FPGA编程,将数据的解码及条件过滤在FPGA电路并行执行,只把符合条件的数据复制到SQL层;剩下的聚合算子直接在存储层FPGA模块并行执行,把聚合计算的结果返回给SQL层。与现有技术相比,本发明专利技术将SQL算子下推到存储层执行,由存储层在读取数据后直接进行本地计算,只返回符合条件的数据,极大减少了SQL层与存储层之间的数据吞吐量,达到提高海量数据查询分析性能的目的。能的目的。能的目的。

【技术实现步骤摘要】
一种分布式数据库查询加速方法


[0001]本专利技术涉及分布式数据库领域,具体提供一种分布式数据库查询加速方法。

技术介绍

[0002]CockroachDB(CRDB)是一个基于Google Spanner思想构建的开源分布式数据库系统,具有NoSQL对海量数据的存储管理能力,又保持了传统数据库支持的ACID和SQL等特性。
[0003]CockroachDB的存储层采用开源的RocksDB存储引擎,SQL层则是由Go语言开发,SQL层算子通过CGO类库(libroach)实现对存储引擎数据的读写,详细流程如图3所示。
[0004]由于RocksDB本身只支持键值格式的数据读写,在用户端发出SQL查询语句后,所有数据都需要从存储层复制到SQL层,再由SQL层算子执行条件过滤、聚合计算,在大数据量的OLAP分析场景下,这种计算方式是非常低效的,严重影响用户端的用户端的查询性能。

技术实现思路

[0005]本专利技术是针对上述现有技术的不足,提供一种实用性强的分布式数据库查询加速方法。
[0006]本专利技术解决其技术问题所采用的技术方案是:
[0007]一种分布式数据库查询加速方法,将SQL层算子下推到存储层执行,所述存储层在拉取到数据后通过FPGA编程,将数据的解码及条件过滤在FPGA电路并行执行,只把符合提交的数据复制到SQL层;
[0008]剩下的聚合算子直接在存储层FPGA模块并行执行,把聚合计算的结果返回给SQL层。
[0009]进一步的,具有以下步骤:
[0010]S1、SQL层发送查询请求到存储层;
[0011]S2、存储层Store对象调用libroach库查询;
[0012]S3、libroach调用键值数据库的迭代器逐行扫描数据;
[0013]S4、将扫描数据传送给FPGA;
[0014]S5、FPGA内的计算函数并发执行数据解析;
[0015]S6、libroach将符合条件的数据指针从C++库传送到Go语言层Store对象。
[0016]S7、存储层Store对象将数据从C++内存复制到GO内存;
[0017]S8、表读取器转SQL处理器执行;
[0018]S9、SQL处理器执行完毕,输出数据给客户端。
[0019]进一步的,在步骤S1中,SQL层的表读取器发送查询请求过滤扫描到存储层。
[0020]进一步的,在步骤S2中,存储层Store对象则是通过CGO调用到libroach库的范围查询方法,扫描符合条件的数据。
[0021]进一步的,在步骤S4中,将扫描到的数据传送给FPGA内的计算函数,并发执行对数据的条件过滤。
[0022]进一步的,在步骤S5中,FPGA内的计算函数并发执行,对每行键值数据解析为行格式,并解析条件表达式,过滤数据。
[0023]进一步的,在步骤S8中,表读取器读取到符合条件的行数据,转给下一个SQL处理器执行。
[0024]进一步的,在步骤S9中,SQL处理器执行完毕,通过处理器输出数据给客户端。
[0025]本专利技术的一种分布式数据库查询加速方法和现有技术相比,具有以下突出的有益效果:
[0026](1)本专利技术提出的一种分布式数据库查询加速方法将SQL算子下推到存储层执行,由存储层在读取数据后直接进行本地计算,只返回符合条件的数据,极大减少了SQL层与存储层之间的数据吞吐量,达到提高海量数据查询分析性能的目的。
[0027](2)在存储层利用FPGA技术,可以并行执行对数据的解码、条件过滤和聚合计算,提升SQL语句的整体执行效率。
[0028](3)通过本专利技术提出的方法可以加速分布式数据库大数据量的条件过滤及聚合类SQL语句的执行,满足海量数据的查询分析需求。
附图说明
[0029]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030]附图1是一种分布式数据库查询加速方法中SQL条件过滤下推流程图;
[0031]附图2是一种分布式数据库查询加速方法中SQL聚合计算下推流程图;
[0032]附图3是一种分布式数据库查询加速方法中
技术介绍
中原计算流程图。
具体实施方式
[0033]为了使本
的人员更好的理解本专利技术的方案,下面结合具体的实施方式对本专利技术作进一步的详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本专利技术保护的范围。
[0034]下面给出一个最佳实施例:
[0035]如图1所示,本实施例中的一种分布式数据库查询加速方法,将SQL层算子下推到存储层执行,所述存储层在拉取到数据后通过FPGA编程,将数据的解码及条件过滤在FPGA电路并行执行,只把符合提交的数据复制到SQL层;
[0036]剩下的聚合算子直接在存储层FPGA模块并行执行,把聚合计算的结果返回给SQL层。从而可以加速聚合算子的执行速度,并极大减少了SQL层与存储层之间的数据吞吐量,达到提高海量数据查询分析性能的目的。
[0037]具有以下步骤:
[0038]S1、SQL层的TableReader(表读取器)发送查询请求FilterScan(扫描过滤)到存储层,并附加如下条件:过滤“id>100”的数据。
[0039]S2、存储层Store对象则是通过CGO调用到libroach库的范围查询方法,扫描符合“id>100”条件的数据。
[0040]S3、libroach调用rocksdb(键值数据库)的迭代器逐行扫描数据。
[0041]S4、将扫描到的大量数据传送给FPGA内的计算函数,并发执行对数据的条件过滤。
[0042]S5、FPGA内的计算函数可并发执行,对每行Key-Value数据解析为行格式,并解析条件表达式,过滤“id>100”的数据。
[0043]S6、libroach将符合条件的数据指针从C++库传送到Go语言层Store对象。
[0044]S7、存储层Store对象将数据从C++内存复制到GO内存。
[0045]S8、TableReader(表读取器)读取到符合条件的行数据,转给下一个SQL处理器执行。
[0046]S9、SQL处理器执行完毕,通过Processor(处理器)输出数据给客户端。
[0047]如图2所示,对Count、Sum等聚合计算类的SQL算子也采用类似同样的步骤,在SQL层发起聚合计算的请求到存储层Store对象,Store对象通过CGO调用到libroach本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库查询加速方法,其特征在于,将SQL层算子下推到存储层执行,所述存储层在拉取到数据后通过FPGA编程,将数据的解码及条件过滤在FPGA电路并行执行,只把符合提交的数据复制到SQL层;剩下的聚合算子直接在存储层FPGA模块并行执行,把聚合计算的结果返回给SQL层。2.根据权利要求1所述的一种分布式数据库查询加速方法,其特征在于,具有以下步骤:S1、SQL层发送查询请求到存储层;S2、存储层Store对象调用libroach库查询;S3、libroach调用键值数据库的迭代器逐行扫描数据;S4、将扫描数据传送给FPGA;S5、FPGA内的计算函数并发执行数据解析;S6、libroach将符合条件的数据指针从C++库传送到Go语言层Store对象。S7、存储层Store对象将数据从C++内存复制到GO内存;S8、表读取器转SQL处理器执行;S9、SQL处理器执行完毕,输出数据给客户端。3.根据权利要求2所述的一种分布式数据库查询加...

【专利技术属性】
技术研发人员:贾德星张晖苑晓龙张炜刚
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

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

1