LiteFS is a FUSE-based file system for replicating SQLite databases across a cluster of machines. It works as a passthrough file system that intercepts writes to SQLite databases in order to detect transaction boundaries and record changes on a per-transaction level in LTX files.
This project is actively maintained but is currently in a beta state. Please report any bugs as an issue on the GitHub repository.
You can find a Getting Started guide on LiteFS' documentation site. Please see the ARCHITECTURE.md design document for details about how LiteFS works.
It's a goal of LiteFS to pass the SQLite TCL test suite, however, this is currently a work in progress. LiteFS doesn't have database deletion implemented yet so that causes many tests to fail during teardown.
To run a test from the suite against LiteFS, you can use the Dockerfile.test
to run it in isolation. First build the Dockerfile:
docker build -t litefs-test -f Dockerfile.test .
Then run it with the filename of the test you want to run. In this case, we
are running select1.test
:
docker run --device /dev/fuse --cap-add SYS_ADMIN -it litefs-test select1.test
LiteFS contributions work a little different than most GitHub projects. If you have a small bug fix or typo fix, please PR directly to this repository.
If you would like to contribute a feature, please follow these steps:
- Discuss the feature in an issue on this GitHub repository.
- Create a pull request to your fork of the repository.
- Post a link to your pull request in the issue for consideration.
This project has a roadmap and features are added and tested in a certain order. Additionally, it's likely that code style, implementation details, and test coverage will need to be tweaked so it's easier to for me to grab your implementation as a starting point when implementing a feature.