Skip to content
This repository was archived by the owner on Apr 6, 2020. It is now read-only.
/ mdbfs Public archive

Mapping DataBases into a File System

License

Notifications You must be signed in to change notification settings

jyhi/mdbfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mapping DataBases into a File System (MDBFS)

This repository contains code implementing my COMP4004: Final Year Project I.

This project implements a file system in userspace (FUSE) that takes a database container or a database management system connector, and mount it as a file system, with the file system hierarchies (i.e. files and folders) be mapped from the database.

Dependencies

Required Build Dependencies

  • LibFUSE as facilities to file system in userspace implementation
  • A C compiler that supports C99
  • A C++ compiler that supports C++17, particularly std::filesystem

Required Runtime Dependencies

  • LibFUSE for FUSE to work
  • libgcc and libstdc++(.6) that supports C++17 std::filesystem

The above dependencies can be statically compiled into the binary, so that the binary can be easily distributed. See Build.

Optional Dependencies

  • SQLite3 for SQLite (version 3) database backend support
  • Berkeley DB 18.1.32 for Berkeley DB database backend support
  • Doxygen for API documentation generation

For selecting optional dependencies in the build system, see Build.

Build

Use CMake:

mkdir build && cd build
cmake .. # Configure the project using CMake
make     # Build the project, may differ based on the generator you choose

You can specify some options in cmake to customize your build:

  • -DBUILD_DOCUMENTATION: Enable build target for API documentation using Doxygen in HTML, default to OFF
    • The documentation is not built automatically (not in ALL target). To build the API documentation, use make docs (or equivalences in other build systems).
  • -DBUILD_SQLITE: Enable the SQLite3 database backend, default to ON
  • -DBUILD_BERKELEY_DB: Enable the Berkeley DB ("DB") database backend, default to ON

The following options make parts of code be statically compiled into the binary:

  • -DSTATIC_SQLITE3: Statically compile the SQLite3 library into the backend, default to OFF
  • -DSTATIC_BERKELEY_DB: Statically compile the Berkeley DB library into the backend, default to OFF
  • -DSTATIC_FUSE: Statically compile the FUSE code into the binary, default to OFF
  • -DSTATIC_LIBGCC: Statically compile libgcc into the binary, default to OFF
  • -DSTATIC_LIBSTDCXX: Statically compile libstdc++ into the binary, default to OFF

License

This project is licensed under the MIT license. See COPYING for details.

About

Mapping DataBases into a File System

Resources

License

Stars

Watchers

Forks

Packages

No packages published