微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/sqlite/199407.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