Page 209 - 《软件学报》2021年第10期
P. 209
危剑豪 等:多查询共享技术研究综述 3181
行器构成,数据在各执行器之间相互传递,这就需要良好的调度机制以使得各执行器之间能够合理地
分配资源,减少阻塞,保证程序的正常运行.因此,也有相关文章对该方向进行了探讨.
(4) 多查询共享技术的应用
目前,多查询共享技术应用较多的领域有数据仓库、连续查询、MapReduce [43] 计算框架等.该研究方向大致
是将自身查询引擎、数据存储以及查询的特点与共享查询技术结合起来进行特殊的优化,并设计一套基于本系
统的多查询共享方案.这类研究往往与某个领域的兴衰息息相关,例如:MapReduce计算框架的流行,也激励着许
多学者为 MapReduce 设计多任务共享方案;半结构化存储引擎的研究逐渐衰落,也导致多查询共享技术在该领
域应用的研究越来越少.
2 支持多查询的原型系统
在关系数据模型之下,几乎所有的多查询共享技术都围绕着以下两种原型系统进行设计.在本节中,我们将
详细介绍这两种原型系统的架构以及它们各自的优缺点.
2.1 基于全局查询计划的多查询原型系统
基于全局查询计划的多查询原型系统 GQP 目前较为主流,大部分支持多查询共享的系统均采用该原型系
[4]
统的设计模式,例如早期的 CScan [23] 到最近的 SharedDB 和 DataPath [21] .
GQP 的核心思想如下:首先,将多个并发查询根据表达式合并规则进行合并,生成多查询解析树;之后,通过
多查询优化生成全局查询计划;最后执行该全局查询计划,并将结果返回给相应的客户端.该系统的查询执行流
程如图 3 所示,不同的颜色代表不同的线程.
SELECT FROM WHERE
提交查询1 解析1&转换1
Send query 1 解析树1
查询1 Parse 1 & Convert 1
客户端1 Client 1 Query 1 Parse tree 1
SELECT FROM WHERE 解析2&转换2 合并
提交查询2
解析树2
Send query 2 查询2 Parse 2 & Convert 2 Parse tree 2 Merge
客户端2 Client 2 Query 2
SELECT FROM WHERE
提交查询3 解析3&转换3
Send query 3 查询3 Parse 3 & Convert 3 解析树3
Query 3 Parse tree 3
客户端3 Client 3 解析器&转换器 合并器
Parser & Convert Merger
数据 数据字典
Data
Data dictionary
ID Name Age Country
查询结果1
Result 1
ID Name Age Country 执行 全局查询优化
Evaluate Global optimize
查询结果2 全局物理执行计划 全局逻辑执行计划
Result 2 Global physical plan Global logical plan
ID Name Age Country 执行引擎 优化器
查询结果3 Evaluation engine Optimizer
Result 3
Fig.3 Query execution process based on GQP system
图 3 基于 GQP 系统的查询执行流程
在该系统中,多个查询语句首先在查询分析和重写阶段进行公共子表达式的合并,生成一个全局查询计划
图,在查询路径选择过程生成一个最优或次优全局查询计划图.查询执行器执行该计划中的每个运算符.生成的