Hi, first of all let me thank Richard Hipp and the rest of the SQLite team and community for such a great piece of software. I've been recently working with SQLite's code base and found it an absolute pleasure to read (and have learned from it too).
In this mail I'd like to: 1) Present dqlite, a library replicating your application's SQLite database across N nodes and safely surviving any minority of them dying or disconnecting (only for Go applications for now, see below). 2) Submit a patch to SQLite that introduces a minimal replication API, and get feedback about its possible inclusion upstream. = dqlite = It's a Go package that uses the Raft algorithm to replicate SQLite WAL frames across a cluster of nodes. This roughly means that you can open a SQLite connection using the "database/sql" standard lib API and have anything you transactionally replicated. No external process needed. Ideally this library should have been written in C or Rust, to support binding to any language. However, due to the use case and timeline of the first project that will use it (LXD [0]), and due to the lack of mature Raft implementations in C/Rust, Go was chosen instead. It should hopefully at least serve as reference to anyone needing a C/Rust version. The work has been funded by Canonical, the company behind Ubuntu. Please see the dqlite's home page [1] for more details. = SQLite replication API patch = This is the SQLite patch that dqlite depends on. It essentially adds a few key hooks in the pager and write-ahead log to let external libraries like dqlite implement WAL-based database replication. As you'll quickly see, it's by no means ready for upstream inclusion, in particular it lacks unit tests and more comprehensive documentation comments (note however that virtually every code path introduced by the patch is already exercised indirectly by dqlite's own unit tests). If the SQLite team thinks there is room for upstream inclusion, I'll be more than glad to do the necessary work to make the patch adhere to SQLite's standards and go through a review process. The patch has currently 703 additions and 22 deletions, and is published on GitHub [2]. Cheers, Free [0] https://linuxcontainers.org/ [1] https://github.com/CanonicalLtd/dqlite [2] https://github.com/CanonicalLtd/sqlite/commit/2a9aa8b056f37ae05f38835182a2856ffc95aee4 _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users