<html><head></head><body bgcolor="#FFFFFF"><div>Cache everything you can, even if you're persisting that cache in the database. Data duplication is important when you want to make queries faster. Doing a simple GET is going to be much faster than a MapReduce.</div><div><br>---<div>Jeremiah Peschka, <span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Managing Director, Brent Ozar PLF, LLC</span></div><div><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Microsoft SQL Server MVP</span></div></div><div><br>On Mar 29, 2012, at 8:51 AM, Buri Arslon <<a href="mailto:buriwoy@gmail.com">buriwoy@gmail.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>Kresten, Jeffrey: Thanks a lot for enlightenment!<div><br></div><div>This link was very helpful to understand what to use when.</div><div><a href="http://wiki.basho.com/MapReduce-Search-2i-Comparison.html">http://wiki.basho.com/MapReduce-Search-2i-Comparison.html</a> <br>
<br>The information I obtained pushed me to another question :) . </div><div><br></div><div>Q: Is it a good (or at least 'ok') practice to duplicate information in order to get cheaper/faster queries? </div><div><br>
</div><div>i.e. If a user becomes a member of a group/fanpage I could store that information both in 'users' and 'groups' bucket. If I want to get the members of a particular group I query just one value/record in 'groups' bucket. The only drawback that came to my mind is when you delete that relationship you have to delete it from two buckets.</div>
<div><br></div><div>Another scenario might be to get last 20 comments by a user. Instead of searching all posts/comments by author_name, I could just store the post or comment key in the user object as a secondary index and set some limit, say, 20 for <<"index">>, <<"last_posts_bin">>.</div>
<div><br></div><div>What do you think?</div><div><br></div><div>Thanks again,</div><div>-- buriwoy</div><div><br></div><div><br></div><div><br><div class="gmail_quote">On Thu, Mar 29, 2012 at 8:52 AM, Jeffrey Massung <span dir="ltr"><<a href="mailto:jeff@basho.com">jeff@basho.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Buriwoy,<div><br></div><div>Neither is better (or worse) for "storing" those bits of information. The question is how you expect to use that data once it is stored. Let's take a look at friend relationships (note: I don't use Facebook, so I might be missing a subtle feature with this example)...</div>
<div><br></div><div>Do you merely plan on following a list of friends to other pages quickly? For example, on your page, you see a list of your friends quickly, be able to click them, and go to their page? If so, the links are quite nice. Links are nice for being able to follow in a query as well. This is a good example of using links to perform link walking:</div>
<div><br></div><div><a href="http://basho.com/blog/technical/2010/02/24/link-walking-by-example/" target="_blank">http://basho.com/blog/technical/2010/02/24/link-walking-by-example/</a></div><div><br></div><div>Or, do you plan on doing reverse lookups by friends? For example, do you want to say "find every who has Tony as a friend" and get a list of users? Note: this is not asking who is a friend of Tony (you'd just lookup Tony and get his list of friends). In this case 2i works nicely, as do other query methods: search, a general MapReduce, etc. But links would be an extremely poor choice.</div>
<div><br></div><div>Does this help? This page might also be applicable to your question:</div><div><br></div><div><a href="http://wiki.basho.com/MapReduce-Search-2i-Comparison.html" target="_blank">http://wiki.basho.com/MapReduce-Search-2i-Comparison.html</a></div>
<div><br></div><div>If you plan on just doing MapReduce queries without 2i, and don't care about link walking, then just storing a typical JSON object and not using either is perfectly fine as well.</div><div><div>
<div style="word-wrap:break-word"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px"><div style="word-wrap:break-word">
<div><br>--</div><div>Jeffrey Massung</div><div>Software Engineer</div><div><a href="mailto:jeff@basho.com" target="_blank">jeff@basho.com</a></div></div></span></div>
</div>
<br><div><div><div class="h5"><div>On Mar 29, 2012, at 8:29 AM, Buri Arslon wrote:</div><br></div></div><blockquote type="cite"><div><div class="h5">Hi,<div><br></div><div>While developing my pet project few questions came to my mind and I decided to consult with you.</div>
<div><br></div><div>Which of them are more effective for recording relationships: Link or Secondary Indexes?</div>
<div><br></div><div>1. Friend relationships: like Facebook friends?</div><div>2. Followed/follower relationships like in Twitter?</div><div>3. Member/Club relationship like fanpage in Facebook?</div><div>4. Like in Facebook?</div>

<div><br></div><div>Thanks,</div><div>-- buriwoy</div></div></div><div class="im">
_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
</div></blockquote></div><br></div></div></blockquote></div><br></div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>riak-users mailing list</span><br><span><a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a></span><br><span><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a></span><br></div></blockquote></body></html>