加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:40:24 所属栏目:百科 来源:网络整理
导读:SQLite采用了模块的设计,它由三个子系统,包括8个独立的模块构成。 图2.1 SQLite架构图 接口(Interface) 接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的。 编译器(Compiler) 在编译器中,分词器(Tokenize

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读