浅谈嵌入式SQLITE数据库实现与应用

合集下载

嵌入式程序开发中SQLite数据库的应用

嵌入式程序开发中SQLite数据库的应用

科技纵览Overview of science■ 刁志坚嵌入式程序开发中SQLite数据库的应用摘要:当前嵌入式程序的开发对于SQLite数据库的应用越来越广泛。

SQLite其本身相比较其他数据库来说有着比较强的独立性,能够很好的避免对外部的依赖,可以很好的降低资源的消耗。

而且SQLite是一款可以很好的嵌入到程序中的嵌入式数据库,能够进行指令配置的程序开发。

本文主要对SQLite数据库的本身进行介绍,分析了它与嵌入式系统之间的相互作用,并且对数据库的加密进行了解释。

关键词:嵌入式程序;SQLite;应用系统;数据库目前科学技术发展迅猛,嵌入式系统的开发已经占领了很多领域,在嵌入式系统的开发过程中对于数据库的应用是必不可少的。

在一些系统的开发过程中需要对数据进行存储和检索,但是当前对于数据库的大多数功能应用甚少,尤其是在进行嵌入式程序开发中,他们使用的资源,包括硬件和软件的使用都是有限的,平常的数据库在程序中很难进行应用。

所以能够更好的应用在嵌入式程序开发使用的数据库因此产生。

所应用的嵌入式数据库其实就是一个支持指定计算机的数据库。

通常情况下,都是将操作系统和所应用的程序集成在所需要的设备中。

1 Sqlite数据库的概述嵌入式数据库是依赖于驱动程序所使用的,在实现对数据库的访问中只需要调动程序即可。

而且嵌入式数据压缩后只有几十KB,很容易进行应用,也很方便适用在嵌入式程序中。

现如今对于嵌入式程序的使用环境还没有制定一个很好地标准,只有制定了一个完善且有效的标准才能使得嵌入式数据库充分展示其特点,发挥开源嵌入式数据库的优势作用。

本文所阐述的SQLite数据库便是比较火热的开源嵌入式数据库中的一种,它是利用C语言进行编写的,所用到的代码行数高达3万行,可以支持2TB的大小。

数据库的数据存放在一个由B+树结构组成的硬盘上,通过SQLite中的自身具备的文件系统从而得到数据库权限。

当今所使用的SQLite嵌入式数据库所能够应用的操作是系统也是越来越广泛,并且所能支持的开发语言也是多种多样的,比如常用的开发语言C,C++,JAVA等。

SQLite数据库在嵌入式系统中的应用实践

SQLite数据库在嵌入式系统中的应用实践

