On Feb 7, 2009, at 9:37 PM, Antony Blakey wrote:


On 08/02/2009, at 12:05 PM, Damien Katz wrote:

But if the replication doesn't complete, like in the middle you lose your connection, then the downstream db is in an inconsistent state and will be until you regain the connection and complete the replication.

Sure, that's OK. In my case there are potentially millions of 'downstreams'.

And its not just the downstream dbs that can't be used during active or interrupted replication, it's the central db as well. If you want to update it, you'll have to shut down access while waiting for any in progress replications to complete, then perform the update then reopen replication access.

I can't see why this needs to be the case. The fact that there are peers that have an incomplete replication doesn't stop the master taking updates - iff the updates to the master are multi-document ACID.

Because during downstream replication it may get just some of the documents from a commit that happens during replication. Replication isn't all or nothing, and it doesn't know about transactions



In my case, replication can occur from any peer that isn't itself replicating, and has completed a valid replication cycle.

The key thing being, even with multiple writers i.e. symmetric peers, that replication occurs between nodes that are themselves consistent e.g. conflicts are never replicated, they are only the result of replication, and the node is locked until a replication cycle completes (or is abandoned, which is a separate issue that I have to address).

The thing is, to avoid all conflicts and inconsistent states, you must read lock the source db during active replication and write lock the target database pretty much until the replication is complete. Otherwise, you'll will get inconsistent states.

Does each user get their own local instance of the database? If that's the case, you don't need multi-document conflict detection. You just lock the user out of the database during replication and lock out replication while the user is using it. And it sounds like you already have that.



Am I missing something?

.



Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

Hi, I'd like to do $THING. I know that $SOLUTION_A and $SOLUTION_B will do it very easily and for a very reasonable price, but I don't want to use $SOLUTION_A or $SOLUTION_B because $VAGUE_REASON and $CONTRADICTORY_REASON. Instead, I'd like your under-informed ideas on how to achieve my $POORLY_CONCEIVED_AMBITIONS using Linux, duct tape, an iPod, and hours and hours of my precious time.
 -- Slashdot response to an enquiry



Reply via email to