[Bioperl-l] bioperl-db and postgres8.3 - status query
Robert Buels
rmb32 at cornell.edu
Thu Aug 19 22:19:11 UTC 2010
Chris Fields wrote:
> I think it's worth exploring having a DBIx::Class-based middle-ware approach similar to what Rob Buels has done for Chado. That would be fairly easy to get started using DBIx::Class::Schema::Loader.
>
> After that it would require optimization and tweaking, which is potentially more complex than Rob's setup as Chado is very Pg-specific, but maybe Rob can elaborate...
Elaborating on how Bio::Chado::Schema is developed:
The vast majority of the code and POD in BCS is autogenerated by
DBIx::Class::Schema::Loader. DBICSL gives you a baseline set of
DBIx::Class classes that covers all the tables, views, columns, unique
constraints, and foreign key relationships.
Beyond that, you have to add on yourself. In BCS, we have mostly done
things like:
* make better-named aliases for some of the autogenerated
relationships (though DBICSL does a surprisingly good job of naming
relationships automatically most of the time)
* add a tiny bit of bioperl compatibility (this needs a lot more work
by somebody, volunteers needed!)
* add convenience methods for using some of the Chado property tables
* use DBIx::Class::Tree::NestedSet to add some powerful ways of
traversing phylogenetic tree relationships
Regarding DB backend specificity, BCS isn't Pg-specific at all, because
DBIx::Class itself goes to great lengths to be compatible (and
performant!) with just about every relational database out there. In
fact, the BCS test suite deploys a Chado schema into a temporary SQLite
database using DBIC::Schema's deploy() method, and runs all of its tests
on that. Very handy.
Chado's Pg-specific server-side functions can of course be called
through BCS if they are present, but it's perfectly possible to use
Chado without any of the server-side functions, and mostly the way I use it.
Rob
More information about the Bioperl-l
mailing list