Volcano - An Extensible and Parallel Query Evaluation System 论文解读

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 前面写了一些关于优化器的文章,现在开个小差,写一些执行器的paper介绍,从这篇开始。这篇是Graefe的Volcano Project的执行器框架,其概念已被广泛接受和使用,也就是我们最为熟悉的Volcano iterator的执行框架,关于volcano/cascades的优化器介绍

前面写了一些关于优化器的文章,现在开个小差,写一些执行器的paper介绍,从这篇开始。

这篇是Graefe的Volcano Project的执行器框架,其概念已被广泛接受和使用,也就是我们最为熟悉的Volcano iterator的执行框架,关于volcano/cascades的优化器介绍

内容

paper中提出了使用iterator + 标准接口(open/next/close)的思路来执行查询计划。(IBM Starburst当时已经使用了这种方式)

这是一篇1990年的paper了,概念也为大家所熟知,而且其中的内容细节已比较过时,因此不再详细描述,只大概总结下其思想核心和几个有趣的点:

  • 解耦 + 抽象 + 标准接口,从而将各个operator独立起来考虑,提供data stream的抽象,各个operator可以灵活组合和协作,增加新算子/算法,对原有完全不需要修改,很容易扩展(似乎灵活性+扩展性是整个volcano project的核心目标)
  • 整个框架实现了operator的组合和数据的整体处理流程,每个operator实现的就是数据的处理流程,但这些都是机制(mechanism),与具体的执行策略(policy)无关,两者是隔离的,因此具有很强的灵活性

比如算法配置/算法实现,都可以support function的形式接入到operator中作为policy,从而同一个operator可以实现各种不同的算法。

也可以将对数据的解析/处理,封装在support function中,从而实现与data type/data model的正交,整个框架是可以应用到任何data model的

  • 给出了2个meta-operator,它们不处理数据,只是做一些控制性的任务
  1. choose plan operator

可以帮助实现dynamic query plan,其输入可以是bind variables的值,后续接入各种不同的plan,实际在真正执行时,根据value的不同,动态启用不同的plan,是一种AQE的方式。

2. exchange operator

可以帮助实现parallel query,将数据处理与并行化进行了隔离。

算子间并行,仍然是通过标准接口,实现算子间的pipelining,并可以以support function的方式,提供流控等功能。

算子内并行,通过exchange算子实现repartition等机制。

子树间并行,更大粒度。

单个进程/线程内的数据流是demand-driven的(和常规iterator一致),而进程/线程间的数据流是data-driven的。

总结

iterator这种机制虽然简单却很强大,非常灵活而具有扩展性,比如单个operator的执行逻辑完全不需要考虑其上下游是什么,也不需要考虑自身是否是并行在执行,这些逻辑都被放到了外部,而自身的策略也是注入式的,可以由外层灵活修改,整个iterator tree只负责整体处理流程。

考虑到当时的硬件环境(CPU没有pipelining并行能力 + 小内存 + 慢速IO),这是一种非常先进灵活的框架。但我们都知道它对于现代硬件已不再那么适用,海量的数据+tuple-at-a-time的执行方式,使得大量的虚函数调用破坏了cpu的流水线并导致data cache + TLB cache失效。由于内存的容量扩大,负载在逐渐从IO bound像memory bound发展,因此更需要对于cache level/instruction level的极致优化。人们提出了向量化/编译执行的这些方法,无非都是以此为目标,但从现有的一些state of the art执行器方案中,仍然处处可以看到volcano执行器的影子,其影响力是毋庸置疑的。

目录
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
【论文精读】ACL 2022:Graph Pre-training for AMR Parsing and Generation
【论文精读】ACL 2022:Graph Pre-training for AMR Parsing and Generation
|
7月前
|
机器学习/深度学习 数据挖掘 Python
[Bart]论文实现:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation...
[Bart]论文实现:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation...
58 0
|
机器学习/深度学习 移动开发 自然语言处理
DEPPN:Document-level Event Extraction via Parallel Prediction Networks 论文解读
当在整个文档中描述事件时,文档级事件抽取(DEE)是必不可少的。我们认为,句子级抽取器不适合DEE任务,其中事件论元总是分散在句子中
144 0
DEPPN:Document-level Event Extraction via Parallel Prediction Networks 论文解读
|
数据挖掘
MUSIED: A Benchmark for Event Detection from Multi-Source Heterogeneous Informal Texts 论文解读
事件检测(ED)从非结构化文本中识别和分类事件触发词,作为信息抽取的基本任务。尽管在过去几年中取得了显著进展
73 0
|
机器学习/深度学习 自然语言处理 算法
ACL 2022:Graph Pre-training for AMR Parsing and Generation
抽象语义表示(AMR)以图形结构突出文本的核心语义信息。最近,预训练语言模型(PLM)分别具有AMR解析和AMR到文本生成的高级任务。
165 0
|
分布式计算 Java Spark
Optimizing Spark job parameters
Optimizing Spark job parameters
267 0
|
自然语言处理 算法 数据可视化
Re21:读论文 MSJudge Legal Judgment Prediction with Multi-Stage Case Representation Learning in the Real
Re21:读论文 MSJudge Legal Judgment Prediction with Multi-Stage Case Representation Learning in the Real
Re21:读论文 MSJudge Legal Judgment Prediction with Multi-Stage Case Representation Learning in the Real
|
机器学习/深度学习 算法 数据挖掘
Paper:He参数初始化之《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet C》的翻译与解读
Paper:He参数初始化之《Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification》的翻译与解读
PAT (Advanced Level) Practice - 1145 Hashing - Average Search Time(25 分)
PAT (Advanced Level) Practice - 1145 Hashing - Average Search Time(25 分)
121 0
PAT (Advanced Level) Practice - 1129 Recommendation System(25 分)
PAT (Advanced Level) Practice - 1129 Recommendation System(25 分)
109 0