You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.9 KiB
96 lines
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](../../../raw/branch/main/configure_debian)
|
|
|
|
```
|
|
bash configure_debian
|
|
|
|
make
|
|
```
|
|
|
|
## Build debian packages (.deb)
|
|
|
|
Download build script [build-deb](../../../raw/branch/main/build-deb)
|
|
|
|
```
|
|
bash build-deb
|
|
```
|
|
|
|
dqlite [](https://github.com/canonical/dqlite/actions/workflows/build-and-test.yml) [](https://codecov.io/gh/canonical/dqlite)
|
|
======
|
|
|
|
[dqlite](https://dqlite.io) 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](https://sqlite.org/) 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](https://libuv.org/)
|
|
as event loop.
|
|
* Custom wire protocol optimized for SQLite primitives and data types.
|
|
* Data replication based on the [Raft](https://raft.github.io/) algorithm and its
|
|
efficient [C-raft](https://github.com/canonical/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](https://github.com/canonical/dqlite/blob/master/LICENSE) text.
|
|
|
|
Compatibility
|
|
-------------
|
|
|
|
dqlite runs on Linux and requires a kernel with support for [native async
|
|
I/O](https://man7.org/linux/man-pages/man2/io_setup.2.html) (not to be confused
|
|
with [POSIX AIO](https://man7.org/linux/man-pages/man7/aio.7.html)), 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](https://github.com/canonical/go-dqlite#demo) in that project.
|
|
|
|
Media
|
|
-----
|
|
|
|
A talk about dqlite was given at FOSDEM 2020, you can watch it
|
|
[here](https://fosdem.org/2020/schedule/event/dqlite/).
|
|
|
|
[Here](https://gcore.com/blog/comparing-litestream-rqlite-dqlite/) 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](https://dqlite.io/docs/protocol)
|
|
documentation.
|
|
|
|
-------------
|
|
[Source Code](../../../../dqlite)
|