2.9 KiB
Debian systems
Build Dependency:
libraft-dev (>= 0.17.0 required)
build-essential libsqlite3-dev libuv1-dev pkg-config shellcheck autoconf libtool
Building Script
git clone https://github.com/canonical/dqlite
cd dqlite
autoreconf -i
Download configure script configure_debian
bash configure_debian
make
Build debian packages (.deb)
Download build script build-deb
bash build-deb
dqlite

dqlite is a C library that implements an embeddable and replicated SQL database engine with high availability and automatic failover.
The acronym "dqlite" stands for "distributed SQLite", meaning that dqlite extends SQLite with a network protocol that can connect together various instances of your application and have them act as a highly-available cluster, with no dependency on external databases.
Design highlights
- Asynchronous single-threaded implementation using libuv as event loop.
- Custom wire protocol optimized for SQLite primitives and data types.
- Data replication based on the Raft algorithm and its efficient C-raft implementation.
License
The dqlite library is released under a slightly modified version of LGPLv3, that includes a copyright exception allowing users to statically link the library code in their project and release the final work under their own terms. See the full license text.
Compatibility
dqlite runs on Linux and requires a kernel with support for native async I/O (not to be confused with POSIX AIO), which is used by the libuv backend of C-raft.
Try it
The simplest way to see dqlite in action is to use the demo program that comes with the Go dqlite bindings. Please see the relevant documentation in that project.
Media
A talk about dqlite was given at FOSDEM 2020, you can watch it here.
Here is a blog post from 2022 comparing dqlite with rqlite and Litestream, other replication software for SQLite.
Wire protocol
If you wish to write a client, please refer to the wire protocol documentation.