SQLite – Overview
SQLite is a software library that provides a relational database management system. The lite in SQLite means light weight in terms of setup, database administration, and required resource.
SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world with more applications than we can count, including several high-profile projects.
- It can be very handy to use a database like storage when you have no access to a database service.
- QLite is a public-domain software package that provides a relational database management system, or RDBMS. Relational database systems are used to store user-defined records in large tables. In addition to data storage and management, a database engine can process complex query commands that combine data from multiple tables to generate reports and data summaries. Other popular RDBMS products include Oracle Database, IBM’s DB2, and Microsoft’s SQL Server on the commercial side, with MySQL and PostgreSQL being popular open source products. The “Lite” in SQLite does not refer to its capabilities. Rather, SQLite is lightweight when it comes to setup complexity, administrative overhead, and resource usage
- SQLite does not require a separate server process or system to operate (serverless).
- SQLite comes with zero-configuration, which means no setup or administration
- A complete SQLite database is stored in a single cross-platform disk file.
- SQLite is very small and light weight, less than 400KiB fully configured or less than
250KiB with optional features omitted.
- SQLite is self-contained, which means no external dependencies.
- SQLite transactions are fully ACID-compliant, allowing safe access from multiple
processes or threads.
- Small footprint: As its name implies, the SQLite library is very lightweight. Although
the space it uses varies depending on the system where it’s installed, it can take up
less than 600KiB of space. Additionally, it’s fully self-contained, meaning there aren’t
any external dependencies you have to install on your system for SQLite to work.
- User-friendly: SQLite is sometimes described as a “zero-configuration” database
that’s ready for use out of the box. SQLite doesn’t run as a server process, which
means that it never needs to be stopped, started, or restarted and doesn’t come
with any configuration files that need to be managed. These features help to
streamline the path from installing SQLite to integrating it with an application.
- Portable: Unlike other database management systems, which typically store data as
a large batch of separate files, an entire SQLite database is stored in a single file. This
file can be located anywhere in a directory hierarchy, and can be shared via
removable media or file transfer protocol.
- Limited concurrency: Although multiple processes can access and query an SQLite
database at the same time, only one process can make changes to the database at
any given time. This means SQLite supports greater concurrency than most other
embedded database management systems, but not as much as client/server
RDBMSs like MySQL or PostgreSQL.
- No user management: Database systems often come with support for users, or
managed connections with predefined access privileges to the database and tables.
Because SQLite reads and writes directly to an ordinary disk file, the only applicable
access permissions are the typical access permissions of the underlying operating
system. This makes SQLite a poor choice for applications that require multiple users
with special access permissions.
- Security: A database engine that uses a server can, in some instances, provide better
protection from bugs in the client application than a serverless database like SQLite.
For example, stray pointers in a client cannot corrupt memory on the server. Also,
because a server is a single persistent process, a client-server database cancontrol
Data access with more precision than a serverless database, allowing for more finegrained locking and better concurrency.
Blog: by Disha Raval