2 S QL i t e 数据库及其应用
2 . 1 概 述
S Q L i t e数 据 库 是 D. R i c h a r d Hi p p用 C语 言
编 写 的 开 源嵌 入 式 数 据库 ,全 部 源 代 码 约 3万 行 ,支 持 的 数 据 库容 量 为 2 T B 。 每 个 数 据 库 完 全存 储在 单个 磁 盘文 件 中 ,数 据 以 B 十树 数据 结 构 的 形 式 存储 在磁 盘 上 ,S Q L i t e根 据 该 文 件 系
S B C 2 4 1 0芯 片 ,它基 于 A R M9 2 0 T内核 ,配 备 存
可 同时读 取 同一 数 据 ,但 仅 有 唯一 进 程 写 入 数 据 。在某 个 进 程 或 线 程 向数 据库 执 行 写 操 作 之 前 ,须 获独 占锁 定 。独 占锁 定后 ,将 不 进 行 其
统获得其数据库权限。( 2 1
S Q L i t e 是 开源 的嵌 入 式 数据 库 ,独 立 性强 , 资 源 占用少 ,能 直 接 嵌 入 到应 用 程 序 中 ,提 供
零 配 置 运 行模 式 ,可 部 署 在 大 多 数嵌 入 式 操 作 系 统 上 ,并 且 支 持 C / C + + 、J a v a等 常用 开 发 工 具 。本 文使 用 的是 S Q L i t e 3 . 3 . 4 , 支 持 多 数 S Q L 9 2标 准 ,如 S E L E C T 、C R E A T E、T A B L E、
据的存取 ,其体积小 ,编译后仅有几十 K B ,非
常 适合 运 行 在 资 源 稀 缺 的嵌 入 式设 备 上 。 由于 它 的应 用 环 境 无 统 一 标 准 ,故应 充 分 利用 其 可 定制 的特 性 ,开放 源码 具有 明显 的优 势 。

推荐:嵌入式数据库sqlite

推荐:嵌入式数据库sqlite

推荐:嵌入式数据库sqlite很久之前有听闻过sqlite,大体上也了解sqlite的优势与应用场合。

这些天看到不少朋友在谈论sqlite,连Google发布的离线版Gmail也都支持sqlite(当然是在HTML5的条件下)。

现在,我就介绍下sqlite 吧:首页说明一下,这个推荐嵌入式数据库叫sqlite,不叫sqllite,有很多网站都误报了。

sqlite第一个ALPHA版本是生于2000年5月。

经过9个年头的发展,现在最新版本是3.6.11了。

sqlite是一个比ACCESS更小的嵌入式数据库,通常用在小型嵌入式设备上。

官方网站:SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化:•易于管理•易于使用•易于嵌入其他大型程序•易于维护和配置许多人喜欢SQLite因为它的小巧和快速. 但是这些特性只是它的部分优点, 使用者还会发现SQLite是非常稳定的. 出色的稳定性源于它的简单, 越简单就越不容易出错. 除了上述的简单、小巧和稳定性外, 最重要的在于SQLite力争做到简单化.简单化在一个数据库引擎中可以说是一个优点, 但也可能是个缺点, 主要决定于你想要做什么. 为了达到简单化, SQLite省略了一些人们认为比较有用的特性, 例如高并发性、严格的存取控制、丰富的内置功能、存储过程、复杂的SQL语言特性、 XML以及Java的扩展, 超大的万亿级别的数据测量等等. 如果你需要使用上述的这些特性并且不介意它们的复杂性, 那么SQLite也许就不适合你了. SQLite没有打算作为一个企业级的数据库引擎, 也并不打算和Oracle或者PostgreSQL竞争.仅凭经验来说SQLite适用于以下场合: 当你更看中简单的管理、使用和维护数据库, 而不是那些企业级数据库提供的不计其数的复杂功能的时候,使用SQLite是一个比较明智的选择. 事实也证明, 人们在许多情况下已经清楚的认识到简单就是最好的选择.SQLite最佳试用场合•网站作为数据库引擎SQLite适用于中小规模流量的网站(也就是说, 99.9%的网站). SQLite可以处理多少网站流量在于网站的数据库有多大的压力. 通常来说, 如果一个网站的点击率少于100000次/天的话, SQLite是可以正常运行的. 100000次/天是一个保守的估计, 不是一个准确的上限. 事实证明, 即使是10倍的上述流量的情况下SQLite依然可以正常运行.•嵌入式设备和应用软件因为SQLite数据库几乎不需要管理, 因此对于那些无人值守运行或无人工技术支持的设备或服务, SQLite是一个很好的选择. SQLite能很好的适用于手机, PDA, 机顶盒, 以及其他仪器. 作为一个嵌入式数据库它也能够很好的应用于客户端程序.•应用程序文件格式SQLite 作为桌面应用程序的本地磁盘文件格式取得了巨大成功.例如金融分析工具、CAD 包、档案管理程序等等. 一般的数据库打开操作需要调用sqlite3_open()函数,并且标记一个显式本地事务的起始点(BEGIN TRANSACTION)来保证以独占的方式得到文件的内容. 文件保存将执行一个提交(COMMIT)同时标记另一个显式本地事务起始点. 这种事务处理的作用就是保证对于应用程序数据文件的更新是原子的、持久的、独立的和一致的.数据库里可以加入一些临时的触发器,用来把所有的改变记录在一张临时的取消/重做日志表中. 当用户按下取消/重做按钮的时候这些改变将可以被回滚. 应用这项技术实现一个无限级的取消/重做功能只需要编写很少的代码.•替代某些特别的文件格式许多程序使用fopen(), fread(), 或fwrite()函数创建和管理一些自定义的文件用来保存数据. 使用SQLite替代这些自定义的文件格式将是一种很好的选择.•内部的或临时的数据库对于那些有大量的数据需要用不同的方式筛选分类的程序, 相对于编写同样功能的代码, 如果你把数据读入一个内存中的SQLite数据库, 然后使用连接查询和ORDER BY子句按一定的顺序和排列提取需要的数据, 通常会更简单和快速. 按照上述的方法使用内嵌的SQLite数据库将会使程序更富有灵活性, 因为添加新的列或索引不用重写任何查询语句.•命令行数据集分析工具有经验的SQL用户可以使用SQLite命令行程序去分析各种混杂的数据集. 原是数据可以从CSV(逗号分隔值文件)文件中导入, 然后被切分产生无数的综合数据报告. 可能得用法包括网站日志分析, 运动统计分析, 编辑规划标准, 分析试验结果.当然你也可以用企业级的客户端/服务器数据库来做同样的事情. 在这种情况下使用SQLite的好处是: SQLite的部署更为简单并且结果数据库是一个单独的文件, 你可以把它存储在软盘或者优盘或者直接通过email发给同事.•在Demo或测试版的时候作为企业级数据库的替代品如果你正在编写一个使用企业级数据库引擎的客户端程序, 使用一个允许你连接不同SQL数据库引擎的通用型数据库后台将是很有意义的. 其更大的意义在于将SQLite数据库引擎静态的连接到客户端程序当中,从而内嵌SQLite作为混合的数据库支持. 这样客户端程序就可以使用SQLite数据库文件做独立的测试或者验证.•数据库教学因为SQLite的安装和使用非常的简单(安装过程几乎忽略不计, 只需要拷贝SQLite源代码或sqlite.exe可执行文件到目标主机, 然后直接运行就可以) 所以它非常适合用来讲解SQL语句. 同学们可以非常简单的创建他们喜欢的数据库, 然后通过电子邮件发给老师批注或打分. 对于那些感兴趣怎样实现一个关系型数据库管理系统(RDBMS)的高层次的学生, 按照模块化设计且拥有很好的注释和文档的SQLite源代码, 将为他们打下良好的基础. 这并不是说SQLite就是如何实现其他数据库引擎的精确模型, 但是很适合学生们了解SQLite 是如何快速工作的, 从而掌握其他数据库系统的设计实现原则.•试验SQL语言的扩展SQLite简单且模块化的设计使得它可以成为一个用来测试数据库语言特性或新想法的优秀的原型平台.。

SQLite数据库在嵌入式程序开发中的应用

SQLite数据库在嵌入式程序开发中的应用
( 4) 精简性。当尺寸优化后, 在不减少功能的 情况下, 整个 SQL it e 小于 225kB。如果在编译时去
* 韩善锋, 男, 1983 年出生, 助理工程师。2006 年毕业于中国石油大学( 华东) 测绘工程专业, 现从事测量技术的支持与研究工作。
第 21 卷 第 3 期
韩善锋 等: SQL it e 数据库在嵌入式程序开发中的应用
2011 年 6 月
物探装备
第 21 卷 第 3 期
IT 与装备
SQLite 数据库在嵌入式程序开发中的应用
韩善锋* 1 曹凤海1 易昌华2
( 东方地球物理公司, 河北涿州 072750: 1. 装备事业部仪器服务中心; 2. 装备事业部)


韩善锋, 曹凤海, 易昌华. SQLite 数据库在嵌入式 程序开发中的应用. 物探装备. 2011, 21( 3) : 170~ 173, 178
在 PC 机应用程序开发方面, SQL ite 数据库也 是桌面轻量级数据 库的首选。Access 数据库 虽然
图 1 A ccess 和 SQ L ite 运行效率对比
是一个常用 的桌 面轻量 级数 据库软 件, 但是 由于 Access 数据库不支持事务操作, 其运行效率明显低 于 SQL it e 数 据 的 运 行 效 率。 图 1 是 Access 和 SQL ite 运行效率对比的实例。
void* , char** errm sg ) ; SQ L 语句执行后, 通过回调函数 返回 SQ L 语
句的执行结果。callback 回调函数由 用户编写, 用 来接收查询结果, 查询结果的每一条记录都会调用 callback 函数 一次, 其 原型为: int callback ( void* pArg , int ar gc, char** columnNam es) , 其中, 第 一个参数是接收用户代码的任意信息; 第二个参数 是字段数; 第三个参数是一个字符串数组, 每一个字 符串记录一个字段值; 第四个参数是字段名。cal-l back 函数是用户根据应 用编写的, 正常应返 回 0。 如果 callback 函数非 0, 则说明查询失败。 3. 2. 2 在 W inCE 平台中使用 SQL it e 数据库

