No, (P)R+(P)W > N guarantees that you read from an overlapping set of what
you just wrote *from the same client*. It does not guarantee any kind of
immediate consistency. However, what Riak *does* provide is some capacity
for your data to approach consistency over time, through vector clocks,
read-repair and hinted handoff.

On Mon, Oct 31, 2011 at 4:20 PM, Justin Karneges <[email protected]> wrote:

> As I understand it, if R + W > N then the DB is immediately consistent
> rather
> than eventually consistent, correct?  Do the allow_mult and last_write_wins
> settings have any effect when R + W > N?
>
> On Saturday, October 29, 2011 11:18:10 AM Reid Draper wrote:
> > It sounds like your specific needs _might_ be possible with application
> > logic, but be aware that Riak is an eventually consistent database. There
> > are many subtleties to this type of coordination. You will need
> > read-your-writes consistency, which means R + W > N. I would recommend
> the
> > following resources:
> >
> > http://wiki.basho.com/Eventual-Consistency.html
> > http://www.allthingsdistributed.com/2008/12/eventually_consistent.html
> >
> > Terminology-wise, you should also know that there is no way to atomically
> > update more than one replica (much less multiple keys) in Riak. This is
> one
> > of the tradeoffs for high availability in a distributed system.
> >
> > On Sat, Oct 29, 2011 at 1:46 PM, Jeremiah Peschka <
> >
> > [email protected]> wrote:
> > > I'm just assuming that my implementation might be naive.
> > >
> > > As far as the tedious label goes, as your application's functionality
> > > grows in complexity, you may find it tedious to manage the complexity
> of
> > > manually handling transactional rollback in a distributed system.
> > >
> > > Managing relationships using links has some maintenance overhead in
> Riak
> > > because of the nature of handling this sort of situation.
> > >
> > > But, all in all, it's probably not terrible as long as you decrease the
> > > number of relationships in the application by saving related objects
> > > within the same collection.
> > > ---
> > > Jeremiah Peschka - Founder, Brent Ozar PLF, LLC
> > > Microsoft SQL Server MVP
> > >
> > > On Oct 29, 2011, at 10:32 AM, Justin Karneges wrote:
> > > > On Saturday, October 29, 2011 08:42:52 AM Jeremiah Peschka wrote:
> > > >> 1) Use an RDBMS. Since you're here, I'm guessing that you're already
> > >
> > > using
> > >
> > > >> Riak or else that Riak has qualities that you want for your
> > > >> application.
> > > >
> > > > Right.  This is early on in the app's lifetime and the data storage
> is
> > >
> > > not
> > >
> > > > terribly complicated.  I just need some parent/child relationships
> and
> > >
> > > when I
> > >
> > > > saw the Links feature I figured this was an expected usage of Riak.
> > > >
> > > >> 2) As Alex suggests, you can implement this in your application.
> > > >
> > > > Yes, this I am ready for.  As I understand it, using Riak
> successfully
> > > > generally means designing your application with its limitations in
> > > > mind.
> > >
> > >  So,
> > >
> > > > let's go write some funky app code!
> > > >
> > > >> This could also be difficult: the application must be aware of
> > > >> activity
> > >
> > > going
> > >
> > > >> on with objects in your database AND be able to roll them back. In
> > > >> pseudocode you'd do this:
> > > >>
> > > >> orig = Riak.get('whatevs')
> > > >> child = new Child(orig)
> > > >>
> > > >>
> > > >> if Riak.put(child)
> > > >>
> > > >>  if !Riak.link(orig, child)
> > > >>
> > > >>    Riak.delete(child)
> > > >>    // error up the stack
> > > >>
> > > >> else
> > > >>
> > > >>  // we don't care, the child didn't save. error up the stack
> > > >>
> > > >> This is probably naive and is definitely tedious, even if you do
> > >
> > > implement
> > >
> > > >> your own application layer to handle read/write operations.
> > > >
> > > > See, to me, this looks exactly like what you're supposed to do.  How
> is
> > >
> > > it
> > >
> > > > naive and tedious?  I would assume that everyone writing a serious
> app
> > >
> > > with
> > >
> > > > Riak has to do things like this.
> > > >
> > > > Justin
> > > >
> > > > _______________________________________________
> > > > 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
>



-- 
Sean Cribbs <[email protected]>
Developer Advocate
Basho Technologies, Inc.
http://www.basho.com/
_______________________________________________
riak-users mailing list
[email protected]
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to