summaryrefslogtreecommitdiff
path: root/content/software/pgfuse.md
diff options
context:
space:
mode:
Diffstat (limited to 'content/software/pgfuse.md')
-rw-r--r--content/software/pgfuse.md66
1 files changed, 66 insertions, 0 deletions
diff --git a/content/software/pgfuse.md b/content/software/pgfuse.md
new file mode 100644
index 0000000..3b848bd
--- /dev/null
+++ b/content/software/pgfuse.md
@@ -0,0 +1,66 @@
++++
+title = "PgFuse"
+description = "FUSE filesystem for PostgreSQL"
++++
+
+## Purpose
+
+Store files and their metadata completely in a PostgreSQL database.
+Expose a standard file system with the help of the FUSE API.
+
+## Requirements
+
+- PostgreSQL 8.4 or newer
+- FUSE 2.6 or newer
+
+## History
+
+Yes, I know what happens if you store files in a database (in respect to
+drop of efficiency and incremental backups for instance). :-)
+
+Nevertheless, there are special situations, where a filesystem in a database
+is useful. With FUSE this is also rather simple to write.
+
+The reason I wrote one was a project with lots of data on a ReiserFS (at
+least in 2001, this was), which was more or less immutable and should be
+efficiently stored away (almost in an archive mode). Backup is no issue
+here (as the files are more or less static after an initial load),
+but space efficiency is an issue.
+
+Most other projects try to map an existing database structure somehow as
+files. This here should strictly deal withs files/dirs as the only
+available model.
+
+## Other projects
+
+### Pgfs:
+
+Stores a filesystem in Postgres, exposes it as a NFS server, rather old
+and I was unable to find the sources.
+
+### mysqlfs
+
+The blueprint I used and got inspired from. Does exactly the same for
+the MySQL database.
+
+ Also the block splitting algorithm I used more or less from this project.
+
+### libsqlfs
+
+The same for storing files in a Sqlite database.
+
+### curlftpfs
+
+Blueprint for some debugging code.
+
+## References
+
+- http://www.postgresql.org/docs/
+- http://fuse.sourceforge.net/
+
+A Git repository is accessible at
+**git://git.andreasbaumann.cc/pgfuse.git**
+(or at http://git.andreasbaumann.cc/cgit/pgfuse/)
+
+In case of questions, if you want to supply a patch or if you
+want to collaborate on the project contact me via email.