| advertise add site services publishers database health videos | ![]() | about toolbar stats live show health store more stuff JOIN/LOGIN |
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.
[edit] DesignUnlike 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] HistorySQLite 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] FeaturesSQLite 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 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 complianceACID 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] DevelopmentSQLite development is hosted on Fossil, a distributed version control system which is itself built upon an SQLite database.[7] [edit] Toolssqlite3 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] AdoptionMozilla 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
[edit] Further reading
[edit] External links
| |||||||||||||||||||||
| ↑ top of page ↑ | about thumbshots |