summaryrefslogtreecommitdiff
path: root/content/software/pgfuse.md
blob: 3b848bd5ebe7d59cb82a9b0aa8dc467da9ea4ebf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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.