couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jens Alfke <j...@couchbase.com>
Subject Re: CouchDB transactions?
Date Fri, 07 Feb 2014 01:30:01 GMT

On Feb 6, 2014, at 4:03 PM, Jo-Erlend Schinstad <joerlend.schinstad@gmail.com> wrote:

> Right, but those strategies seem ... wrong. :)

They just don't work the way you're used to, because they're optimized for different things.

> I have had the idea of using a kind of journal. That is, when I want to
> move a node, then I first create a "transaction document" with references
> to the involved nodes. Then I update the NextNode's reference so that it
> points to the PreviousNode. This means that there are now two nodes that
> points to the PreviousNode, which is wrong. But if I order these nodes
> based on time, and always use the newest, then in effect, that means that
> the CurrentNode is now out of the tree. I can now update CurrentNode's
> "prev" field, which will be without any side effects. Finally, I can insert
> CurrentNode by updating the MoveBeforeNode's "pref" field to point to
> CurrentNode.

I don't think this will work correctly if (a) two clients are trying to move nodes at the
same time, or (b) two instances of the database with different changes to the same nodes replicate
with each other. (In general, whenever an algorithm calls for "ordering things by time", alarms
go off in my mind. Distributed systems are similar to Special Relativity in that there's no
unique consistent notion of time.)

—Jens


Mime
View raw message