(4)数据库架构

数据库架构在这几十年的发展过程中基本变化不大,主要分为三个部分:SQL引擎、执行引擎、存储引擎。下面对其中比较关键的一些部分进行说明。

数据库架构图

SQL解析器:把一个文本的SQL语句通过词法语法解析转化成一个符合内部C语言处理的结构体(一般称为解析树)。典型的词法分析工具如 lexer(flex)、yacc(bison)。

SQL查询重写:是利用一些固定的关系变换规则,对SQL解析树进行重写,生成更加高效、有利于下一步优化的查询树。如SQL语句中对视图(view)的处理就在这一步进行。

SQL优化器:数据库中算法要求最高的模块,因为SQL是一种结构性语言,其非常灵活,至少像Oracle这样的公司还在对其进行优化。优化器主要分为两类:RBO和CBO。CBO是主流技术,其基础技术有2个:代价评估算法、计划空间搜索算法。

执行器:由操作算子及执行环境组成。数据库包含多种操作算子,数据算子如 scan、hashjoin、aggregate,控制算子如 split 等。执行环境主要由执行框架和资源管理组成。

存储引擎:访问层提供访问接口,堆访问、索引访问、事物层是核心,主要通过锁、MVCC、log管理来实现。存储层是数据库的物理存储,其中buffer管理是性能的关键。

End(^-^)

如果有需要文中原图,或者有什么需要交流的问题,可以加微信~

你可能感兴趣的:((4)数据库架构)