MonetDB学习笔记:
1?架构:
三层软件架构:
SQL?front-end:前端SQL解析,数据模型优化,降低数据中间结果的总量,最后将SQL语句解析为MAL(MonetDB?Assembly?Language)。
Tactical-optimizers:一系列优化模块的集合,组成优化管道,这个模块提供功能从符号处理到实时数据分发和执行。
Columnar?abstract-machine?kernel:列式内核
2?MAL
MonetDB?Assembly?Language(MAL)
MAL是SQL和XQuery前端查询的目标语言。
SQL语句通过语法解析解析成MAL,MAL在经过优化器优化,重写成优化后的MAL,提供给内核执行。
3?内核
执行内核是一个运行MAL语言的虚拟机。
复杂的查询被拆分成多个步骤,每个步骤操作一个列,叫bulk?processing。所有的BAT操作被映射成简单的数组操作,一个并行处理引擎。
内核运行过程中会根据输入属性和系统状态选择合适的优化算法和实现来执行