KaiwuDB 解析器介绍
解析器是数据库系统的重要组成部分之一,主要的功能是将客户端输入的 SQL 语句分解为语法单元,然后将这些语法单元转化成数据库内部可识别的数据结构,最终生成数据库可以执行的计划。
KaiwuDB 的一条 SQL 执行的整个生命周期:
- 从客户端输入一个 SQL 指令(文本格式),数据库执行器无法直接执行该文本指令,会先通过词法解析和语法解析将文本指令生成数据库能识别的数据结构 AST;
- 语义解析对 AST 进行有效性校验,生成优化器需要的 Memo 数据结构;
- 通过优化器(包括 RBO、CBO)优化后选出一个最优的 Memo 结构;
- 经过逻辑计划构建,生成一个 Plan 数据结构;
- 通过物理计划构建,生成数据库可执行的数据结构 Physical Plan,最终执行返回结构。
KaiwuDB 的解析器在整个 SQL 生命周期所处的位置比较靠前,介于客户端和优化器之间,主要功能是将客户端发来的文本指令转化成数据库能识别的数据结构,最后转成优化器需要的数据结构,具体包括三部分:词法解析,语法解析,语义解析。
- 词法解析:从左到右逐个字符地读入文本,根据构词规则以及空格,将 SQL 文本切成词和符号;
- 语法解析:在词法分析的基础上将单词序列按照定义好的语法规则组合成各类语法