SQLite嵌入式数据库系统的研究与实现

SQLite嵌入式数据库系统的研究与实现

SQLite嵌入式数据库系统的研究与实现首先,我们来了解一下SQLite的特点和优势。

SQLite是一个零配置的数据库引擎,它不需要任何额外的配置或管理,只需简单地将其嵌入到应用程序中即可使用。

由于SQLite的设计目标是提供一个嵌入式数据库引擎,它占用的资源非常少,可以在资源有限的设备上运行,例如移动设备和嵌入式系统。

此外,SQLite还具有高性能和稳定性的特点,能够处理大量的数据和高并发访问。

SQLite的实现是基于一种名为B树的数据结构。

B树是一种平衡的多路树,它能够高效地支持插入、删除和查找操作。

在SQLite中,所有的数据都存储在B树中,包括表、索引和数据行。

这种设计使得SQLite在处理大量数据时能够保持较高的性能。

SQLite的数据存储方式也是其独特之处。

与传统的数据库系统不同,SQLite并不使用独立的数据文件来存储数据,而是将所有的数据存储在一个文件中。

这个文件称为数据库文件,它包含了所有的表、索引和数据行。

这种设计简化了数据库的管理和备份,同时也提高了数据库的可移植性。

在实现SQLite时,我们需要考虑以下几个关键问题。

