3种数据库查询引擎

迭代模型/火山模型(Iterator Model)

又称 Volcano Model 或者 Pipeline Model
每一种操作抽象为一个 Operator,将整个 SQL 构建成一个 Operator 树,查询树自顶向下的调用next()接口,数据则自底向上的被拉取处理

一次pull一条,调用次数太多,CPU执行效率低下。

相关数据库:SQLite、MongoDB、Impala、DB2、SQLServer、Greenplum、PostgreSQL、Oracle、MySQL

物化模型(Materialization Model)

同上,批量拉取,但是数据集不能太多。

##向量化/批处理模型(Vectorized / Batch Model)##

每次调用 next() 函数会返回一批的元组(tuples)

相关数据库:Presto、snowflake、SQLServer、Amazon Redshift,Spark 2.x,hive(ORC 格式来存储数据,将 hive.vectorized.execution.enabled 参数设置为 true)

参考

https://www.modb.pro/db/45265

物化视图

这个概念,只是把视图(只保存SQL)进行了计算和数据物化