sql-fs
POSIX-style filesystem on top of a SQL database using FUSE. At the moment, this filesystem only supports CockroachDB. This is a proof of concept and has limitations. See Future Work below.
Details
This project uses bazil.org/fuse, which is a Go library for writing FUSE userspace filesystems. Bazil implements the kernel-userspace communication protocol.
sql-fs will communicate with the kernel through Bazil to register the mount/ mountpoint as a filesystem. The kernel will forward all filesystem operations for that filesystem back to the sql-fs process through the communication channel established.
Dependencies
- CockroachDB
- FUSE kernel driver and libraries:
- Go.
Usage
Assuming that CockroachDB is listening on port 26257, here are the steps to run sql-fs:
# Clone the sql-fs git repository
git clone git@github.com:imjching/sql-fs.git
cd sql-fs
# Run schema.sql
cockroach sql --insecure < schema.sql
# Build the binary and start the filesystem
make run
# Your mountpoint will be ./mount
Future Work
- Support for multiple databases (MySQL, PostgreSQL, etc.) with abstraction.
- Concurrent file access. The current implementation for writing and reading is a little fragile.
- Tests.
References