Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/superfly/litefs

FUSE-based file system for replicating SQLite databases across a cluster of machines
https://github.com/superfly/litefs

sqlite

Last synced: 28 days ago
JSON representation

FUSE-based file system for replicating SQLite databases across a cluster of machines

Awesome Lists containing this project

README

        

LiteFS
![GitHub release (latest by date)](https://img.shields.io/github/v/release/superfly/litefs)
![Status](https://img.shields.io/badge/status-beta-blue)
![GitHub](https://img.shields.io/github/license/superfly/litefs)
======

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](https://github.com/superfly/ltx).

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](https://fly.io/docs/litefs/getting-started/)
on [LiteFS' documentation site](https://fly.io/docs/litefs/). Please see the
[ARCHITECTURE.md](/docs/ARCHITECTURE.md) design document for details about how
LiteFS works.

## SQLite TCL Test Suite

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:

```sh
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`:

```sh
docker run --device /dev/fuse --cap-add SYS_ADMIN -it litefs-test select1.test
```

## Contributing

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:

1. Discuss the feature in an issue on this GitHub repository.
2. Create a pull request to **your fork** of the repository.
3. 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.