转 - SQLite介绍

前端之家收集整理的这篇文章主要介绍了转 - SQLite介绍前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

看了几个sqlite的介绍,收录一下。

原址如下: http://www.apkbus.com/android-18119-1-1.html

SQLite介绍

sqlite开源,内嵌关系型数据库,发布于2000年。
1)内嵌式数据库sqlite,举个列子,比如Perl脚本,一个C/C++程序,PHP编写的Apache进程都使用sqlite。如图1


简单说下:1.Perl脚本导入DBI::sqlite模板,通过它来访问C API,而PHP采用的方式和C相似访问C API,它们都要访问C API。2.说明下虽然它们每个进程中都有独立的数据库服务器,但它们可以操作相同的数据库文件。可以说明一点sqlite 利用操作系统功能来完成数据的同步和加锁。
那么看来sqlite优势是不错的,值得注意的是它是二个完全开放源代码并且不收取许可证费用,另外一个是Firebird,二个当中仅有是专门内嵌应用设计的是sqlite。使用sqlite软件和产品有,Apple的Mac OS X系统中,用作其CoreData应用程序架构一部分。Safari的Web浏览器,Mail.app的电子邮件程序,RSS的管理,Apple的Aperture照片软件,大家对于sqlite知道的不多原因主要是很少做广告,sqlite用在了多钟消费产品中,只是我们没注意。
2)sqlite体系结构
sqlite有3个子系统中的8个独立的模块组成,如图



模块将查询过程划分为几个不连续的任务,好比流水线上工作一样。在体系结构栈的顶部编译查询语句,在中部执行它,在底部处理操作系统的存储和接口。
之后有时间介绍具体使用sqlite.

另外一篇,

数据库服务器 sqlite 介绍

原址如下:http://www.open-open.com/lib/view/1322528992171

sqlite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。

不像常见的客户-服务器范例,sqlite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。

特征

库实现了多数的sql-92标准,包括事务,就是代表原子性一致性隔离性持久性的(ACID),触发器和多数的复杂查询。不进行类型检查。你可以把字符串插入到整数列中。例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。其他用户认为这是主要的缺点。

多个进程线程可以访问同一个数据而没有问题。可以并行的满足多个读访问。只有在其他访问当前不被服务的时候才能满足写访问;否则写访问失败并带有一个错误代码(也可以在可配置的超时过期之后自动的重试)。

提供了叫做sqlite的一个独立程序用来查询和管理sqlite数据库文件。 它也充当写使用sqlite库的应用的一个例子。

语言绑定

可以从C/C++程序中使用这个库,还可以获得对Tcl和一些其他脚本语言的绑定。

在CPAN的DBD::sqlite上有一个Perl的DBI/DBD模块,它不是到sqlite的接口,而是包括整个sqlite数据库引擎在其中并不需要任何额外的软件。

还有一个Python模块叫做Pysqlite

PHPPHP5.0开始包含了sqlite,但是自5.1版之后开始成为一个延伸函式库。sqlite能与PHP4一起工作但不包含在其中。

Rails2.0.3将缺省的数据库配置改为了sqlite 3

sqlite管理客户端

sqlite亦可以作为桌面数据库使用,以下为第三方sqlite的GUI软件。例如,

  • sqliteMan,使用QT开发的一个sqlite客户端,支持多语言、跨平台。sqliteMan
  • sqlite Manager,以 火狐浏览器的扩展形式提供的sqlite客户端。
  • sqlite Database Browser,a graphical client to access sqlite databases
  • sqlPro sql Client,another graphical client to work with sqlite databases

再一篇:

SQLite介绍、学习笔记、性能测试

原址如下: http://www.yongfa365.com/Item/SQLite.html

哪些人,哪些公司或软件在用sqlite:

Nokia's Symbian,Mozilla,Abobe,Google,阿里旺旺,飞信,Chrome,FireFox
可见sqlite的稳定性及性能是不会有什么问题的,详细列表请参见:http://www.sqlite.org/famous.html

网上关于sqlite的介绍一抓一大把,总结起来,他有如下特点:

sqlite优点及适应场合:

轻量级
绿色组件
单一文件
跨平台
查询效率极高
使用事务插入速度极快
支持limit分页
适合查询速度要求较高,内存占用较少的场合,尤其是嵌入式操作系统,如各种手机操作系统,低并发web(99.9%网站是低并发),PHP环境里原生支持sqlite,asp.net/.net winform里可以很方便的使用System.Data.sqlite

缺点与不适应场合:

不适合并发性高的场合 如大量insert,update访问,sql标准支持不全

sqlite vs Access

sqlite官方网站没有与Access对比的说明,我觉得应该是:sqlite是开源的,单文件,不仅可以运行在Windows上,也可以运行在各种Linux系统上,而他的很多场合跟Access是不同的,他的优势足以站在一个比Access更高的位置,所以没有可比性,但我们普通人拿Access跟sqlite比,是因为他们交集的地方,关系到我们取舍。

交集处有:windows系统里web/winform,

在我的测试中
一次插入5行及以上,每行有20来个字符,sqlite使用事务速度远快于access
一次插入多行,每行有8000以上字符,sqlite使用事务速度 快于 access 一倍左右
sqlite查询速度极快,甚至快过sql Server 2008 r2 10倍(因为MSsql索引列不能超过900个字符,所以varchar(max)不能建索引)
单条数据插入速度比Access略慢,事务插入大量数据,在每行数据量不大时,远快于Access
Access经常出现数据库坏的情况,sqlite听说没有这个问题。

sqlite极速Select测试

同样的数据,同样的sql语句:
SELECT * FROM dbo.Articles WHERE txtContent LIKE '%柳永法%'
sqlite及MSsql上执行效率让人震撼,sqlite竟然快MSsql 10倍,
并且sqlite没有进程只看到程序进程内存没有任何升高,而MSsql的进程则从1G多升到了3G多

数据库 条数 查询用时
sqlite 118848 60s
MSsql 118848 540s
sqlite 7428 6s
MSsql 7428 60s

关于sqlite多线程及ASP.net并发测试

  1. //Winform1000个线程同时操作,仅cpu占用很高外,数据正常插入,没有使用Lock
  2. ThreadPool.SetMinThreads(1000,1000);
  3. ThreadPool.SetMaxThreads(1000,1000);
  4. for(inti=0;i<1000;i++)
  5. {
  6. ThreadPool.QueueUserWorkItem((obj)=>
  7. {
  8. sqliteParameter[]parms={
  9. newsqliteParameter("@txtTitle","标题"+obj),
  10. newsqliteParameter("@txtContent","内容可以大于8000"+obj+newstring('=',8000+1000)),
  11. newsqliteParameter("@Adder","添加人"+obj),
  12. newsqliteParameter("@AddTime",DateTime.Now),
  13. newsqliteParameter("@DeptId",1),
  14. };
  15. sqliteHelper.ExecuteNonQuery(sqliteConnectionString,CommandType.Text,@"
  16. insertintoArticles(txtTitle,txtContent,Adder,AddTime,DeptId)values(@txtTitle,@txtContent,@Adder,@AddTime,@DeptId)
  17. ",parms);
  18. },i);
  19. }

猜你在找的Sqlite相关文章