Skip to content
forked from canonical/dqlite

Embeddable, replicated and fault tolerant SQL engine.

License

Notifications You must be signed in to change notification settings

budavarapu/dqlite

This branch is 884 commits behind canonical/dqlite:master.

Folders and files

NameName
Last commit message
Last commit date
May 31, 2021
Jul 30, 2018
Aug 3, 2020
Aug 21, 2020
Aug 4, 2020
May 5, 2021
Apr 27, 2021
Jun 23, 2019
Aug 24, 2019
Aug 20, 2019
Jul 11, 2017
Sep 10, 2020
Oct 24, 2019
Sep 10, 2020
May 13, 2021
Jul 30, 2018
Apr 29, 2021
Sep 10, 2020

Repository files navigation

dqlite Build Status codecov

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.

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.

Wire protocol

If you wish to write a client, please refer to the wire protocol documentation.

Install

If you are on a Debian-based system, you can get the latest stable release from dqlite's stable PPA:

sudo add-apt-repository ppa:dqlite/stable
sudo apt-get update
sudo apt-get install libdqlite-dev

Build

To build libdqlite from source you'll need:

  • A reasonably recent version of libuv (v1.8.0 or beyond).
  • A reasonably recent version of sqlite3-dev
  • A build of the C-raft Raft library.

Your distribution should already provide you with a pre-built libuv shared library and libsqlite3-dev.

To build the raft library:

git clone https://github.com/canonical/raft.git
cd raft
autoreconf -i
./configure
make
sudo make install
cd ..

Once all the required libraries are installed, in order to build the dqlite shared library itself, you can run:

autoreconf -i
./configure
make
sudo make install

About

Embeddable, replicated and fault tolerant SQL engine.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 88.3%
  • M4 10.8%
  • Other 0.9%