On Wed, Nov 2, 2011 at 11:58 AM, Jeremiah Peschka <[email protected]> wrote: > Please add this explanation to the wiki. I'd do it, but i'm working with an > RDBMS right now and I am neither distributed nor eventually consistent. > ---
Opened a new issue to make sure this content finds its way there. https://github.com/basho/riak_wiki/issues/212 Mark > Jeremiah Peschka - Founder, Brent Ozar PLF, LLC > Microsoft SQL Server MVP > > On Nov 2, 2011, at 8:18 AM, Ryan Zezeski wrote: > >> On Tue, Nov 1, 2011 at 5:51 PM, Justin Karneges <[email protected]> wrote: >> Are you saying that allow_mult=false + last_write_win=false is the same as >> allow_mult=false + last_write_win=true ? >> >> False/false may be the default behavior, but I want to know what that >> behavior >> is. :) >> >> >> Justin, >> >> No, last_write_wins=true doesn't care about the value of allow_mult. Only >> one should be true at the same time, and the default is to have both set to >> false. Perhaps making an imaginary setting to displace these two would >> help. Lets call this imaginary setting "conflict_resolution_method" which >> can take on the three mutually exclusive values "stomp", "most_recent" and >> "siblings". >> >> stomp - overwrite the current value with the new value regardless of vector >> clocks, just mutate the value with no regard, thus "stomp" >> >> most_recent - use vclocks to monitor for conflicts, create siblings, and >> pick the most recent write when a conflict does occur (i.e. let Riak handle >> the conflict for you based on time) >> >> siblings - use vclocks to monitor for conflicts, create siblings, and return >> the siblings to the client when a conflict occurs for it to be resolved by >> some application dependent logic >> >> Now lets map my imaginary field to the actual fields >> >> stomp = last_write_wins=true + allow_mult=false >> >> most_recent = last_write_wins=false + allow_mult=false >> >> siblings = last_write_wins=false + allow_mult=true >> >> Notice that setting both to true has undefined semantics as they are >> necessarily mutually exclusive. >> >> Also notice that stomp and most_recent might seem like the same thing on the >> surface but they may have different outcomes in different situations. For >> example, stomp would prove to be non-deterministic during the healing of a >> split-brain because it will depend on the order of the hinted handoff >> transfers. Honestly, you're best avoiding last_write_wins at this point >> because it can cause non-obvious behavior and there is potential it may be >> removed in the future. >> >> HTH, >> -Ryan >> >> _______________________________________________ >> riak-users mailing list >> [email protected] >> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > _______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
