JFileServer contains a framework for writing a database filesystem where the filesystem metadata resides in a database, and optionally the file data may also be stored within the database.
The framework includes smart caching of file data so the data can be extracted from the database or other repository into a temporary file, once the file updates are complete the new data is written back to the database or repository. The smart caching system can also pack multiple files into a single file which is then stored, with optional compression of the data, and splitting the file data across multiple fields/blobs within the database.
The framework uses two main interfaces, the database interface for the filesystem metadata and a file loader interface for the file data.
Currently there is a database interface implementation using Postgres with more implementations planned.
The file loader interface can use either a unique id, that can be mapped to the unique file id that the database filesystem allocates to a file or folder, or it can use the relative path to the file or folder. The simple file loader implementation is an example of a loader that uses the relative path to store the file data on the local filesystem.