An Erlang NIF library providing direct, high-performance access to SQLite3 databases.
Esqlite is an Erlang NIF (Native Implemented Function) library that provides Erlang applications with a high-performance interface to SQLite3 databases. It solves the problem of needing fast, direct database access from Erlang while maintaining the VM's concurrency by using dirty schedulers to avoid blocking the Erlang scheduler during operations.
Erlang and Elixir developers who need to embed and interact with SQLite databases in their applications, particularly those prioritizing performance and requiring modern SQLite features like full-text search (FTS) and JSON support.
Developers choose Esqlite for its direct native implementation, which offers the fastest possible SQLite access from Erlang, and its careful design that prevents blocking the Erlang VM scheduler, ensuring system stability and concurrency.
Erlang NIF for sqlite
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements SQLite3 as a NIF for the fastest possible database access from Erlang, as stated in the README, offering direct native integration.
Uses dirty schedulers to handle database operations without blocking the Erlang VM scheduler, ensuring system stability and maintaining concurrency.
Supports both embedded SQLite3 (version 3.45.2) and system-provided SQLite via the ESQLITE_USE_SYSTEM environment flag, allowing deployment flexibility.
Compiled with recommended flags enabling FTS3/4/5, JSON1, RTREE, GEOPOLY, and math functions, providing access to advanced database capabilities out of the box.
Includes typespecs and extended documentation, as highlighted in the README, improving developer experience and easing integration efforts.
Bugs in the NIF or SQLite can crash the entire Erlang VM, which is a significant stability concern for production systems, as admitted in the README.
The SQLITE_DQS=0 flag enforces single quotes for string literals, breaking queries that use double quotes and requiring migration, which can be a hassle for legacy code.
Version 0.8.0 introduced major API incompatibilities, forcing developers to update their codebase, as noted in the README's migration warnings.