[发明专利]一种面向分布式内存数据库查询引擎的数据分发方法有效
申请号: | 201710441736.6 | 申请日: | 2017-06-13 |
公开(公告)号: | CN107169138B | 公开(公告)日: | 2020-07-14 |
发明(设计)人: | 段翰聪;滕旭华;孔逸通;李博洋;陈超;闵革勇;张建 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453;G06F16/2458;G06F16/27 |
代理公司: | 成都行之专利代理事务所(普通合伙) 51220 | 代理人: | 郭受刚 |
地址: | 610000 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 分布式 内存 数据库 查询 引擎 数据 分发 方法 | ||
本发明公开了一种面向分布式内存数据库查询引擎的数据分发方法,所述方法包括:数据库查询引擎中的前置算子计算完成后,数据库查询引擎对计算完成后的数据进行切分,然后将切分后的数据分发给数据库查询引擎中的后继算子,通过该数据分发策略,可以避免后继任务数目的减少,大大提高了并行度,从而使得数据库查询引擎在计算过程中始终可以充分利用物理资源。
技术领域
本发明涉及数据库数据处理领域,具体地,涉及一种面向分布式内存数据库查询引擎的数据分发方法。
背景技术
数据库查询引擎负责执行数据查询任务的部分,接收用户的查询请求,向用户返回查询结果,屏蔽具体的查询执行过程。查询引擎对外提供标准SQL的查询接口,向用户返回与传统数据库系统相同组织形式的查询结果,可向上适配任意满足SQL标准的客户端或中间件。同时向下适配满足该查询引擎协议的列式存储系统。
数据库查询引擎其主要承担的职责或功能如下:
1、解析用户的SQL查询语句,生成查询计划;
2、基于规则和代价对查询计划进行优化,使之具有最小的预估执行代价;
3、与数据存储系统交互,执行查询计划,获取数据;
4、根据查询条件进行数据的计算和合并;
5、生成最终查询结果,返回给用户。
目前主流分布式内存数据库查询引擎的中间数据切分方式是固定的,但也因此限制了算子的扩展方式。如果算子的扩展方式被限制,则会导致任务并行度降低。因为SQL查询语句在查询引擎中会转换为一个DAG物理计划,如果在任务推进过程中数据无法二次切分,随着任务的推进,后继任务数目会越来越少,并行度必然大大降低。
综上所述,本申请发明人在实现本申请发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,现有的分布式内存数据库查询引擎存在限制了算子的扩展方式导致任务并行度降低的技术问题。
发明内容
本发明提供了一种面向分布式内存数据库查询引擎的数据分发方法,解决了现有的分布式内存数据库查询引擎存在限制了算子的扩展方式导致任务并行度降低的技术问题,提高了任务并行度的技术效果。
为解决上述技术问题,本申请提供了一种面向分布式内存数据库查询引擎的数据分发方法,所述方法包括:
数据库查询引擎中的前置算子计算完成后,数据库查询引擎对计算完成后的数据进行切分,然后将切分后的数据分发给数据库查询引擎中的后继算子。
本发明是一种面向分布式内存数据库的数据分发方法。切片方式及分发策略相当于MapReduce或者spark任务中,中间数据如何分发shuffle。
进一步的,前置算子中计算完成后的数据切分后按照一个前置算子分区对应一个后继算子分区的方式分发给后继算子,或前置算子中计算完成后的数据按照多个前置算子分区对应一个后继算子分区的方式分发给后继算子。
进一步的,前置算子分区按照特定的哈希(hash)函数将切分后的数据分发给后继算子分区。
进一步的,前置算子包括:一元算子、二元算子、无前置算子。
进一步的,当前置算子为GetColumn算子时:
GetColumn算子为物理执行计划中的第一个算子,只需要获取这一列的数据。因此我们不需要设置十分复杂的数据分布方式,只需要指定分片数(默认分片数等于存储引擎中该列数据的分片数即slice数),然后按照轮询调度(RoundRobin)的方式和存储引擎中该列数据的分片数slice对应起来。
进一步的,当前置算子为Filter算子时:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710441736.6/2.html,转载请声明来源钻瓜专利网。