使用SQLite也有一段时日了,一直想整理出一份比较完整的SQLite指南,可惜时间总是不够。就从这里开始吧,能写多少就写多少。
总特性:
1. SQLite支持事务,满足(ACID)特性:atomic, consistent, isolated, durable。即使在系统crash掉或者掉电的情况下,一样可以恢复。
2. 0配置,不需要安装或者初始化管理即可使用。(不就是嵌入式应用吗?:))
3. 整个数据库存储在跨平台的磁盘文件里头,何谓跨平台,就是说这个文件放到任意平台上,都可以用相同版本的SQLite打开(这个确实强大,目前,即算商用的大型DBMS,其数据文件也没几个是跨平台的,越大越难调头啊...)
4. 支持TB和GB大小的字符串和大对象(BLOB) (写还可以,读呢,只能分片读出来吧....)
5. 常规操作比目前流行的C/S结构的数据库引擎要快(姑且信之)
6. API使用比较简单
7. 源码注释完美,测试覆盖率达100% (后者很难说, 有些bug只有在移动设备上出现过,怎么保证100%? )
8. 使用ANSI-C来开发,使用了TCL绑定。当然也有其它语言的绑定,这些是可选的(详情见:http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers)。
9. 源码以单文件的形式发布,便于用户将其集成到自己的项目当中(这个要赞)
10. 所有源码是以public domain这种license形式发布的,非常宽松,你可以随意修改源码,用于任何目的。
11. 跨平台:Unix(Linux和Mac OS X), OS/2, Windows (Win32 and WinCE),也很容易移植到其它平台下边。 (这要归功于C语言啊)
12. 随同发布的有一个命令行可执行程序,用于管理SQLite数据库。(shell.c吧)
建议作如下用途:
1. 用作应用程序的文件格式,比如存储xml或者一些特定格式的文件,这样可以避免使用专有的解析器。这种文件至少可以跨平台读取并且具备事务的特性。(用作配置文件,确实不错,存地址簿,小型数据库等,都可以胜任)
2. 用作嵌入设备的数据库. 手机、PDA、MP3等嵌入设备或移动设备。代码量少,能有效的利用内存、磁盘空间和带宽,高可靠性,也不需要DBA来维护。
3. 网站数据库,因为不需要配置什么东西,对于小中型网站来说,用它用网站数据库也无不可(虽然效率有点低)
4. 替代企业级RDBMS.当你想用demo一个系统,又不想装一个庞大的RDBMS,那么SQLite可以满足你的要求,很快就能帮你完成任务。
不能胜任的地方:
1. C/S结构的应用
如果你的应用程序要通过网络访问后端的数据库,应该考虑使用支持C/S结构的数据库,而不是SQLite. SQLite当中的文件锁并不能保持多客户端同时访问数据库的同一部分导致对文件的损坏。
2. 大型网站
缺省页大小是1KB,一个SQLite数据库的大小限制是2TB,即使它能处理更大的数据库,SQLite仍然是只为一个数据库创建一个磁盘文件,很多文件系统本身的限制,使其大小要小于2TB。所以,它不能支持大型网站的数据库存储。
3. 高并发
SQLite使用读/写来锁定整个数据库文件。如果有一个进程正在读取数据库的任何一部分,就会阻止其它进程去写数据库的任何其它部分。类似,如果有一进程正在写操作,其它所有进程就不能读其它任何部分。在多数情况下,这并不是问题。每个应用都会很快完成数据库操作,锁定的时间也不会太长。但是有些应用需要更高的并发能力,这时必须选择其它数据库来达到高并发。
SQLite未实现的SQL特性
SQLite虽然SQL语法比较宽松,但仍有些SQL92中的语法它还不支持。以后也许会慢慢加入相关支持,以加入的可能性从高到低,如下:
1. right outer join和full outer join,目前只支持左外连接(left outer join)
2. 完整的alter table支持,目前只支持rename table和add column,其它的子语句,如drop column, alter column, add constraint 等,并不支持。
3. 完整的触发器支持, for each row触发器是支持,但是for each statement不支持。
4. 写视图操作。SQLite中的视图是只读的。CUD操作是不允许的。但是,可以让你写一个trigger,发出view上的CUD操作。
5. grant和revoke, SQLite只是读写普通的磁盘文件,访问权限受控于操作系统。因此grant 和 revoke常见于C/S结构的数据库。对于嵌入式数据库引擎SQLite而言,没必要存在。
to be cont.
分享到:
相关推荐
《SQLite权威指南(第二版)》首先从 SQLite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite 的一般SQL 和高级功能的SQL,采取举例说明,使得本书...
《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得本书...
全书首先从 SQLite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite 的一般SQL 和高级功能的SQL,采取举例说明,使得本书内容生动有趣。然后,全面...
《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得本书...
《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得...
The Definitive Guide to SQLite 2nd edition 2010 中文版:SQLite权威指南 电子工业出版社 第一章 介绍 第五章 设计与概念 第十一章 内部机制与新特性
《sqlite权威指南(第二版)》首先从 sqlite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用sqlite。接着,介绍sqlite 的一般sql 和高级功能的sql,采取举例说明,使得本书...
这是一本关于SQLite 起源、特性、简介、使用、深度解析的书。 全书首先从 SQLite 最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite 的一般SQL ...
全书首先从SQLite最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite的一般SQL和高级功能的SQL,采取举例说明,使得本书内容生动有趣。然后,全面介绍...
SQLite权威指南(第二版)。这是一本关于SQLite 起源、特性、简介、使用、深度解析的书。
SQLite权威指南(第二版)是一本关于SQLite起源、特性、简介、使用、深度解析的书。全书首先从SQLite最初起源、特性、设计理念、实际应用讲解开始,逐步深入、全面地介绍了在各个平台如何使用SQLite。接着,介绍SQLite...
sqlite3.08源码及使用指南 sqlite是嵌入式SQL数据库引擎SQLite(SQLite Embeddable SQL Database Engine)的一个扩展。 SQLite是一个实现嵌入式SQL数据库引擎小型C语言库(C library),实现了独立的,可嵌入的,零...
这是一本关于sqlite 起源、特性、简介、使用、深度解析的书。
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 ...• SQLite SQLite SQLite SQLite 用作结构化的数据存储 • 多媒体支持 包括常见的音频、视频和...
Python面向对象编程指南深入介绍Python语言的面向对象特性,全书分3个部分共18章。第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、...
文档还包括一个高级开发指南和 Android 社区的链接。 Samples 目录 samples 子目录包含各种应用程序的源代码,包括 ApiDemo,该应用程序演示了很多 API。这个示例应用程序可以作为 Android 应用程序开发的良好起点。...
Python面向对象编程指南深入介绍Python语言的面向对象特性,全书分3个部分共18章。第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、...
• 照相机,GPS GPS GPS GPS,指南针,和加速度计(accelerometer accelerometer accelerometer accelerometer) (依赖于硬件) • 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse 集成...
试试这个:为GoogleAPI活动增加设置特性 第十章(4) 128 第十一章 应用程序:找一个朋友 128 应用程序:找一个朋友 第十一章(1) 128 创建一个SQLite数据库 第十一章(2) 129 创建一个定制的Content Provider 第十一章...