DBIx-FileStore
Perl module that provides tools to insert, delete and manipulate
files stored in a mysql database.
"What!?" you'd say. "You're not supposed to store files directly
in a database!"
And I'd say, "Yes, friend, you're right. But sometimes you just
want to anyway." I actually wrote this just to see how well it would
work.
The answer is that it works fine! Modulus the fact that you're
storing large blobs in a database. In particular, it might make
your mysql transaction logs pretty large... but that's another story.
The details are explained throughout the module's documentation,
(in particular see the documentation for DBIx::FileStore).
In a nutshell you can copy files into and out of the database
(respectively) using the commands 'fdbput' and 'fdbget'.
'fdbmv' and 'fdbrm' are also provided, along
with a few other utilities in the script/ directory.
The important things to note are:
1) All the filenames in the filestore are in one flat address space.
That is, a file like '/a/b/c.txt' is called just that, it's not
in a folder called /a/b/ (although fdbls does offer some support
for directory-like viewing of files with common prefixes).
2) The filenames in the filestore cannot contain spaces. It's demo
code after all -- we tried to keep it simple.
For usage details, see the QUICKSTART.txt file in this folder
and the documentation for the filestore scripts in the script/
directory.
For technical details, see the documentation for DBIx::FileStore
and the utilities in script/
There's also a video demo available at joshr.com/src/DBIx-FileStore/
that is provided in multiple formats.
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
See also the QUICKSTART.txt file to get started.
LICENSE AND COPYRIGHT
Copyright (C) 2010 Josh Rabinowitz
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See
http://dev.perl.org/licenses/ for more information.