首先是数据库文件的格式和存储方式。

SQLite使用一种名为SQLite格式的文件来存储数据,它是一种自描述的文件格式,能够描述数据库的结构和内容。

在实现时,我们需要设计一种合适的数据结构来表示数据库文件,并提供相应的读写操作。

其次是SQL语句的解析和执行。

SQLite支持标准的SQL语言,包括数据定义语言(DDL)和数据操作语言(DML)。

在实现时,我们需要设计一种解析器来解析SQL语句,并将其转换为相应的执行计划。

执行计划是一种描述SQL语句执行方式的数据结构,它包含了执行SQL语句所需的操作和顺序。

最后是并发控制和事务管理。

并发控制是指在多个用户同时访问数据库时,如何保证数据的一致性和隔离性。

事务管理是指如何处理多个操作的组合,保证它们要么全部执行成功,要么全部不执行。

sqlite3介绍

sqlite3介绍

sqlite3介绍SQLite3是一种嵌入式数据库引擎,它提供了一种轻量级、快速、可靠的存储解决方案。

本文将介绍SQLite3的基本概念、特点、使用方法以及应用场景等方面的内容。

一、SQLite3的基本概念SQLite3是一种开源的关系型数据库管理系统,它以库的形式提供,可以嵌入到各种应用程序中使用。

SQLite3的数据库以文件的形式存储在磁盘上,每个数据库文件包含多个表,每个表包含多个行和列,类似于传统的关系型数据库。

二、SQLite3的特点1. 轻量级:SQLite3的代码库非常小巧,可以很容易地嵌入到应用程序中,不需要独立的服务器进程。

2. 快速:SQLite3采用了一种独特的架构,可以在没有任何网络延迟的情况下快速访问数据。

3. 可靠:SQLite3使用事务机制来保证数据的一致性和完整性,可以在崩溃或断电等异常情况下恢复数据。

4. 兼容性:SQLite3支持标准的SQL语法,可以与其他关系型数据库进行兼容。

三、SQLite3的使用方法1. 安装:SQLite3可以在多个操作系统平台上使用,可以从官方网站下载对应平台的安装包进行安装。

2. 创建数据库:可以使用命令行工具或者编程语言提供的API来创建数据库文件。

3. 创建表:可以使用SQL语句来创建表,并定义表的结构和字段类型。

4. 插入数据:可以使用INSERT语句将数据插入到表中。

5. 查询数据:可以使用SELECT语句来查询数据,支持多种查询条件和排序方式。

6. 更新数据:可以使用UPDATE语句来更新表中的数据。

7. 删除数据:可以使用DELETE语句来删除表中的数据。

8. 执行事务:可以使用BEGIN、COMMIT和ROLLBACK语句来执行事务操作,保证数据的一致性和完整性。

四、SQLite3的应用场景1. 移动应用程序:由于SQLite3的轻量级和快速特性,适合在移动设备上使用,可以用于存储用户数据、日志记录等。

2. 桌面应用程序:SQLite3可以作为桌面应用程序的本地数据库,用于存储和管理各种数据。

嵌入式数据库SQLite的原理与应用

嵌入式数据库SQLite的原理与应用

嵌入式数据库SQLite的原理与应用唐敏,宋杰(安徽大学计算机学院,安徽合肥230039)摘要:随着嵌入式技术的发展,在嵌入式系统中越来越多地用到数据库。

