一条 SQL 的执行中,会经历语法树、逻辑计划、物理计划等几个阶段,最终被创建出可实际执行的算子树。在算子树上,数据的流向是从叶子节点到根节点,若以生产者、消费者的观点来看,子节点是数据的生产者,父节点是数据的消费者,而 Push 模型与 Pull 模型之分则是指,作为消费者的父节点与作为生产者的子节点如何控制数据交换:是子节点主动将数据 push 到父节点,还是父节点向子节点 pull 数据。
数据库中经典的 Volcano 执行模型是 Pull 模型。
但自 Hyper 在 2011 年引入 Push 模型后,Push 模型在新兴的数据库,尤其是 OLAP 引擎中变得逐渐流行,如 Presto,Snowflake,DuckDB 等都采用了 Push 模型构建查询引擎。
作为流引擎的代表,Flink 在流算子与流算子之间也完全采用 Push 的方式来交互数据。
但是,它们并不意味着经典的 Pull 模型就丧失了其强大的生命力,Databricks 的闭源查询引擎 Photon 在对比这两者后仍然采用了基于 Pull 的向量化引擎来构建。
而 ClickHouse 则采用 Push 与 Pull 结合的方式进行数据交互。
2022 年 7 月 28 日(周四) 20:00-21:00,TDengine 研发工程师刘继聪将和大家一起讨论如下话题:
·本期技术话题·
1. 经典的 Volcano 模型如何进行算子间数据交换,在单机与分布式两种场景分别如何进行
2. Hyper 为何要引入 Push 模型,Push 模型与 code gen 是什么关系,它们与向量化引擎又是什么关系
3. Clickhouse 如何将算子树转换为 Pipeline
4. Flink 的 Push 引擎中,消费者反向如何控制生产者
5. 如何结合 Push 与 Pull 构建起事件驱动的流式计算引擎
我们希望听众能从本次讲解的内容中深刻理解这两种模型的区别及其取舍;以及由 Push 与 Pull 衍生出的更关键的问题,即算子的执行如何调度、消费者如何控制生产者等。
刘继聪,毕业于复旦大学,计算机科学与技术专业,曾就职于阿里云,现 TDengine 存储引擎研发工程师。
扫描图片二维码,立即报名!
✨\\\\٩( 'ω' )و ////✨
首届「TDengine 开发者大会」来啦!!
1⃣️ 一直被万众期待的 TDengine 3.0 将正式和大家见面
2⃣️ 基础软件领域知名大咖、知名投资人现场演讲
3⃣️ 各行各业 TDengine 典型用户现身说法
4⃣️ 现场惊喜不断,精美礼品拿到手软
❗️你离「TDengine 开发者大会」只差一条 SQL 语句!
8月13日 Hello TDengine!Hello World!
👇 点击阅读原文,报名参与直播!