On 08/02/2009, at 4:53 AM, Chris Anderson wrote:

On Sat, Feb 7, 2009 at 8:22 AM, Damien Katz <[email protected]> wrote:

On Feb 7, 2009, at 11:02 AM, Geir Magnusson Jr. wrote:

Thanks for the info.  Is there a third mode possible?  Namely all or
nothing with conflict check, with the understanimg that the conflict
guarantee is only at commit, and all bets are off after that when
replicated?


That's what we currently have. It's possible to keep supporting it, but it
doesn't work with any of CouchDB's distributed features. It's only
appropriate for a single node instance, even a hot standby slave will have
inconsistent states.


I'm asking this with my computer science hat off. Is there room for
someone to implement the current behavior on top of a partitioned
cluster, by using a consensus-algorithm based transaction manager?

I'm fairly sure that doing this transparently isn't feasible. Consider the case of a transaction where one update succeeds and one fails. The database is now inconsistent wrt. expected transactional semantics. The time between the initiator of the transaction seeing the conflict and taking remedial action is unbounded. In the meantime a concurrent operation sees this inconsistent state. More succinctly, it seems to me that Isolation isn't without the imposition of an explicit serialization mechanism for writes that requires a one-write/no-reader exclusion model.

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


Reply via email to