[Catalyst] Developing a Quickbase look-alike

Matt S Trout dbix-class at trout.me.uk
Fri May 26 00:33:57 CEST 2006

Drew Taylor wrote:
> Hi everyone,
> My boss at $work today asked me to setup an environment for developing 
> something like Quickbase for our internal use due to very sensitive 
> data. He initially suggested Rails, but I've convinced him to give 
> Catalyst a shot since we're already a perl shop. :-) Authentication and 
> ACL controls are VERY important, to which I responded "We've got 
> prebuilt plugins for that." :-) So now the hard part is figuring out how 
> to replicate the ease-of-use of Quickbase, but with the goodness of 
> Catalyst & perl.
> I think I'm going to use Mason since we already use it all over the 
> place (interestingly enough we use Mason as a front end to 
> HTML::Template). But I'm less sure how to go about the DB side of 
> things. One of the killer features of QB is that it's dead easy to 
> change schemas. That functionality won't necessarily be needed 
> initially, but it sure is a cool feature. Some sort of a DBMS is 
> obviously required, but if I use mysql how do I go about the schema 
> changes, and more importantly how do I keep the model definitions up to 
> date? Performance is not a real issue since it will be for small-scale 
> internal use (famous last words I know...), so perhaps DBD or some other 
> "flat file" DB would be appropriate? The alternative is mysql with 
> either DBIx::Class or Rose. Schema altering functionality will be locked 
> down very tight, so I'm less concerned about allowing schema alterations 
> through the web UI than I normally would be.
> Ultimately the biggest challenge is allowing schema definition changes. 
> I suppose the alternative is using custom field definitions is a 
> separate table and doing joins to get the data, but that is not very 
> appealing to me. Anyone done this type of thing before?

Two easy enough approaches - first, just manipulate the db schema and 
use DBIx::Class::Schema::Loader

Second, have a look at the versioning branch in DBIC svn - if you're not 
expecting to go live for a couple months this will hopefully be ready in 
time for you (it's more work than it might sound since we have quite a 
few databases to support).

Or you could have a look at rob kinyon's DBM::Deep which just acquired 
ACID transaction support in spite of being basically a hashed database 
thing. Most impressive.

(note: Rose::DB::Object is bloody impressive but doesn't have built-in 
support for group by, having etc. like DBIx::Class does so I dunno how 
you'd get good reporting capability with it. Plus I'm the lead developer 
of DBIx::Class so obviously I know a bit more about its roadmap ...)

More information about the Catalyst mailing list