SQLite

SQLite/ˌɛskjuːɛlˈlt/[6]/ˈskwəl.lt/[7])是遵守ACID关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户进程中。

SQLite
开发者D. Richard Hipp
首次发布2000年8月17日2000-08-17[1]
当前版本
  • 3.45.2 (2024年3月12日;稳定版本)[2]
源代码库
编程语言ANSI C[3]
操作系统跨平台[3]
文档大小小于600KiB[3]
语言英语
类型关系型数据库(嵌入式)
许可协议公有领域[4]
网站sqlite.org 编辑维基数据
SQLite数据库文档格式
.sqlite, .sqlite3, .db, .db3, .s3db, .sl3
application/vnd.sqlite3[5]
首次发布2004-06-18
自由格式是的(共有领域
网站www.sqlite.org/fileformat2.html

SQLite遵守ACID,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法。[8]它作为嵌入式数据库,是应用进程,如网页浏览器,在本地/客户端存储数据的常见选择。它可能是最广泛部署的数据库引擎,因为它正在被一些流行的浏览器、操作系统嵌入式系统所使用[9]。同时,它有许多进程设计语言的语言绑定

SQLite是D. Richard Hipp创建的公有领域项目。[4]

设计

不像常见的客户端/服务器结构数据库管理系统,SQLite引擎不是一个应用进程与之通信的独立进程。SQLite库链接到进程中,并成为它的一个组成部分。这个库也可被动态链接。应用进程经由编程语言内的直接API调用来使用SQlite的功能,这在减少数据库访问延迟上有积极作用,因为在一个单一进程中的函数调用比跨进程通信更有效率。SQLite将整个数据库,包括定义、表、索引以及数据本身,作为一个单独的、可跨平台使用的文档存储在主机中。它采用了在写入数据时将整个数据库文档加锁的简单设计。尽管写操作只能串行进行,但SQLite的读操作可以多任务同时进行。

SQLite将PostgreSQL作为参考平台。项目将“PostgreSQL可能做些什么”作为SQL标准实现的开发参考。[10][11]然而与这个目标最重要的偏差在于,除了主键以外,SQLite不强制进行类型检查。一个值的类型是动态的,不被schema所强制限制(虽然如此,但如果可以进行可恢复的类型转换时,schema会在存储数据时触发一个自动转换)。

特征

程序库实现了多数的SQL-92标准,包括事务,以及实现原子性一致性隔离性持久性(即ACID),但它缺失了某些特性。例如,它仅部分支持触发器。尽管它支持大多数的复杂查询,但它的ALTER TABLE功能有所限制,不能修改或删除列,只能通过重新创建表的方式迂回进行。

SQLite不进行类型检查。你可以把字符串插入到整数列中。某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候;然而其他用户认为这是主要的缺点。

多个进程线程可以同时访问同一个数据而没有问题。可以同时平行读取同一个数据库。但同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误消息(或者会自动重试一段时间;自动重试的逻辑以及重试时间的长短是可以设置的)。

编程者还提供了一个叫做sqlite3的独立进程用来查询和管理SQLite数据库文档。SQLite的用户可以把这个程序当作如何写SQLite应用程序的范例。

语言绑定

目前有大量的编程语言提供使用SQLite的绑定,包括:

  • C/C++[12]
  • C#VB.Net[13]Mono实作,需要.NET Framework4.0以上版本,并支持Entity Framework
  • Tcl[14]
  • CPANDBD::SQLite上有一个PerlDBI/DBD模块,它不是到SQLite的接口,而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。
  • Python自2.5之后将pysqlite[15]内置,模块名为sqlite3(import sqlite3;下载的package名为pysqlite3)。[16]
  • PHP从PHP 5.0开始已经包含SQLite,但是自5.1版之后,SQLite开始成为一个延伸函数库。SQLite能与PHP4一起工作,但不包含在PHP4里面。
  • Rails2.0.3将缺省的数据库配置改为了SQLite 3。
  • Haskell[17]
  • Java[18]
  • Delphi: DISQLite3作为Delphi的一个第三方控件,不是SQLite的API,也不是接口,而是把SQLite数据库引擎重新封装编译到Delphi的目标进程中。

SQLite管理客户端

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

  • Navicat for SQLite是一套专为SQLite设计的强大数据库管理及开发工具。它可以用于任何版本2或3的SQLite数据库,并支持大部份SQLite的功能,包括触发器、索引、查看等。
  • SQLiteMan,使用Qt开发的一个SQLite客户端,支持多语言、跨平台。
  • Firefox,可以借由安装扩展成为SQLite客户端管理工具,包括SQLite ManagerSQLite Reader、SQLite Manager[19](另一个同名的WebExtensions扩展)。
  • SQLite Database Browser,一款连接SQLite数据库的图形客户端。
  • SQLite Expert Personal,Windows上的一款连接SQLite数据库的免费客户端。
  • Database .NET[20],一套适用于 Windows 平台的免安装绿色软件,支持多种可视化数据库管理工具,除了 SQLite 之外也支持 Microsoft SQL Server、SQL Azure、MySQL、Oracle、IBM DB2、Informix、PostgreSQL、HP Vertica、NuoDB、Teradata、Sybase ASE、Firebird、Access、Excel、DBase、SQLCe... 等数据库软件。

参考文献

  1. . SQLite.org. [2018-09-19]. (原始内容存档于2018-09-19).
  2. . 2024年3月12日 [2024年3月13日].
  3. . SQLite.org. [2018-09-19]. (原始内容存档于2018-09-19).
  4. . sqlite.org. [May 17, 2010]. (原始内容存档于2015-12-17).
  5. . Internet Assigned Numbers Authority. IANA. [2019-03-08]. (原始内容存档于2022-11-09).
  6. D. Richard Hipp (presenter). (video). Google Inc. 事件发生在 00:01:14. May 31, 2006 [March 23, 2010]. (原始内容存档于2015-11-27). [...] ess-kju-ellite [...]
  7. D. Richard Hipp (presenter). . Google Inc. 事件发生在 00:48:15. May 31, 2006 [March 23, 2010]. (原始内容存档于2015-11-27). [...] sequelite [...]
  8. Owens, Michael. . Gilmore, Jason; Thomas, Keir (编). . D. Richard Hipp (foreword), Preston Hagar (technical reviewer). Apress. 2006: 133 [30 December 2014]. ISBN 978-1-59059-673-9. (原始内容存档于2020-11-24).
  9. . Sqlite.org. [May 11, 2011]. (原始内容存档于2015-07-17).
  10. . [2015-06-25]. (原始内容存档于2015-06-29).
  11. . [2015-06-25]. (原始内容存档于2014-12-30).
  12. . sqlite.org. [Jan 22, 2016]. (原始内容存档于2016-02-05).
  13. . sqlite.org.
  14. . sqlite.org. [Jan 22, 2016]. (原始内容存档于2016-01-29).
  15. pysqlite页面存档备份,存于
  16. . python.org. [Jan 22, 2016]. (原始内容存档于2012-10-18).
  17. . [Jan 22, 2016]. (原始内容存档于2016-01-28).
  18. . [Jan 22, 2016]. (原始内容存档于2016-01-25).
  19. SQLite Manager页面存档备份,存于
  20. Database .NET页面存档备份,存于

参阅

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.