SQLite学习笔记(6)-SQLite架构

SQLite采用了模块的设计,它由三个子系统,包括8个独立的模块构成。

 

图2.1 SQLite架构图

接口(Interface)

接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。

编译器(Compiler)

在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检查,然后把它转化为底层能更方便处理的分层的数据结构---语法树,然后把语法树传给代码生成器(code generator)进行处理。而代码生成器根据它生成一种针对SQLite的汇编代码,最后由虚拟机(Virtual Machine)执行。

虚拟机(Virtual Machine)

架构中最核心的部分是虚拟机,或者叫做虚拟数据库引擎(Virtual Database Engine,VDBE)。它和Java虚拟机相似,解释执行字节代码。VDBE的字节代码由一百多个操作码(opcodes)构成,它们主要集中在数据库操作。VDBE是专门用来做数据处理的。它的每一条指令都用来完成特定的数据库操作(比如打开一个表的游标)或者为这些操作做准备。总之,所有的这些指令都是为了满足SQL命令的要求。

后端(Back-End)

后端由B-树(B-tree),页缓存(pagecache,pager)和操作系统接口(OS interface)构成。B-tree和page cache共同对数据进行管理。B-tree的主要功能就是索引,它维护着各个页面之间的复杂的关系,便于快速找到所需数据。而pager是为B-tree服务的,其主要工作就是根据B-tree的命令来进行页传递。不同的操作系统之间有很多操作是不同的,比如对文件加锁,而为了隐藏这些差异就引入了OS interface。OS interface的主要作用就是为SQLite的其他模块和OS之间提供一个抽象接口,使得其他模块可以不用管OS的差异直接发出命令。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值