Hi Jimmy,

Sorry for taking this off-list; I meant to reply-all on that message!
Anyway, we do have a work-in-progress CRDT integration and we hope to
have it production-ready later this year.

On Sun, Mar 3, 2013 at 9:02 AM, Jimmy Ho <[email protected]> wrote:
> Hi Sean,
>
> Thanks for the quick response.
> All makes good sense.
>
> Am using python, found this on git hub which seems to do what I need (will
> need to test it further)
>
> https://github.com/ericmoritz/riak_crdt
>
> Any future plans to built CRDT features into Riak, or is it something
> believed to sit more at the client side to implement merging/conflict
> resolution?
>
> Thanks for the help.
> Regards,
> Jimmy
>
> On Sat, Mar 2, 2013 at 8:57 PM, Sean Cribbs <[email protected]> wrote:
>>
>> Jimmy,
>>
>> Links are going to quickly become difficult to manage.
>>
>> This is the perfect problem for a CRDT, probably an OR-set. The nice
>> thing about CRDTs is that even when multiple writers are involved,
>> there's a single way to merge conflicts which always moves toward the
>> real value (monotonic). When someone clicks the "like button", you
>> would add their user ID to the set. (Assuming they can un-like, you
>> would remove them from the set when they do that.) You would probably
>> do something similar for the other direction, the user's list of post
>> -- but is easy to manage from the concurrent-writes standpoint, since
>> a user is probably the only one modifying that.  If you never need to
>> "un-like", then the set only grows and is thus simpler to put
>> together.
>>
>> Unfortunately, the CRDT support built into Riak is somewhat limited
>> right now. You would need to implement the convergent set yourself, or
>> use an existing client-side library. Here are a few:
>>
>> * Knockbox (Clojure) https://github.com/reiddraper/knockbox
>> * Statebox (Erlang) https://github.com/mochi/statebox
>>
>> A quick search on Github will find you a lot of other options, too (in
>> various states of completion).
>>
>> On Sat, Mar 2, 2013 at 2:10 PM, Jimmy Ho <[email protected]> wrote:
>> > Hi guys,
>> >
>> > Am currently designing the data schema for an application; I have a
>> > question
>> > hoping some of you could help.  Thanks in advance.
>> >
>> > One of the functionalities is a 'like button' to posts
>> >
>> > Each post is stored as an object in Riak, eg /post/<id>
>> >
>> > To like a post, I am planning on creating a link from user object to the
>> > post object, and the reverse direction, such that it would be easier to
>> > link-walk/mapreduce.
>> >
>> > My question is, if a particular post is very very popular, and everyone
>> > is
>> > pressing 'like'.  Would the write requests (to the post's object
>> > header)
>> > conflict each other?
>> >
>> > Is the above a bad schema design from that perspective?  Any suggestion
>> > of a
>> > better design?
>> >
>> > Thanks.
>> > Regards, Jimmy
>> >
>> > _______________________________________________
>> > riak-users mailing list
>> > [email protected]
>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>> >
>>
>>
>>
>> --
>> Sean Cribbs <[email protected]>
>> Software Engineer
>> Basho Technologies, Inc.
>> http://basho.com/
>
>



-- 
Sean Cribbs <[email protected]>
Software Engineer
Basho Technologies, Inc.
http://basho.com/

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

Reply via email to