SQLite(数据库管理系统)

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。至今已经有12个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

概述

SQLite 一个轻量级别数据库, 具有很多不错的特点。 支持事件 不需要配置,不需要安装,也不需要管理员 支持大部分。

作用

SQL92 一个完整的数据库保存在磁盘上面一个文件 同一个数据库文件可以在不同机器上面使用 最大支持数据库到2T 字符和BLOB的支持仅限制于可用内存 整个系统少于3万行代码,少于250KB的内存占用(gcc) 大部分应用比目前常见的 客户端/服务端 的数据库快 没有其它依赖 源代码开放, 代码95%有较好的注释 简单易用的API. 官方带有TCL的编译版本。其它的单独提供。

历史版本

从某种程度上说,SQLite最初的构思是在一条军舰上进行的。当时在通用动力工作的SQLite的作者 [1] D. Richard Hipp正在为美国海军编制一种使用在导弹驱逐舰上的程序。那个程序最初运行在Hewlett-Packard UNIX(HPUX)上,后台使用Informix数据库。对那个具体应用而言,Informix有点儿太强大了。一个有经验的数据库管理员(DBA)安装或升级Informix可能需要一整天,如果是没经验的程序员,这个工作可能永远也做不完。真正需要的只是一个自我包含的数据库,它易使用并能由程序控制传导,另外,不管其他软件是否安装,它都可以运行。

2000年1月,Hipp开始和一个同事讨论关于创建一个简单的嵌入式SQL数据库的想法,这个数据库将使用GNU DBM哈希库(gdbm)做后台,同时这个数据库将不需要安装和管理支持。后来,一有空闲时间,Hipp就开始实施这项工作,2000年8月,SQLite 1.0版发布了。

按照原定计划,SQLite 1.0用gdbm作为存储管理器。然而,Hipp不久就用自己实现的能支持事务和记录按主键存储的B-tree替换了gdbm。随着第一次重要升级的进行,SQLite有了稳定的发展,功能和用户也在增长。2001年中期,很多项目–开源的或商业的–都开始使用SQLite。在随后的几年中,开源社区的其他成员开始为他们喜欢的脚本语言和程序库编写SQLite扩展。一个接着一个,既Perl、Python、Ruby、Java和其他主流的程序设计语言的扩展之后,新的扩展如SQLite的ODBC接口出现并证明了SQLite的广泛应用和实用功能。/n2004年,SQLite从版本2升级到版本3,这是一次重大升级。/n以下是之后的版本更新历史,可以在官网查询到。/n2004-06-09 – Version 2.8.14/n2004-06-18 – Version 3.0.0/n2007-09-04 – Version 3.5.0/n2008-07-16 – Version 3.6.0/n2008-11-19 – Version 3.6.6/n2009-11-04 – Version 3.6.20/n2010-03-09 – Version 3.6.23/n2010-07-22 – Version 3.7.0/n2010-08-24 – Version 3.7.2/n2011-02-01 – Version 3.7.5/n2012-06-11 – Release 3.7.13/n2012-09-03 – Release 3.7.14/n2012-12-12 – Release 3.7.15/n2013-03-18 – Release 3.7.16/n2013-05-20 – Release 3.7.17/n2013-08-26 – Release 3.8.0/n2013-10-17 – Release 3.8.1/n2013-12-06 – Release 3.8.2/n2014-02-03 – Release 3.8.3/n2014-03-10 – Release 3.8.4/n2014-06-04 – release 3.8.5/n2014-08-15 – Release 3.8.6/n2014-10-08 – Release 3.8.7 /n2015-01-16 – Release 3.8.8

注意事项

在确定是否在应用程序中使用 SQLite 之前,应该考虑以下几种情况:

目前没有可用于 SQLite 的网络服务器。从应用程序运行位于其他计算机上的 SQLite 的惟一方法是从网络共享运行。这样会导致一些问题,像 UNIX® 和 Windows® 网络共享都存在文件锁定问题。还有由于与访问网络共享相关的延迟而带来的性能下降问题。

SQLite 只提供数据库级的锁定。虽然有一些增加并发的技巧,但是,如果应用程序需要的是表级别或行级别的锁定,那么 DBMS 能够更好地满足您的需求。

正如前面提到的,SQLite 可以支持每天大约 100,00 次点击率的 Web 站点 —— 并且,在某些情况下,可以处理 10 倍于此的通信量。对于具有高通信量或需要支持庞大浏览人数的 Web 站点来说,应该考虑使用 DBMS。

SQLite 没有用户帐户概念,而是根据文件系统确定所有数据库的权限。这会使强制执行存储配额发生困难,强制执行用户许可变得不可能。

SQLite 支持多数(但不是全部)的 SQL92 标准。不受支持的一些功能包括完全触发器支持和可写视图。

如果您感到其中的任何限制会影响您的应用程序,那么您应该考虑使用完善的 DBMS。如果您可以解除这些限制问题,并且对快速灵活的嵌入式开源数据库引擎很感兴趣,则应重点考虑使用 SQLite。

一些能够真正表现 SQLite 优越性能的领域是 Web 站点,可以使用 SQLite 管理应用程序数据、快速应用程序原型制造和培训工具。

由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地,它将为那些以前无法提供用作持久数据的后端的数据库的应用程序提供了高效的性能。现在,没有必要使用文本文件来实现持久存储。SQLite 之类的嵌入式数据库的易于使用性可以加快应用程序的开发,并使得小型应用程序能够完全支持复杂的 SQL。这一点对于对于小型设备空间的应用程序来说尤其重要。

嵌入式数据库对于加快应用程序开发也很重要,尤其是在用于数据库抽象层(例如PEAR::DB或ezSQL)时。最后,SQLite 正在积极开发中,未来一定会有新的功能,会对开源社区更有用。

该文章由作者:【理学硕士】发布,本站仅提供存储、如有版权、错误、违法等相关信息请联系,本站会在1个工作日内进行整改,谢谢!

发表回复

登录后才能评论