What is SQLite?
SQLite is a relational database management system contained in a C programming library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The lite in SQLite means light weight in terms of setup, database administration, and required resource. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.
In contrast to many other database management systems, SQLite is not a client server database engine. Rather, it is embedded into the end program. SQLite reads and writes directly to ordinary diskfiles. A complete SQL database with multiple tables, indices,triggers, and views, is contained in a single disk file.The database file format is cross-platform, it can freely copy between 32-bit and 64-bit systems or between any operating system. These features make SQLite a popular choice asan Application File Format.
D. Richard Hipp designed SQLite in the spring of 2000 while working for General Dynamics on contract with the United States Navy. Hipp was designing software used for a damage-control system aboard guided missile destroyers, which originally used HP-UX with an IBM Informix database back-end. SQLite began as a Tcl extension. In August 2000, version 1.0 of SQLite was released, with storage based on gdbm (GNU Database Manager).
SQLite uses dynamic types for tables. It means you can store any value in any column, regardless of the data type. It also allows a single database connection to access multiple database filessimultaneously. This brings many nice features like joining tables indifferent databases or copying data between databases in a singlecommand.
SQLite is a compact library.With all features enabled, the library size can be less than 500KiB,depending on the target platform and compiler optimization settings. If optional features are omitted, thesize of the SQLite library can be reduced below 300KiB. SQLite can alsobe made to run in minimal stack space (4KiB) andvery little heap (100KiB), making SQLite a popular database enginechoice on memory constrained gadgets such as cellphones, PDAs, and MP3 players. SQLite generally runs faster the more memoryyou give it. Nevertheless, performance is usually quite good evenin low-memory environments.
The SQLite development team takes code testing and verification very seriously.
The entire database instance resides in a single cross-platform file, requiring no administration.
Small Runtime Footprint
The default build is less than a megabyte of code and requires only a few megabytes of memory. With some adjustments, both the library size and memory use can be significantly reduced.
SQLite supports most of the query language features found in the SQL92 (SQL2) standard.
So, how SQLite is serverless?
Normally, an RDBMS such as MySQL, PostgreSQL, etc. requires a separate server process to operate. The applications that want to access the database server use TCP/IP protocol to send and receive requests. This is called client/server architecture.
As we touch up earlier, SQLite does NOT require a server to run. SQLite database is integrated with the application that accesses the database. The applications interact with the SQLite database read and write directly from the database files stored on disk.
How it is Self-Contained?
SQLite is self-contained means it requires minimal support from the operating system or external library. This makes SQLite usable in any environments especially in embedded devices like iPhones, Android phones, game consoles, media players, etc. If you want to develop an application that uses SQLite, you just need to drop a SQLite file into your project and compile it with your code.
How SQLite require Zero-configuration?
The serverless architecture make it usable without installation. There is no server process that needs to be configured, started, and stopped. Even, SQLite does not use any configuration files.
Why safe for transaction?
All transactions in SQLite are fully ACID-compliant. It means all queries and changes are Atomic, Consistent, Isolated, and Durable. All changes within a transaction take place completely or not at all even when an unexpected situation like application crash, power failure, or operating system crash occurs.
SQLite is used worldwide for testing, development, and in any other scenario where it makes sense for the database to be on the same disk as the application code. SQLite's maintainers consider it to be among the most replicated pieces of software in the world.
Who use SQLite?
Many well known companies are using SQLite database due to its effective features and freeness. Here are the few popular projects/Applications that usage SQLite -
Browsers - Google Chrome, Mozilla Firefox, Opera, Safari, Android Browse, Mozilla Thunderbird etc.
Web application frameworks - Laravel, Drupal, Trac, Ruby on Rails, Django, Bugzilla, web2py etc.
Middleware - ADO.NET, ODBC, XULRunner etc.
Applications - Adobe Systems, Skype, Service Management Facility, Evernote etc.
Operating systems - Google's Android, OpenBSD, FreeBSD, Windows 10, Oracle Solaris 10, Apple's Mac and Ios etc.