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
