SQLite Information & SQLite Links at HealthHaven.com
advertise
add site
services
publishers
database
health videos
Bookmark and Share

search wiki for    ?
web dir firms image gallery news pdf wiki shop video 
about
toolbar
stats
live show
health store
more stuff
JOIN/LOGIN
SQLite Logo.svg
Developer(s) D. Richard Hipp
Initial release August 2000 (2000-08)
Stable release 3.6.20 / 2009-11-04; 27 days ago
Written in C
Operating system Cross-platform
Size ~225 kB
Type RDBMS (embedded)
License Public domain
Website http://sqlite.org/

SQLite is an almost ACID-compliant embedded relational database management system contained in a relatively small (~225 kB)[1] C programming library. The source code for SQLite is in the public domain.

The SQLite engine is not a standalone process with which the application program communicates. Instead, the SQLite library is linked in and thus becomes an integral part of the application program. The library can also be called dynamically. The entire database (definitions, tables, indices, and the data itself) is stored as a single cross-platform file on a host machine.

Contents

[edit] Design

Unlike client-server database management systems, the SQLite engine is not a standalone process with which the application program communicates. Instead, the SQLite library is linked in and thus becomes an integral part of the application program. The library can also be called dynamically. The application program uses SQLite's functionality through simple function calls, which reduces latency in database access as function calls within a single process are more efficient than inter-process communication. The entire database (definitions, tables, indices, and the data itself) is stored as a single cross-platform file on a host machine. This simple design is achieved by locking the entire database file during writing.

[edit] History

SQLite was first designed by D. Richard Hipp in the Spring of 2000 while working for General Dynamics on contract with the United States Navy.[2] Hipp was designing software used on board guided missile destroyer ships, which were originally based on HP-UX with an IBM Informix database back-end. The design goals of SQLite were to allow the program to be operated without database installation or administration. In August 2000, version 1.0 of SQLite was released, based on gdbm (GNU Database Manager). SQLite 2.0 replaced gdbm with a custom B-tree implementation, adding support for transactions. SQLite 3.0, partially funded by America Online, added internationalization, manifest typing, and other major improvements.

[edit] Features

SQLite implements most of the SQL-92 standard for SQL but it lacks some features. For example it has partial support for triggers, and it can't write to views. While it supports complex queries, it still has limited ALTER TABLE support, as it can't modify or delete columns.[3]

SQLite uses an unusual type system for an SQL-compatible DBMS. Instead of assigning a type to a column as in most SQL database systems, types are assigned to individual values; in language terms it is dynamically typed. Moreover, it is weakly typed in some of the same ways that Perl is: one can insert a string into an integer column (although SQLite will try to convert the string to an integer first, if the column's preferred type is integer). This adds flexibility to columns, especially when bound to a dynamically typed scripting language. However, the technique is not portable to other SQL databases. The inability to have the domain integrity coming from statically typed columns, as in typical databases, is a common criticism. The SQLite web site describes a "strict affinity" mode, but this feature has not yet been added.[4] However, it can be implemented with constraints like CHECK(typeof(x)='integer').[2]

Several computer processes or threads may access the same database without problems. Several read accesses can be satisfied in parallel. A write access can only be satisfied if no other accesses are currently being serviced, otherwise the write access fails with an error code (or can automatically be retried until a configurable timeout expires). This concurrent access situation would change when dealing with temporary tables.

A standalone program called sqlite3 is provided which can be used to create a database, define tables within it, insert and change rows, run queries and manage an SQLite database file. This program is a single executable file on the host machine. It also serves as an example for writing applications that use the SQLite library.

SQLite also has bindings for a large number of programming languages, including BASIC, C, C++, Clipper, Common Lisp, C#, Curl, Delphi, Haskell, Java, Lua, newLisp, Objective-C (on Mac OS X), OCaml, Perl, PHP, Python, REBOL, R, Ruby, Scheme, Smalltalk, Tcl and Visual Basic. There is also a COM (ActiveX) wrapper making SQLite accessible on Windows to scripted languages such as Javascript and VBScript. This adds database capabilities to HTML Applications (HTA).[5]

SQLite has automated regression testing prior to each release.[6] Over 2 million tests are run as part of a release's verification. Starting with the August 10, 2009 release of SQLite 3.6.17, SQLite releases have 100% branch test coverage, one of the components of code coverage.

[edit] ACID compliance

ACID consistency means that only valid data can be written to the database. If a transaction is executed that violates the database’s consistency rules, the entire transaction should be rolled back and the database restored to a state consistent with those rules. SQLite by design doesn't enforce integrity constraints on data written to the database so it is not ACID-compliant. One could insert e.g. a string into an integer column, too long string or an invalid date into a database with no error. The consistency of data inserted into a database must be verified by an application.[original research?]

[edit] Development

SQLite development is hosted on Fossil, a distributed version control system which is itself built upon an SQLite database.[7]

[edit] Tools

sqlite3 is an interactive commandline tool to run SQL commands directly. This works similar to Oracle's SQL*Plus.

sqlitebrowser is a GUI tool to edit an SQLite database.

[edit] Adoption

Mozilla Firefox stores a variety of configuration data (bookmarks, cookies, etc.) in internally managed SQLite databases. Skype is another widely deployed application that uses SQLite.[8]

Due to its small size, SQLite is well suited to embedded systems, and is also included in Apple's iPhone OS, Symbian OS and Google's Android.[9]

[edit] See also

[edit] References

  1. ^ "Distinctive Features Of SQLite". SQLite. March 3, 2008. http://www.sqlite.org/different.html. Retrieved July 9, 2009. 
  2. ^ a b Owens, Michael (2006). The Definitive Guide to SQLite. Apress. doi:10.1007/978-1-4302-0172-4_1. ISBN 978-1-59059-673-9. 
  3. ^ "SQL Features That SQLite Does Not Implement". SQLite. January 1, 2009. http://www.sqlite.org/omitted.html. Retrieved October 14, 2009. 
  4. ^ "Frequently Asked Questions". SQLite. January 26, 2009. http://www.sqlite.org/faq.html. Retrieved February 7, 2009. 
  5. ^ "sqlite — Sqlite Wrappers". SQLite. February 7, 2009. http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers. Retrieved February 7, 2009. 
  6. ^ "How SQLite Is Tested". SQLite. http://www.sqlite.org/testing.html. Retrieved September 12, 2009. 
  7. ^ "Fossil: Fossil Performance". Fossil-scm.org. 2009-08-23. http://www.fossil-scm.org/index.html/doc/tip/www/stats.wiki. Retrieved 2009-09-12. 
  8. ^ Skype client using SQLite?
  9. ^ Well-known Users of SQLite

[edit] Further reading

  • Newman, Chris (November 9, 2004), SQLite (Developer's Library) (First ed.), Sams, p. 336, ISBN 067232685X 

[edit] External links




Product Results (view all...)

search wiki for    ?
web dir firms image gallery news pdf wiki shop video 



↑ top of page ↑about thumbshots