自从几十年前出现的商业应用程序以来,数据库已经成为软件应用程序的主要部分。
同样对数据库管理系统至关重要,它们也非常庞大并占用大量系统资源,增加了管理的复杂性。
随着软件应用程序变得更加模块化,新型数据库将比大型复杂的传统数据库管理系统更具适应性。
嵌入式数据库直接在应用程序进程中运行,提供零配置操作模式,资源使用非常少。
SQLite是由D. Richard Hipp于2000年发布的开源嵌入式关系数据库。
它减少了应用程序管理数据的开销。
SQLite具有便携性,易用性,小巧,高效和可靠。
SQLite嵌入在使用它的应用程序中,共享相同的进程空间而不是单个进程。
从外部来看,它不像RDBMS,但在流程内部,它是一个完整的,自包含的数据库引擎。
嵌入式数据库的一大好处是您不需要在程序中进行网络配置或管理。
因为客户端和服务器在同一进程空间中运行。
SQLite的数据库权限仅依赖于文件系统,并且没有用户帐户的概念。
SQLite具有数据库级锁定,没有Web服务器。
它需要内存,而其他开销很小,适合嵌入式设备。
您所要做的就是将其正确编译到您的程序中。
SQLite实现了大多数SQL-92标准,包括表示原子性,一致性,隔离和持久性(ACID),触发器和大多数复杂查询的事务。
没有进行类型检查。
您可以将字符串插入整数列。
例如,一些用户发现这是一项使数据库更有用的创新,尤其是在与无类型脚本语言一起使用时。
其他用户认为这是主要缺点。
多个进程或线程可以毫无问题地访问相同的数据。
可以并行地满足多个读访问。
只有当前没有提供其他访问时才满足写访问权限;否则写访问失败并显示错误代码(也可以在可配置的超时到期后自动重试)。
提供了一个名为sqlite的独立程序来查询和管理SQLite数据库文件。
它还可以作为编写使用SQLite库的应用程序的示例。
SQLite使用模块化设计,由三个子系统组成,包括八个独立的模块。
1,接口(Interface)接口由SQLite C API组成,这意味着无论是程序,脚本语言还是库文件,它最终都是通过它与SQLite的交互(我们通常使用更多的ODBC / JDBC最终将转换为Call for the相应的C API)。
2,编译器(Compiler)在编译器中,使用tokenizer(Tokenizer)和解析器(Parser)语法检查SQL,然后将其转换为可以更方便处理的分层数据结构 - 语法树然后将语法树传递给用于处理的代码生成器代码生成器基于它为SQLite生成汇编代码,最后由虚拟机(虚拟机)执行。
3,虚拟机(Virtual Machine)架构的核心部分是虚拟机或虚拟数据库引擎(VDBE)。
它类似于Java虚拟机并解释执行字节码。
VDBE的字节码由128个操作码组成,主要用于数据库操作。
其每条指令用于执行特定的数据库操作(例如在表上打开游标)或准备操作堆栈空间(例如推送参数)。
简而言之,所有这些指令都旨在满足SQL命令的要求(对于VM,稍后将对其进行详细描述)。
4.后端后端由B树,页面缓存(寻呼机)和操作系统接口(即系统调用)组成。
B树和页面缓存共同管理数据。
B-tree的主要功能是索引,它维护页面之间的复杂关系,以便您可以快速找到所需的数据。
寻呼机的主要作用是通过OS接口在B树和磁盘之间传递页面。
1.零配置2.可移植性:它可以在Windows,Linux,BSD,Mac OS X和一些商业Unix系统上运行,例如Sun的Solaris,IBM的AIX,它也可以工作。
在许多嵌入式操作系统下,如QNX,VxWorks,Palm OS,Symbin和Windows CE。
3.紧凑性:SQLite设计为轻量级且独立。
一个头文件,一个库,你是关系型,无需外部数据库服务器4,简单(Simplicity)5,灵活性(灵活性)6,可靠(可靠性):SQLite核心约30,000行C代码标准,这些代码是模块化的,易于阅读。