首先介绍了嵌入式数据库的基本特点,进而详细介绍了一个简洁实用的嵌入式数据库———SQLite,包括SQLite的技术特性、体系结构以及基本的函数调用,着重介绍SQLite在arm-linux平台上的应用开发、交叉编译和移植过程。

关键词:嵌入式数据库;SQLite;arm-linux中图分类号:TP392文献标识码:A文章编号:1009-3044(2008)04-10600-04TheMechanismandApplicationsofSQLiteTANGMin,SONGJie(TheComputerInstituteofAnhuiUniversity,Heifei230039,China)Abstract:Withthedevelopmentofembedded-computingtechnology,manyembeddedsystemsdeployembeddeddatabase.Thebasiccharacteristicoftheembeddeddatabaseisfirstlypresented.Anexcellentembeddeddatabase-SQLiteissecondlytalked.Includingthedis-tinctivefeaturesandthearchitectureofit,howtouseSQLiteisthirdlydescribed.Theapplicationdeveloping,crosscompilingandportinginarm-linuxplatformarealsointroduced.Keywords:embeddeddatabase;SQLite;arm-linux1引言嵌入式技术正在提供人们越来越多有趣而新颖的服务,在许多的嵌入式系统开发中都要用到数据库,比如电信交换机、消费类电子、办公自动化设备等高科技产品。

嵌入式系统技术报告(题目 SQLite数据库的概述和使用)

嵌入式系统技术报告(题目  SQLite数据库的概述和使用)

合肥学院嵌入式系统设计课程技术报告(2014- 2015第2学期)报告题目:SQLite数据库概述和使用专业:自动化班级:级自动化卓越班姓名:指导老师:干开峰摘要自几十年前出现的商业应用程序以来,数据库就成为软件应用程序的主要组成部分。

正与数据库管理系统非常关键一样,它们也变的非常庞大,并占用相当多的系统资源。

嵌入式数据库直接在应用程序进程中运行,提供了零配置运行模式,并且资源占用非常少。

作为一个开源的嵌入式数据库产品,SQLite具有系统开销小,检索效率高的特性,嵌入式数据库无须独立运行的数据库引擎,它是由程序直接调用相应的API去实现对数据的存取操作。

更直白的讲,嵌入式数据库是一种具备了基本数据库特性的数据文件。

嵌入式数据库与其它数据库产品的区别是,前者是程序驱动式, 而后者是引擎响应式。

嵌入式数据库的一个很重要的特点是体积非常小,同时,很多嵌入式数据库在性能上也优于其它数据库,所以在高性能的应用上也常见嵌入式数据库的身影。

SQLite 是D·理查德·希普开发出来的用一个小型C库实现的一种强有力的嵌入式关系数据库管理体制。

SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库。

关键词:SQLite;嵌入式;数据库目录1 SQLite简介 (1)2 SQLite工作原理 (1)3 SQLite的功能特性 (2)4 SQLite的结构 (2)5 SQLite的使用 (4)5.1 SQLite里面的一些基本的操作: (4)5.2 SQLite的一些类的使用及说明: (5)5.3 SQLite嵌入式数据库使用注意: (10)6 总结 (11)1 SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开源(Opensource):这是它最强大的地方。

开源,意味着你可以品读它的源码,你可以随时修改它,加入你自己的特性,而这一切完全免费的。

开源,是一种精神。

实现部分
好了,现在从实现的角度来谈谈个人体会,这也是我比较关注的。

SQLite是一款优秀的嵌入式数据库管理系统,这里有两层含义:一是它经常作为动态库嵌入到应用程序;
另外一方面它通常用于嵌入式设备或其它要求较低的桌面应用。

如果把它作为内存数据库,个人觉得不是很适合。

毕竟,它的写并发性不是很好,此时,TimesTen也许会更好,Berkey DB也许是一个不错的选择。

SQLite这样的嵌入式数据库与主存数据库的应用场景、实现以及对资源的需求都是不一样的。

(1)事务处理
事务的核心问题有两个:并发控制和恢复。

解决了并发控制和恢复问题的系统,就能允许它的用户假设程序是原子的(atomically)执行的——好像没有其它的程序同时执行;而且是可靠的(reliably)——不会产生失败。

原子性和可靠性的抽象,则称为事务(transaction)。

其实,事务并不是DBMS的专利,任何分布式系统,都面对并发和恢复问题,而解决的方法就是事务,只不过,我们更常听到DBMS中的事务。

