整个文档翻译完成,见 http://download.youkuaiyun.com/detail/popvip44/9654234
过去的几十年中涌现了许多数据库管理系统(DBMSs),例如DB-2, Informix, Ingres, MySQL, Oracle, SQL Server, Sybase等。SQLite近几年才加入到DBMS的大家庭中,并且在商业应用上取得了成功。2000年5月9日,SQLite首次发布。该数据库是一个具有以下特性的关系型数据库:
无需配置(Zero configuration)
在使用SQLite之前无需进行安装或者配置。数据库只需要很少的管理或者不需要管理,你可以在官方主页http://www.sqlite.org下载源代码,使用C语言编译器编译成库文件就可以使用了。
嵌入在应用中(Embeddable)
无需为SQLite维护一个单独的进程,SQLite是嵌入在应用程序中的。
为应用程序提供接口(Application interface)
SQLite为C语言应用程序提供SQL语言环境来操作数据库。这是一种调用级别的接口库(call-level interface library)。用户可以书写大段的SQL语句并把它们通过接口传递给SQLite。(除了使用SQL语言,其他的方式无法操作数据库)。这并不会对应用程序提出额外的预处理和编译要求,一个普通的C编译器就可以完成所有的工作。
事务功能(Transactional support)
SQLite具有事务功能,也即支持原子性,一致性,独立性和持久性(ACID)。当SQLite遇到系统崩溃和掉电的时候,无需用户手动修复数据库。当SQLite读取一个数据库时,如果数据库是错误的,SQLite将自动执行修复功能,修复过程对用户来说是透明的。
线程安全(Thead-safe)
SQLite是一个线程安全库,同一个进程中的多个线程可以同时进入一个或多个数据库。SQLite维护数据库级别的线程并发控制。
轻量级(Lightweight)
SQLite大小只有250KB,如果在编译源代码的时候去掉一些不必要的功能,SQLite还可以变得更小。SQLite可以运行在Linux, Windows, Mac OS X, OpenBSD和其他的一些操作系统上。
可定制(Customizable)
SQLite提供了一个完善的框架,用户可以通过这个框架定义和使用SQL函数、合计函数(aggregate function),排序函数。SQL也支持UTF-8和UTF-16标准编码格式。
跨平台(Cross-platform)
SQLite使你能够在平台之间移动数据库文件。例如:你可以在一台Linux X86机器上创建一个数据库文件,然后把数据库文件移动到一个ARM平台,该数据库文件依然有效。
SQLite与许多其他的现代SQL数据库不同,SQLite的首要设计目标是简洁,尽管这有时候会导致无法有效支持一些特性。但是维护、商业化、操作、管理、和在应用中嵌入SQLite非常简单。SQLite使用简单的技巧来实现ACID特性。
SQLite支持SQL-92标准的众多子标准和操作特性。你可以创建表、索引、触发器和视图,也可以通过INSERT、DELETE、UPDATE、SELECT来操作存储的信息,下表是SQLite3.3.6发布版支持的额外特性:
-
部分地支持ALTER TABLE(重命名table,添加column)
-
UNIQUE,NOT NULL.CHECK约束
-
子查询,包括关联子查询,INNER JOIN, LEFT OUTER JOIN, NATURAL JOIN, UNION, UNION ALL, INTERSECT, EXCEPT
-
事务命令:BEGIN, COMMIT, ROLLBACK
-
SQLite命令,包括reindex, attach, detach, pragma
SQLite3.3.6发布版还不支持下面的SQL-92特性:
-
外键约束
-
许多ALTER TABLE特性
-
一些触发器相关的特性
-
更新一个VIEW
-
授予权限(GRANT)和撤销权限(REVOKE)
SQLite把整个数据库存储在单个普通的本地文件中,该文件可以放置在本地文件系统的任一个路径下。任何一个有读/写该文件权限的用户都可以读/写该文件。SQLite使用一个独立的日志文件来保存事务回滚信息,当事务abort或者系统崩溃的时候,这些信息被用于修复数据库。Attach命令帮助事务在不同的数据库中同时工作。这些事务也是具有ACID特性的。Pragma命令使你可以更改SQLite库的行为。
SQLite允许多个应用同时进入同一个数据库,并通过事务管理来支持有限形式的并发访问。SQLite允许多个读事务同时存在,但是某时刻只能有一个写事务存在。
SQLite被广泛应用于底层到中层的数据库应用程序,例如网址服务器(SQLite平均每天支持100,000次访问,SQLite的开发团队表示SQLite平均每天可以支持1,000,000次访问)、移动电话、PDA、机顶盒、独立应用程序。你甚至可以把SQLite作为初级数据库课程的教材,因为源代码已经有了完善的注释和相关技术文档,而且SQLite是完全开源的,没有任何证书约束。