Fuse::DBI - mount your database as filesystem and use it
use Fuse::DBI; Fuse::DBI->mount( ... );
See run below for examples how to set parameters.
run
This module will use Fuse module, part of FUSE (Filesystem in USErspace) available at http://fuse.sourceforge.net/ to mount your database as file system.
Fuse
FUSE (Filesystem in USErspace)
That will give you possibility to use normal file-system tools (cat, grep, vi) to manipulate data in database.
It's actually opposite of Oracle's intention to put everything into database.
Mount your database as filesystem.
Let's suppose that your database have table files with following structure:
files
id: int filename: text size: int content: text writable: boolean
Following is example how to mount table like that to /mnt:
/mnt
my $mnt = Fuse::DBI->mount({ 'filenames' => 'select id,filename,size,writable from files', 'read' => 'select content from files where id = ?', 'update' => 'update files set content = ? where id = ?', 'dsn' => 'DBI:Pg:dbname=test_db', 'user' => 'database_user', 'password' => 'database_password', 'invalidate' => sub { ... }, });
Options:
SQL query which returns id (unique id for that row), filename, size and writable boolean flag.
id
filename
size
writable
SQL query which returns only one column with content of file and has placeholder ? for id.
?
SQL query with two pace-holders, one for new content and one for id.
DBI dsn to connect to (contains database driver and name of database).
DBI
User with which to connect to database
Password for connecting to database
Optional anonymous code reference which will be executed when data is updated in database. It can be used as hook to delete cache (for example on-disk-cache) which is created from data edited through Fuse::DBI.
Fuse::DBI
Optional flag which forks after mount so that executing script will continue running. Implementation is experimental.
Check if fuse filesystem is mounted
if ($mnt->is_mounted) { ... }
Unmount your database as filesystem.
$mnt->umount;
This will also kill background process which is translating database to filesystem.
Checks if fuse module is loaded in kernel.
fuse
die "no fuse module loaded in kernel" unless (Fuse::DBI::fuse_module_loaded);
This function in called by mount, but might be useful alone also.
mount
Nothing.
Size information (ls -s) is wrong. It's a problem in upstream Fuse module (for which I'm to blame lately), so when it gets fixes, Fuse::DBI will automagically pick it up.
ls -s
FUSE (Filesystem in USErspace) website http://fuse.sourceforge.net/
Example for WebGUI which comes with this distribution in directory examples/webgui.pl. It also contains a lot of documentation about design of this module, usage and limitations.
examples/webgui.pl
Dobrica Pavlinusic, <dpavlin@rot13.org>
Copyright (C) 2004 by Dobrica Pavlinusic
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.
To install Fuse::DBI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Fuse::DBI
CPAN shell
perl -MCPAN -e shell install Fuse::DBI
For more information on module installation, please visit the detailed CPAN module installation guide.