[Catalyst] DBIC and RDBO compared (was: Choosing the right ORM)
    Perrin Harkins 
    perrin at elem.com
       
    Thu Dec  1 03:05:14 CET 2005
    
    
  
On Wed, 2005-11-30 at 20:39 -0500, John Siracusa wrote:
> For GROUP BY, there is a bit of a a problem when using any ORM that requires
> each object to have a primary key.  If you just want to use an object as a
> temporary container for row data, it'll be okay, but it's still not a good
> match.
It's useful with HAVING in certain conditions when you can group by the
primary key and use aggregate functions to qualify results based on
joins.  It is pretty esoteric though.
> In these situations, what I tend to do is run the custom SQL using DBI and
> then instantiate one or more RDBO objects manually from each row.
That's probably enough for most situations.
> When you use CDBI to do custom queries, do you make sure that the columns
> returned match the expectations of your CDBI class?
Yes.
> If so, then my
> commented-out get_objects_from_sql() method does the same thing.
Sounds pretty similar to what I do with Class::DBI.
> I only benched MySQL with MyISAM, which doesn't do anything interesting
> during prepare() anyway.
It still seems to help MySQL a little because it avoids some object
setup overhead.
> I'll bench Pg later to see if it makes a difference.
I remember it having a huge impact on Oracle, so maybe Pg will be
similar.
> Also, I only used prepare_cached() in the places where I expect the SQL to
> be identical over time: things like save() and delete().  I don't use it at
> all in the Manager, where each query can be different.
I would still use it there, maybe with a switch to disable it.  Most
applications have a specific range of queries that they repeat, and it's
typically a pretty small set.
- Perrin
    
    
More information about the Catalyst
mailing list