On 18/02/2009, at 12:11 AM, Paul Davis wrote:
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.
We all know that CouchDB is modeled on Notes. I don't think Damien needs to have worked at PARC :)
And Notes was around before Bayou - Bayou and PRACTI are successors, so similarities are understandable. Still, I think the differences are significant.
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.
That can be deferred to the first replication.
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.
I presume you're referring to the recursive replica ids. It's certainly true that the Bayou model has run time implications. Interesting problems to work on to optimize performance. Excellent!
The Bayou model (depending on usage characteristics) would also generally use more bandwidth even in its best case operation.
I disagree on this, but no point arguing about it now.
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).
As does the first replication in CouchDB. One benefit of the Bayou model is that deltas can be used when recreating the initial state because the copy operation is distinguished from normal replication. OTOH, a copy impacts availability on the target.
Remember that Couch has a total failure mode wrt weak consistency guarantees provided by Bayou/PRACTI, so it's not a fair comparison.
It also needs code to be part of CouchDB.
It's obvious to me that this isn't going into CouchDB, so I think it's appropriate I start a new project. Luckily all the storage/map/reduce/ indexing etc has been done, and I can keep the API :) I'm setting sail, good luck to us all, explorers in this Brave New World!
Antony Blakey ------------- CTO, Linkuistics Pty Ltd Ph: 0438 840 787 Every task involves constraint, Solve the thing without complaint; There are magic links and chains Forged to loose our rigid brains. Structures, structures, though they bind, Strangely liberate the mind. -- James Fallen
