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的差异直接发出命令。

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能