开源嵌入式数据库 SQLite 简介

1、SQLite简介
SQLite 是 D. Richard Hipp 用 C 语言编写的开源嵌入式数据库引擎。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有7个年头了.目前版本是 2007.6.18 出来没久的 SQLite 3.4.0

其创建者保守地估计 SQLite 可以处理每天负担多达 100,00 次点击率的 Web 站点,并且 SQLite 有时候可以处理 10 倍于上述数字的负载。

下面是访问SQLite官方网站: http://www.sqlite.org/ 时第一眼看到关于SQLite的特性.

1. ACID事务 - 甚至是系统宕机或者断电后都能保持数据的一致完整性
2. 零配置 – 无需安装和管理配置
3. 实现了大部分的 SQL92 标准 (尚未实现的特性)
4. 储存在单一磁盘文件中的一个完整的数据库
5. 数据库文件可以在不同字节顺序的机器间自由的共享
6. 支持数据库大小至2TB
7. 足够小, 大致3万行C代码, 250K 
8. 比一些流行的数据库在大部分普通数据库操作要快
9. 简单, 轻松的API
10. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定
11. 良好注释的源代码, 并且有着98%以上的测试覆盖率
12. 独立: 没有额外依赖
13. Source完全的Open, 你可以用于任何用途
14. 支持多种开发语言,C, PHP, Perl, Java, ASP.NET,Python

2、SQLite类型
SQLite的数据类型
首先你会接触到一个让你惊讶的名词: Typelessness(无类型). 对! SQLite是无类型的. 这意味着你可以保存任何类型的数据到你所想要保存的任何表的任何列中, 无论这列声明的数据类型是什么(只有在一种情况下不是, 稍后解释). 对于SQLite来说对字段不指定类型是完全有效的. 如:

Create Table ex1(a, b, c);

诚然SQLite允许忽略数据类型, 但是仍然建议在你的Create Table语句中指定数据类型. 因为数据类型对于你和其他的程序员交流, 或者你准备换掉你的数据库引擎. SQLite支持常见的数据类型, 如:

CREATE TABLE ex2(a VARCHAR(10), b NVARCHAR(15),c TEXT, d INTEGER, e FLOAT, f BOOLEAN, g CLOB, h BLOB, i TIMESTAMP,j NUMERIC(10,5), k VARYING CHARACTER (24), l NATIONAL VARYING CHARACTER(16));

前面提到在某种情况下, SQLite的字段并不是无类型的. 即在字段类型为”Integer Primary Key”时. 

3、Unmi 喜欢它的特性
与之前试用了几种嵌入式数据库 HSql,Derby 相比而言显著的优势在于单个文件存储,利用发布,存储效率高,查询快,运行时占用内存很小,能被多进程同时访问,支持多语言,特别是C/C++,桌面程序用 VC 方便,不用虚拟机支持。
SQLite JDBC 驱动 有纯Java和带动态库的两种,Java 连 SQLite 用纯 Java 的驱动还有些问题,用带动态库的有时也会出现 JVM 异常,还是有些缺憾。
还有一个叫做 SQLite Java Wrapper 还未真正试用过

4、客户端工具也很丰富
如果没有太多的要求,直接用 SQLite 的命令行就足够了,其他免费的有 SQLite Administrator、 SQLite SpySQLite Manager(基于PHP的);商业的有 SQLite Maestro、另一个也叫 SQLiteManager

5、中文问题
SQLite 支持多种字符集,我用Java插入的数据,用C++读出来是乱码。后来是用 SQLite Administrator 执行 Insert 语句插入的中文,在 C++ 中读取没问题,用 SQLite命令行和 SQLite Maestro 读取也没问题,但是用  SQLite Spy 和 SQLiteManager(商业版)读取
就出现中文乱码了,还未细究怎么回事

参考资料: 1. 开放源码嵌入式数据库 SQLite 简介 
           2. SQLite简介
           3. SQLite 中文社区
           4. 我们一起学习 sqlite 的应用

以后将写上各种类型嵌入式数据库的比较,包括 HSql、Derby、Berkely DB、FireBird 还有现在的 SQLite,敬请关注

类别: Database. 标签: . 阅读(231). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar