On Jan 5, 2007, at 2:52 PM, Tim Bunce wrote:

On Thu, Jan 04, 2007 at 02:54:37PM -0500, Mark Stosberg wrote:

Hello,

Today I've been researching database load balancing solutions to use
with an Apache/mod_perl application and a PostgreSQL database. Right now
I'm using Slony-I for replication, and it seems to work well enough.

#####

What's beginning to appeal to me know is to solve part load balancing in the application by using two database handles: a read/write one, and a
read-only one. From there, it's much easier problem to solve: The R/w
handle always talks to the master and the Read-only handle can be load
balanced without being so "smart".
[...]

    - DBD::Multi looks like it could handle this kind of simple load
balancing. As a bonus, it has some fail-over logic in it, so if the
slave was unvailable for a bit, that would be handled transparently.

Does that seem sound? What's worked for you?

Also take a look at DBIx::HA.

DBIx::HA takes advantage of the "swap_inner_handle" feature of DBI:
Let's say an app sets up a $dbh through DBIx::HA which subclasses DBI. If the database fails, DBIx::HA can do a number of things (retry, fail to another db in the stack). The beauty of swap_inner_handle is that DBIx::HA can see that the database is dead, create a new dbh to another db server, swap the original $dbh with the new one and redo the prepare/execute statement while the calling application is comfortably awaiting a response to its execute statement. The app won't know that anything out of the ordinary happened.

I don't know if I uploaded the latest version of DBIx::HA to CPAN, I'll do it asap.

Henri.

Reply via email to