`
v5browser
  • 浏览: 1137728 次
社区版块
存档分类
最新评论

<SQLite权威指南>第一章-SQLite介绍

 
阅读更多

一、 简介

1. SQLite是一款嵌入式数据库,它没有独立运行的进程,它与所服务的应用程序在应用程序进程空间内共生共存。它的代码与应用程序代码也是在一起的,或者说嵌入其中,作为托管它的程序的一部分。

2. 数据库服务器在程序中的好处是不需要网络配置和管理。

3. SQLite是开源的,不受许可证费用约束,而且是专门为嵌入式设计的产品。

二、 体系结构

SQLite 拥有一个简洁的、模块化的体系结构,并引进了一些独特的方法进行关系型数据库管理。它由可以划分为3个子系统(编译器(Compiler)、核心(Core)、后端(Backend))的8个独立模块组成(详见下图)。这些模块将查询过程划分为几个独立的任务,就像在流水线上工作一样。在体系结构栈的顶部编译查询语句,在中部执行,在底部处理存储并与操作系统交互。

下面让我们根据不同模块展开介绍。

  • 接口(Interface)

接口处于栈的顶端,由SQLite C API组成。程序、脚本语言还有与SQLite交互的库文件最终都是通过它与SQLite交互的。从表面上理解,这里是开发者、管理员等与SQLite通信的地方。

  • 编译器(Compiler)

编译过程从词法分析器(Tokenizer)和语法分析器(Parser)开始。它们协同处理文本形式的结构化查询语句(Structured Query Language, SQL),分析其语法有效性,然后转化为底层能更方便地处理的层次化数据结构。SQLite词法分析器是手动编码实现的,它的语法分析器是由SQLite特定的语法分析生成器Lemon(专门有一本书讲解此生成器)产生的。

代码生成器(Code Generator)将语法树翻译成一种SQLite专用的汇编代码,这些汇编语言由一些最终由虚拟机执行的指令组成。代码生成器的唯一工作是将语法树转换为完全由这种汇编语言编写的微程序并交给虚拟机处理。

  • 虚拟机(Virtual Machine)

架构栈的中心部分是虚拟机(Virtual Machine),也叫做虚拟数据库引擎(Virtual DataBase Engine,VDBE)。VDBE是基于寄存器的虚拟机,在字节码上工作,这使得它可以独立顶层操作系统、CPU和系统体系结构。VDBE的字节代码(称为虚拟机语言)由100多个被称为操作码(opcodes)的可能的任务构成,所有这些操作都是围绕数据库进行的。

VDBE是一个专为数据处理设计的虚拟机。它的指令集中所有的指令或者用来完成具体的数据库操作(比如打开一个表的游标、做记录、提取一列或者开始一个事务等),或者以某种方式控制栈为完成这些操作做准备。SQLite中的所有SQL语句----从选择和更新记录到创建表、视图以及索引----都是首先编译成虚拟机语言,形成一个独立的定义了如何完成给定的命令的指令集。

VDBE是SQLite的核心,它之前的所有模块都是用于创建VDBE程序的,它之后的所有模块都是用于执行VDBE程序的,每次执行一条指令。

  • 后端(Backend)

后端由B-tree、页缓存(page cache)以及操作系统接口组成。B-tree和pager一起作为信息代理。它们使用的数据源是数据库页,这些页是具有相同大小的数据块、就像用于运输的集装箱。页里面的"货物"是表示信息的大量位(bit),这些信息包括记录、字段和索引项等。B-tree和pager不需要知道信息的内容,它们只负责移动和排列这些页。

B-tree的职责就是排序。它维护着多个页之间错综复杂的关系,这些关系能保证快速定位并找到一切有联系的数据。B-tree将页面组织成树状结构(这也是它叫做B-tree的原因),这种组织结构很适合搜索,页面就是树的叶子。

pager(SQLite的一种数据结构)帮助B-tree管理页面,它负责传输。pager根据B-tree的请求从磁盘读取页面或者向磁盘写入页面。磁盘操作是目前计算机必须做的工作中最慢的事情之一。因此pager试图通过将频繁使用的页面缓存在内存中来加速这一操作,从而最小化与硬盘直接交互所花费的时间。pager的功能描述页包含事务管理、数据库锁以及崩溃恢复,其中许多功能是通过OS接口(OS Interface)实现的。

像文件锁一样的很多事情在不同的操作系统上实现是不同的。OS接口(OS Interface)为SQLite其他模块提供了屏蔽这些差异的抽象层。最终的结果就是其他模块看到的是一个一致的对外的系统接口。所以,pager不用担心在Windows上以一种方式锁文件,而在其他不同操作系统上(例如UNIX)上使用另一种方式。这就使得SQLite很容易移植到不同的操作系统上。

OS接口(OS Interface)的下面就是具体要存取的数据。

总体来看,SQLite分为三个子系统,里面包含了八个独立模块。

  1. 接口(Interface)

  2. 词法分析器(Tokenizer)

  3. 语法分析器(Parser)

  4. 代码生成器(Code Generator)

  5. 虚拟机(Virtual Machine)

  6. B-Tree

  7. Pager

  8. OS接口(OS Interface)


分享到:
评论

相关推荐

    SQLite权威指南(第2版)

    SQLite权威指南(第2版

    sqlite-jdbc-3.34.0-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...

    Sqlite权威指南,第二版

    《SQLite权威指南(第二版)》首先从 SQLite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite 的一般SQL 和高级功能的SQL,采取举例说明,使得本书...

    sqlite权威指南(第二版)源代码

    The Definitive Guide to SQLite(Second Edition), Grant Allen, Mike Owens sqlite 权威指南(第二版)源代码 包括了书中例子所需的数据库文件,以及所有的代码。

    SQLite权威指南 第二版 pdf

    《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得本书...

    SQLite权威指南第二版源代码

    SQLite权威指南第二版源代码。包含书中实例中的数据库和表的导入文件和各个章节的代码实例。

    SQLite权威指南(第二版)pdf

    《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得本书...

    SQLite权威指南(第二版)

    SQLite权威指南(第二版),SQLite,database,Enbeded。

    [SQLite权威指南(第二版)].Grant.Allen.扫描版

     《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得...

    嵌入式数据库简介-SQLite

    SQLite介绍&lt;br&gt;SQLite的发展&lt;br&gt;SQLite的优势&lt;br&gt;SQLite的缺憾&lt;br&gt;SQLite的内部结构&lt;br&gt;SQLite数据库的使用&lt;br&gt;SQLite的命令行接口&lt;br&gt;SQLite命令行使用&lt;br&gt;SQLite数据库的编程接口&lt;br&gt;C/C++接口&lt;br&gt;简单应用&lt;br&gt;...

    SQLite权威指南中英文版

    The Definitive Guide to SQLite 2nd edition 2010 中文版:SQLite权威指南 电子工业出版社 第一章 介绍 第五章 设计与概念 第十一章 内部机制与新特性

    SQLite 权威指南

    SQLite 权威指南.rar SQLite 权威指南.rar SQLite 权威指南.rar SQLite 权威指南.rar

    SQLite权威指南.chm

    完整的《SQLite权威指南》,喜欢的朋友可以下载!

    SQLite权威指南_v100

    SQLite权威指南_v100,SQLite很详细的实例指南

    SQLite权威指南第二版

    资源包里包含SQLite权威指南(第二版)的中文版PDF文档,英文原版PDF文档和随书源码。

    sqlite .net 源码包 sqlite-netFx-source-1.0.86.0

    如题 sqlite .net 源码包 sqlite-netFx-source-1.0.86.0

    sqlite-tools-linux-x86-3350400.zip

    sqlite-tools-linux-x86-3350400.zip

    SQLite权威指南 中文 doc版

    ■第1章 SQLite介绍 ■第2章 入门 ■第3章 关系模型 ■第4章 SQL ■第5章 设计和概念 ■第6章 核心C API ■第7章 扩充C API ■第8章 语言扩展 ■第9章 SQLite内核 ■附录A SQL参考 ■附录B C API参考 ■附录C Codd的...

Global site tag (gtag.js) - Google Analytics