摘要:
GDK作为moentdb的最核心的内核, 可以看作是物理计划的执行, 以及与磁盘IO直接进行交互.
而物理列的数据结构, 就是BAT. 所以GDK也可以看作是对BAT的操作的模块, BAT是GDK操作的对象, 是GDK的一部分.
GDK和BAT的名字其实无关紧要, 重要的是这些模块所承载的功能.
GDK:
- monetdb的最核心的内核
- 与物理IO做交互
- 执行物理计划
- 以BAT为操作对象
- 但是, 最关键的问题是
- 为什么要设计出GDK这样的模块, 要达到什么样的目的?
- 如何设计这样的模块, 为什么这样的设计能达到目的?
BAT:
- 表面的名字是Binary Association Table, 二进制关联表
- 名字有些费解, 二进制好理解,什么叫Association Table ?
- 但是从具体的数据结构上, 可以看出其实是物理列
- BAT中包含物理列的各种属性, 无论是静态的,动态的,delata的, 并且包含物理列在内存中的堆地址
- 读取物理列, 其实就是读取BAT中的堆的数据
- 这里需要注意抽象出了BATiter, 通过迭代器访问BAT
- 数据库中迭代器模型非常常用, 但是一般是和火山模型相结合
- 这里需要注意BATiter的使用方式, 以快速理解对BAT的访问
- 这样就可以理解为什么把物理列见的关系叫做Association Table
- 在物理列间执行关系代数运算
- 可以看到GDK模块操作的对象是BAT,但是接口却是关系代数和数据库的包模型的规则形式