Hi, Eric.

On Mon, Jan 3, 2011 at 1:09 AM, Eric Moritz <[email protected]> wrote:

> Hi I just read "Why Vector Clocks are Easy". I am having trouble
> seeing the advantage of letting a stale PUT into production and merge
> afterwards vs HTTP's Conditional PUT, which never let's a stale PUT
> into production.

This is an excellent question, and one that we could discuss for some time.

I am a big fan of HTTP conditional requests, but they are not always
compatible with the other operational needs imposed in the interest of
availability.

The main issue is that Riak's approach is designed for a
highly-available distributed system on the server side, while a
standard HTTP conditional PUT mostly makes sense for single-writer (or
at least single-leader) servers.

Riak is designed to accept requests even when arbitrary nodes are down
or unable to talk to each other.  Achieving that availability goal is
in conflict with the typical expectations around conditional PUT,
which are basically those of an atomic CAS operation.  Since not all
nodes that might hold a copy of some given data might be reached
during a write request, Riak cannot maintain its intended level of
availability and simultaneously ensure that you are really only
overwriting exactly the version that you specify.

I hope that this sheds some light on why we have made the choices that
you see in Riak.

-Justin

_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to