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.

SQLite

Why SQLite?

  • 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

  • SQLite comes with zero-configuration, which means no setup or administration
    needed.
  • 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.

Advantages

  • 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.

Disadvantages

  • 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

SQLite

Data access with more precision than a serverless database, allowing for more finegrained locking and better concurrency.

Blog: by Disha Raval

Get a Quote