Did any of you guys ever consider running mysql proxy[0] for this? I
feel like it's the perfect solution because it does not require you to
build replication into the app. Master-slave is probably simple, but
let's say you have a dozen slaves and a master-master in the mix.

Till

[0]: http://forge.mysql.com/wiki/MySQL_Proxy

On Fri, Aug 14, 2009 at 4:12 AM, Cameron<themsel...@gmail.com> wrote:
> Also, this sounds like a great idea for ZF 2.0, people are lining up a huge
> list of sweeping, BC-breaking changes for the 2.0 release, why not add this
> to the pile?
>
> On Fri, Aug 14, 2009 at 9:48 AM, johncongdon <j...@johncongdon.com> wrote:
>>
>> Are you able to make your solution public?  I am looking for this very
>> thing
>> and would prefer to stand on the shoulders of giants rather than trying to
>> eat a ton of calories to become one myself....  :)
>>
>>
>>
>>
>> william0275 wrote:
>> >
>> > We are switching to a replicated database environment and I've been
>> > studying the class hierarchy in the Zend Framework to find the best way
>> > to
>> > handle this. Since it seems ZF makes poor use of interfaces, classes
>> > like
>> > Zend_Db_Table checks for an instance of Zend_Db_Adapter instead of a
>> > similar interface.
>> >
>> > I've seen solutions on the web having to do with extending
>> > Zend_Db_Table.
>> >
>> > I think I found a better solution and would like to suggest it here for
>> > people who might have the same dillema in the future.
>> >
>> > I think extending Zend_Db_Table is the wrong idea, because it means
>> > you're
>> > limited to Zend_Db_Table to handle your master/slave architecture. If
>> > you
>> > extend Zend_Db_Adapter instead, you will have master/slave functionality
>> > at the core, not only in Zend_Db_Table.
>> >
>> > I did extend Zend_Db_Adapter with the concept that the instance of this
>> > Zend_Db_Adapter is for the master connection, and internally I create a
>> > second adapter which will be used for the slave. Methods like insert,
>> > update and delete are not overriden because they always work directly
>> > with
>> > the master. I overrode all fetch methods (fetchAll, fetchAssoc, etc) so
>> > that it uses the slave adapter instead, remapping the calls.
>> >
>> > I added a forceAdapter() method to force the use of the "master"
>> > connection throughout a series of queries, so that in some circumstances
>> > you can select data from the master to make sure you get the newly
>> > updated
>> > data right away.
>> >
>> > Now, my MyCompany_Db_Adapter_Pdo_Mysql will automatically handle reads
>> > and
>> > writes to the right server. When I create the instance I pass it a
>> > series
>> > of parameters, like before, with a new parameter called 'slave' which
>> > contains it's own series of connection parameters. If the 'slave' array
>> > isnt present, the adapter works the traditionnal way.
>> >
>> > Anyhow, unless there are other better alternatives, I suggest you do it
>> > this way, you'll then be able to use this class with most Zend_Db
>> > classes
>> > like Zend_Db_Table. It's a shame the Zend Framework team didnt use
>> > interfaces in an extensive way, I might have chosen other alternatives
>> > if
>> > classes like Zend_Db_Table validated the adapter against a
>> > DbAdapterInterface (for example) instead of Zend_Db_Adapter.
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Handling-MySQL-replication-with-Zend_Db_Adapter-and-Zend_Db_Table-tp21812347p24964652.html
>> Sent from the Zend Framework mailing list archive at Nabble.com.
>>
>
>

Reply via email to