[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
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