sqlite主要由3个部分组成
1、接口(Interface)
接口由sqlite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与sqlite交互的(我们通常用得较多的ODBC/JDBC最后也会转化为相应C API的调用)。
2、编译器(Compiler)
在编译器中,分词器(Tokenizer)和分析器(Parser)对sql进行语法检查,然后把它转化为底层能更方便处理的分层的数据结构---语法 树,然后把语法树传给代码生成器(code generator)进行处理。而代码生成器根据它生成一种针对sqlite的汇编代码,最后由虚拟机(Virtual Machine)执行。
3、虚拟机(Virtual Machine)
架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual Database Engine,VDBE)。它和Java虚拟机相似,解释执行字节代码。VDBE的字节代码由128个操作码(opcodes)构成,它们主要集中在数据 库操作。它的每一条指令都用来完成特定的数据库操作(比如打开一个表的游标)或者为这些操作栈空间的准备(比如压入参数)。总之,所有的这些指令都是为了 满足sql命令的要求(关于VM,后面会做详细介绍)。