[ZODB-Dev] Synchronizing Mirror Sites

Norfleet, Sheppard S. sheppard.norfleet at ngc.com
Thu Jul 24 08:21:29 EDT 2003


I think I have a solution for myself.

Every time an object is modified in the CMF, I will send the object to a
replicator product, where it will be wrapped with metadata, pickled, and
stored.  So I need to modify all the CMF form processing scripts like
document_edit.py.  

The replicator product will routinely (via outside cron job) check for
updates.  On a per object basis, it should simply be a matter of replacing
the old object with the new object, right?

After some thought, I realized that I dont really have to have a merge
capability.

What other drawbacks are there for this approach?

Shep

-----Original Message-----
From: Shane Hathaway [mailto:shane at zope.com]
Sent: Tuesday, July 22, 2003 1:47 PM
To: Norfleet, Sheppard S.
Cc: 'zodb-dev at zope.org'
Subject: Re: [ZODB-Dev] Synchronizing Mirror Sites


Norfleet, Sheppard S. wrote:
> Well this application is a document collaboration tool using CMF,
> CMFStaging, ZopeRepository, CMFPlone, and PloneStaging.
> 
> What complications do you forsee pursuing application level replication.
> Should I include another base class in the base content type to support
> replication?

Well, I didn't realize you were working with a large code base.  This 
kind of replication would require you to change nearly the entire 
application.  That's probably not feasible unless you can somehow limit 
the changes that need to be replicated.

> Also, what are you thoughts on using OracleStorage and Oracle Replication?

That solution might help, but it still won't let you merge changes to 
objects.  Merging objects requires something that has knowledge of 
object internals.  Ape is trying to fill that need, but it's not an easy 
task.

I would recommend searching for a way to make the problem simpler.  If 
real-time replication is a possibility (as opposed to intermittent 
replication), ZRS or simply ZEO might do the trick.  If you can engineer 
the application so that nodes write only to specific parts of the 
database, you can merge in a coarse-grained way.  And if you can throw 
big hardware at the problem, that's usually the least expensive solution.

Shane



More information about the ZODB-Dev mailing list