[Catalyst] Hypothetical Site and Scalability Planning

Brian Kirkbride brian.kirkbride at deeperbydesign.com
Sun Oct 28 19:48:26 GMT 2007

> At 21:58 2007-10-26, Mesdaq, Ali wrote:
>> I personally think that storing images in the DB is the best place to
>> start because if other better solutions are available later you can very
>> easily migrate. But if you start out with filesystem migration is a
>> little bit more cludgy in my opinion. I mean you have to go traverse
>> directories and copy/move/delete or whatever you have to do for the
>> migration.
> I haven't tried serving images or large objects from a database this 
> way, but wouldn't reading this data totally blow the db cache for the 
> rest of the things the database needs to do? At least it's something I'd 
> investigate and create spike solutions for before deploying. It sounds 
> very much vendor and/or configuration dependent, so off to the manuals :)
> One thing that could work though, letting each component do what it's 
> best at, is to let the db store and _manage_ the media assets, but to 
> write them to disk on first access (and clear out unused files in a 
> cache-like way) and let the web server _serve_ them efficiently.
> /J

If putting large media files in the DB is really helpful to you in 
managing / replicating your data, you definitely do want to cache in a 
filesystem to serve directly via a "dumb" webserver process.  Then 
it's up to your application to invalidate those cached files on update.

In my case, I've found that Apache's mod_rewrite using a -f 
RewriteCond is your friend here.  Just test for the file in a cache/ 
directory and serve it.  If not, fall through to Catalyst App and then 
save the file off in your end() action.

More information about the Catalyst mailing list