数据库--处理模型(Processing Model)
本文将介绍数据库处理模型,处理模型定义了系统如何执行一个查询计划。三种处理模型:迭代器模型、物化模型、向量化模型。
向量化模型是现代OLAP系统所使用的处理模型,它结合了迭代器模型和物化模型的优点。
另外还介绍了查询执行的两种方向:自顶向下(Pull模式),自底向上(Push模式)。还介绍了在向量化模型里,如何表示filter。
一、Iterator Model
Iterator Model即迭代器模型,也被叫作 火山模型 或者 管道模型。
每个查询计划操作符(operator)都实现一个Next()
函数。
- 每次调用
Next()
函数时,操作符要么返回一个元组,要么返回一个EOF标记表示没有元组了。 - 操作符实现了一个循环,该循环调用子操作符的
Next()
,来获取它们的元组,然后进行处理。
每个操作符还实现了Open()
和 Close()
函数,有点类似于构造函数和析构函数的感觉,只不过是针对操作符的。
因此操作符的调用过程一般如下:
Open();
循环调用Next();
Close(