[发明专利]一种基于RDMA的分布式内存数据库查询引擎系统有效
申请号: | 201710455604.9 | 申请日: | 2017-06-16 |
公开(公告)号: | CN107329814B | 公开(公告)日: | 2020-05-26 |
发明(设计)人: | 段翰聪;陈超;郭江涛;梁君健;李博洋;闵革勇;李林;张建 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50;G06F16/25;G06F16/245;H04L12/803 |
代理公司: | 成都行之专利代理事务所(普通合伙) 51220 | 代理人: | 田甜 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 rdma 分布式 内存 数据库 查询 引擎 系统 | ||
1.一种基于RDMA的分布式内存数据库查询引擎系统,其特征在于,所述系统包括:
多个查询引擎模块、任务调度模块、元数据信息收集模块、任务执行模块;其中,查询引擎模块包括主查询引擎模块和从查询引擎模块;元数据信息收集模块从分布式内存数据库存储引擎收集数据分布情况,为每张表的每个列生成统计信息;主查询引擎模块基于关系代数的变换将SQL语句解析为逻辑计划,将逻辑计划发送给任务调度模块;任务调度模块根据执行引擎数据分布情况和RDMA的数据传输特性,生成物理计划将物理计划发送给查询引擎模块;主查询引擎模块根据物理计划生成至少两个子任务,并将子任务下发到多个从查询引擎模块;从查询引擎模块将子任务加入任务队列,当前任务完成后,通过RDMA的方式,将数据发送给后继子任务,所有子任务完成后,通知客户端在从查询引擎系统获取结果数据;
所述系统的处理流程为:
步骤1:元数据收集模块从分布式内存数据库存储引擎收集数据分布情况,为每张表的每个列生成统计信息,即数据分布图;
步骤2:客户端将SQL语句发送给查询引擎模块,根据负载均衡策略指定一个主查询引擎模块;
步骤3:主查询引擎模块将SQL语句解析为执行计划,并将执行计划发送给任务调度模块;
步骤4:任务调度模块基于数据分布图,将所查询的列的数据平均地分为n份,总份数n等于所有从查询引擎模块的所有机器总核数,将执行计划中的每个子任务分为n个,生成新的任务执行DAG图,在新的任务执行DAG图中,前置子任务将数据发送给多个后继子任务;
步骤5:为每个子任务指定物理机IP后,将任务发送部署到物理机。
2.根据权利要求1所述的基于RDMA的分布式内存数据库查询引擎系统,其特征在于,负载均衡策略为所有的查询引擎模块都有一个任务队列,选择任务队列中任务最少的那一个。
3.根据权利要求1所述的基于RDMA的分布式内存数据库查询引擎系统,其特征在于,所述步骤4具体包括:
步骤4-1:任务调度模块基于数据分布图,将所查询的列的数据平均地分为n份,总份数n等于所有从查询引擎模块的所有机器总核数,将执行计划中的每个子任务分为n个,前驱和后继子任务通过预设的数据传输规则,将分裂后的子任务关联起来,生成新的任务执行DAG图;
步骤4-2:在新的任务执行DAG图中,Round-robin调度策略前置子任务将数据发送给多个后继子任务,使后继所有子任务处于一台物理机。
4.根据权利要求1所述的基于RDMA的分布式内存数据库查询引擎系统,其特征在于,所述步骤5具体包括:
步骤5.1:任务执行完毕后,如果没有后继子任务,通知客户端获取SQL语句查询结果,否则通过RDMA网络,将数据发送给后继子任务;
步骤5.2:对RDMA网络接口进行封装,提供前后任务基于Hash分布和Range分布的消息队列语义;
步骤5.3:后继子任务接受到前驱任务的消息后,判定自身是否可以执行,判定规则为是否接受前驱任务所有数据,任务执行完毕后,重复步骤5.1。
5.根据权利要求4所述的基于RDMA的分布式内存数据库查询引擎系统,其特征在于,提供前后任务基于Hash分布和Range分布的消息队列语义通过以下两个步骤实现:首先基于RDMA网络提供上层的同步非阻塞网络编程框架,然后在框架上层提供消息队列语义。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710455604.9/1.html,转载请声明来源钻瓜专利网。