FYI, CouchDB now has multi-document ACID transactions. This were checked in last week as part of a larger refactoring.

To do a multi-document update, simply use the bulk update POST option. If any document fails to commit due to conflict (or whatever reason), then all the documents fail. You can also delete documents in the same bulk transaction, by setting the _deleted member in the document to true.

So now if all transactions happen on the single instance, you can use bulk transactions and keep relationships and heirarchies amongst documents intact at all times. But once the application is distributed, then you potentially lose the ACID properties of the updates, as the replication system won't preserve the atomicity of the multi-document update.

This mean I don't recommend relying on bulk updates to preserve inter- document ACID properties in distributed applications, but it's workable for applications that use only a single database instance.

Reply via email to