[Catalyst] Re: Alternatives to DBIx?

Darren Duncan 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 
generators.

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 
languages.

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 mailing list