并发控制保证事务的原子执行,它使得交错执行的事务看起来是一个接一个的顺序执行的,完全没有交错执行。

如果交错执行的结果与顺序执行的结果一致,则称为串行化(serializable)。

恢复使得数据库仅仅包含那些正常完成的事务的结果。

如果事务在执行的过程中发生错误,不能继续进行,恢复算法必须清除部分完成事务产生的影响。

∙并发控制
SQLite只支持库级锁,库级锁意味着什么?——意味着同时只能允许一个写操作,也就是说,即事务T1在A表插入一条数据,事务T2在B表中插入一条数据,这两个操作不能同时进行,即使你的机器有100个CPU,也无法同时进行,而只能顺序进行。

表级都不能并行,更别说元组级了——这就是库级锁。

但是,SQLite尽量延迟申请X锁,直到数据块真正写盘时才申请X锁,这是非常巧妙而有效的。

∙恢复
SQLite的恢复技术是影子分页技术(shadow paging)技术的典型代表。

DBMS的常用恢复技术有影子分页技术与基于日志的技术,前者在早其数据库管理系统中用到,比如Sys tem R,现代DBMS中已经很难见到它的身影了。

影子分页技术与基于日志技术相比,优点是实现简单,消除了写日志记录的开销,恢复的速度也快(不需要redo和undo)。

影子分页的缺点就是事务提交时要输出多个块,这使得提交的开销很大,而且以块为单位,很难应用到允许多个事务并发执行的情况——这是它致命的缺点。

(2)查询处理
SQLite的查询处理本质上就是一个SQL编译器和一个虚拟机。

而实现这些功能只用了十多个文件,整个实现实现简单而有效,但是也存在一些问题。

首先,SQLite字典数据很简单,实际上它的字典就一个表s qlite_mater,所有的信息都是通过对sqlite_master中SQL语句进行解析获取的,而解析一个SQL语句,都需要进行词法分析、语法分析、甚至虚拟机代码的生成。

而这一过程是很需要时间的,而且,查询计划也没有重用。

其次,查询优化还比较简单,特别是连接操作,只通过循环来做(MySQL也一样)。

但是,仅仅数万代码,我们不能对它要求太苛求。

(3)存储模型
SQLite的文件物理上被划分成相同大小的块;逻辑上划分成一些B-Tree——每个表对应一个B-Tree。

而没有像Oracle,或者InnoDB对数据块进行复杂的逻辑组织,这种按需分配数据块的做法必然影响磁盘的读写性能。

不过,归根到底,还是源于它的应用场景。

(4)缓冲区管理
Buffer的管理对于DBMS,无疑是非常重要的,SQLite在其它方面做得比较简单,但是在缓冲区管理这一块,它还是做足了功夫。

SQLite采用DBMS常用的LRU算法。

更值得一提的是,在较新的版本中,S QLite采用和虚拟文件系统的类似的方式,实现了让默认缓冲区管理子系统可以很容易的切换成其它的缓冲区管理算法,这是非常灵活的。

(5)I/O
SQLite采用简单的阻塞I/O,较新的版本将异步I/O作为可选的扩展,但是,由于SQLite没有日志,所以,事务中ACID中的D,就无法保证,所以,如果你的数据很关键,请不要用SQLite的异步I/O。

另一方面,实际上,很多嵌入式操作系统,比如Windows CE并不支持异步I/O(不过,这可以通过多线程加以解决)。

但是,这些“缺点”并不是SQLite的缺点,相对于通过DBMS,恰恰是它的优点,这样的实现简单,而且对资源的需求较低。

对嵌入式设备、或者那些要求较低的应用,已经足够,足够就好。

应用场景
嵌入式设备:这应该是SQLite应用的主要场景,很多公司都在他们的嵌入式应用程序中使用SQLite,其中不乏google的Android。

桌面应用:如果你已经厌恶了fopen,fread,fwrite这些函数,SQLite是你不错的选择,它接口简单,而且支持事务。

前些天无意中下了一个cookie清除软件——CookieCrumbler,打开一看,发现里面竟然有一个sqlite3.dll,着实让我震惊了一把。

Websites:如果你的站点的访问量、数据量小的个人站点,SQLite可以代替开销较大的MySQL和繁杂的Access。

后记
SQLite正在不断发展,开源的力量是巨大的,相信它的应用会越来越广泛。

Wish~。

相关文档
最新文档