Hi,

So this is a call for comments on the outstanding replication_redux branch, 
which is scheduled to be merged back to trunk shortly.  This email is a summary 
of the features, differences from the existing version, and any issues or 
questions I am punting to the group.

Features:

- Enables support of splitting read/write queries between a master and a pool 
of replicated databases.

- Allows pluggable balancer algorithms (currently supports Random and Get First

- Adds support for queries information from the underlying databases so that 
you can set maximum lag-behind-master on the slaves.

- automatically drops slaves that disconnect or lag behind a preset max.  
Automatically adds the slave back when it 'catches up'.

- has a straightforward method to force all queries temporarily to the master, 
should you need realtime responsiveness to inserts.


Notes:

In order to support a few realtime features some changes to non storage DBIC 
code had to be made.  For example, the guts of DBIC::PK->discard_changes were 
moved to DBIC::Storage so that replication could make sure reloading of results 
are properly directed to the master.  Additionally, I added some methods to 
DBIC::Storage to support querying slave status, so that we could support things 
like dropping slaves that fall too far behind, etc.  Putting those methods at 
this level of abstraction may not be the best choice, but I can't figure any 
less ugly way to solve it.

Diff between the branch and truck attached.  Comment now or live with my code 
changes :)

Sincerely,
John




      

Attachment: replication.diff.gz
Description: GNU Zip compressed data

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to