On 17/03/2009, at 11:46 PM, Dean Landolt wrote:

Interesting read -- and good examples. But I would argue there are more than philosophical drawbacks. As I understand it, it would mean giving up the replication feature entirely. Forever...or at least as long as bulk- docs are relied upon. There's more to replication than scaling (fault tolerance, for
one). If your application absolutely needs transactions, and you can't
design around it (e.g. doc-level transactions), you may need another tool
for the job -- one not named for a "cluster of unreliable commodity
hardware".

You can do atomic local commits, and even replicate those commits, on a cluster of unreliable commodity hardware. This issue is not one of technical impossibility, rather it is a choice for CouchDB to pursue one particular model in this problem space. CouchDB is at one extreme of the spectrum, and that extreme is certainly worth pursuing. There are different choices with different trade-offs that have most of the CouchDB flavour.

The issue as I see it (I've been arguing/considering this particular issue for some time now) is that CouchDB is also intended to represent one consistent model, in the sense that it is a product, not a toolkit, and so a configuration option to modify those semantics isn't in consideration for the product branded 'CouchDB'.

I think that keeping these two points explicit results in simpler and more transparent reasoning around issues *such as* atomicity - in particular, why it will never happen.

As far as rollback is concerned, the problem is that concurrent accessors can see the intermediate state. There is no way to fake ACID without serializing all access (not always feasible), and even then there are failure modes in a clustered situation equivalent to transaction monitor lockup.

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

The trouble with the world is that the stupid are cocksure and the intelligent are full of doubt.
  -- Bertrand Russell


Reply via email to