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
