[Catalyst] Re: Alternatives to DBIx?
darren at darrenduncan.net
Sat Apr 17 20:02:47 GMT 2010
Adam Sjøgren wrote:
> On Sat, 17 Apr 2010 19:15:14 +0100, Lyle wrote:
>> Adam Sjøgren wrote:
>>> Ok, I'll bite: What system do you use instead of an object-relational mapper?
>> At the moment I just use DBI directly.
> Thanks for the answer.
> It is always nice to know what people like when they express contempt
> for other things. It gives you a chance to understand where they are
> coming from better.
Personally, I prefer a middle-ground between raw DBI+SQL and ORMs as they are
currently known, and that's what my Muldis D language and database toolkit is
meant to deliver.
People could treat it like a SQL templating system in the way that things like
SQL::Abstract are treated, but that it is a lot more thorough in features and
makes the SQL look more like Perl; your database tables are expressed as data
type definitions plus declared variables of those types; your queries are
expressed as mostly-declarational functions and procedures.
You can write Muldis D either in string form like with SQL or Perl, which is
better when you're writing code entirely manually, and you can write it as Perl
data structures, which is better if you are generating code using Perl, both
forms equally expressive; the latter is the closest analogy to traditional SQL
Muldis D is like a traditional ORM in that it has a variety of built-in features
that SQL DBMSs in general lack, such as updateable views or collection-valued
attributes, say to nest child records under parents.
But unlike typical ORMs, it unifies objects and the relational model, and so
considers that there is no impedence mismatch, while ORMs say there is a
mismatch and tries to treat the two things as separate.
In other words, Muldis D makes the database itself look more powerful or Perlish
than it otherwise is, and so Perl programs can then use it as if it were just an
ordinary programming language VM, based on types and routines like regular
I am perhaps a few days away from a milestone in this project and I wasn't going
to talk about it here before that; but this thread sort of forced my hand as I
didn't want the option to go unmentioned in it.
-- Darren Duncan
More information about the Catalyst