`
iihero
  • 浏览: 259592 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQLite指南(1) -- SQLite的特性

 
阅读更多
使用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.
1
1
分享到:
评论

相关推荐

    sqlite-autoconf-3071000.tar.gz

    1. 解压文件:`tar -xzf sqlite-autoconf-3071000.tar.gz` 2. 进入解压后的目录:`cd sqlite-autoconf-3071000` 3. 配置构建环境:`./configure` 4. 编译源代码:`make` 5. 安装到系统:`sudo make install` 通过...

    sqlite-autoconf-3090100.tar.gz

    5. `INSTALL`: 包含编译和安装SQLite的简要指南。 6. `README`: 提供关于SQLite项目的基本信息和使用提示。 7. `configure.ac`: Autoconf的输入文件,定义了检查系统特性的条件和生成`configure`脚本的规则。 要...

    sqlite-autoconf-3.7.6

    SQLite是一款开源、轻量级的嵌入式关系型数据库管理系统,因其无服务器、零配置、事务支持、跨平台等特性,在各类应用场景中被广泛应用。"sqlite-autoconf-3.7.6"指的是SQLite的3.7.6版本的自动配置包,这个版本发布...

    sqlite-jdbc-3.32.3.2.jar,支持mips64elloongarch64可

    除了上述基本操作,SQLite JDBC驱动还支持事务处理、存储过程、批量更新等高级特性。它使得在各种操作系统和硬件平台(包括mips64elloongarch64)上使用SQLite变得更加便捷,对于Java开发者来说,这是一个强大的工具...

    sqlite-autoconf-3130000.tar.gz

    3. `doc/`:包含SQLite的文档,如API参考、用户指南和技术论文。 4. `configure.ac`和`Makefile.am`:这些是用于自动构建过程的元文件,它们定义了如何构建项目和其组件。 5. `tests/`:测试套件,用于验证SQLite的...

    sqlite-autoconf-3080700.tar.gz

    3. **docs/**:文档目录,包括API参考、设计文档和用户指南,帮助开发者理解和使用SQLite。 4. **test/**:测试用例和脚本,用于验证SQLite的功能和性能,确保其正确性和稳定性。 5. **configure.ac** 和 **Makefile...

    sqlite-doc-3080500.zip

    "sqlite-doc-3080500.zip" 是SQLite3官方提供的开发文档,包含了详细的API参考、教程和指南,是开发者理解和使用SQLite3的重要资源。 在SQLite3的文档中,我们可以学习到以下几个关键知识点: 1. 数据库概念:...

    sqlite-amalgamation-3.8.8.tar.tgz

    1. **SQLite的特性**: - **无服务器模式**:SQLite不需要单独的数据库服务器进程,而是直接嵌入到应用程序中运行。 - **自包含**:所有必要的组件都封装在一个单一的动态链接库或静态库中,无需额外安装。 - **...

    sqlite-autoconf-3150200.tar.gz

    4. **doc/**:文档目录,提供SQLite的用户手册、开发者指南以及API参考文档。 5. **examples/**:示例程序目录,展示了如何在不同语言(如C、Python等)中使用SQLite API。 6. **ext/**:扩展功能目录,可能包含了...

    sqlite-amalgamation-3070500

    1. `sqlite3.c`:包含了SQLite的全部源代码,用于编译为数据库引擎。 2. `sqlite3.h`:头文件,提供给应用程序进行链接和调用SQLite API。 3. `sqlite3.sql`:用于测试和验证SQLite行为的SQL脚本。 4. `Makefile`:...

    sqlite-doc-3070900.zip

    SQLite3.7.9是SQLite的一个版本,它在2011年发布,提供了许多改进和新特性。`sqlite-doc-3070900.zip`是一个压缩包,包含了SQLite 3.7.9版本的完整文档,为开发者提供详细的使用和参考信息。 SQLite的文档通常包括...

    SQLite权威指南(第2版)

    通过阅读《SQLite权威指南(第2版)》,你可以深入了解SQLite的内部机制,掌握其高级特性,并在实际项目中有效利用SQLite的强大功能。无论是初学者还是经验丰富的开发者,都能从中受益,提升数据库管理和应用开发的...

    SQLite-1.0.49.0-source.zip_sqlite_sqlite-source_内存数据库

    1. **SQLite的特性**:SQLite支持SQL标准,可在多种操作系统上运行,包括Windows、Linux、Mac OS X等。它支持事务处理,具备ACID属性,即原子性、一致性、隔离性和持久性,保证了数据的可靠性。 2. **内存数据库**...

    sqlite3_database.zip_sqlite3_sqlite3 arm-linux_sqlite3移植 arm

    1. **SQLite3数据库**: SQLite3是一个自包含、无服务器、事务性的SQL数据库引擎,它被设计为可嵌入到各种应用程序中,提供数据库功能。 2. **ARM架构**: ARM处理器广泛应用于移动设备和嵌入式系统,其低功耗和高...

    sqlitedll-3_2_1.zip_sql_sqlite_sqlitedll-3

    SQLite的优势在于它的轻量级特性,不需要单独的服务器进程,直接在应用进程中运行,节省了资源。此外,它支持ACID事务,具备良好的跨平台性,可以在多种操作系统上运行,并且提供了丰富的API供开发者使用。 在使用...

    SQlite-PocketReference-final.pdf

    最后,文档提到了一些在线资源,如SANS Institute提供的相关课程,以及Sarah Edwards和Heather Mahalik的个人网站,这些资源可能包含更多关于SQLite数据库取证分析的知识和实践指南。对于想要深入了解SQLite及其在...

    数据库sqlite 小型数据库

    `sqlite命令.txt`可能包含SQLite的命令行工具的使用指南,SQLite提供了命令行接口供用户直接操作数据库,如创建表、插入数据、查询等。 `sqlite3_analyzer-3.7.1-win32.zip`是SQLite分析工具,用于分析数据库的内部...

    安卓SQLite数据库相关-超简单的SQLite的使用.rar

    SQLite支持标准的关系型数据库特性,如SQL语法、事务处理和预编译语句等,这使得它非常适合在移动设备上使用,因为它们通常具有有限的内存和处理能力。 标题“安卓SQLite数据库相关-超简单的SQLite的使用”暗示了这...

Global site tag (gtag.js) - Google Analytics