couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul Davis <>
Subject Re: Replication and forms of weak consistency
Date Tue, 17 Feb 2009 13:41:18 GMT
On Mon, Feb 16, 2009 at 7:38 PM, Antony Blakey <> wrote:
> On 17/02/2009, at 10:21 AM, Robert Newson wrote:
>> Ok, now I do understand. This matches my surprise at the replication
>> strategy. Two partitioned nodes make local changes, they both
>> cross-replicate, but each node does not have the full revision history
>> of the other, they don't converge to the same state. The only promise
>> is that the revision of each document will be the same at both nodes
>> after successful, bi-directional replication. It's that behavior that
>> breaks MW. I'm so used to replication using write-ahead logs (where
>> all replicas see all intermediate states) that I have to consciously
>> recall that CouchDB doesn't do that.
> Hence my proposal to change it. Bayou shows that it possible to get a result
> that is easier to program against, with stronger weak consistency, and
> easier reasoning. PRACTI shows how to do that with partial replication.
> And this can all be done whilst increasing performance e.g. lower bandwidth
> requirements, incremental progress, isolated write groups etc.

I'm a bit confused on which you're referring to here. I've started
reading through the Bayou articles more thoroughly to see what type of
magic they're using and its surprisingly similar to CouchDB's model.
So surprisingly that I accused Damien of working for PARC when he was
12 and not telling anyone.

That said, there are some key differences that CouchDB doesn't (and
IMO, shouldn't) succumb to. First off is that the Bayou model requires
a 'primary' master. This master is used to generate the list of stable
writes. (A write must become stable before getting tossed from the
write log). There's also  quite a bit of info in that creating
replicas requires contacting another replica so that the replica
creation time can be logged. And each machine gets an ID based on who
it replicated from, and worse, the sequence of replica creations can
have adverse run time effects.

The Bayou model (depending on usage characteristics) would also
generally use more bandwidth even in its best case operation. And it
has a failure mode that requires making a copy of the *entire*
database (when trying to replicate from a node who has removed too
much of it's log).

Then again, you could've been referring to PRACTI which I'll read
about after finishing the stuff on Bayou.

> But it needs community support to be part of CouchDB (as opposed to a new
> project, forked).

It also needs code to be part of CouchDB.

> Antony Blakey
> -------------
> CTO, Linkuistics Pty Ltd
> Ph: 0438 840 787
> There is nothing more difficult to plan, more doubtful of success, nor more
> dangerous to manage than the creation of a new order of things... Whenever
> his enemies have the ability to attack the innovator, they do so with the
> passion of partisans, while the others defend him sluggishly, So that the
> innovator and his party alike are vulnerable.
>  -- Niccolo Machiavelli, 1513, The Prince.

Paul Davis

View raw message