<html><head></head><body bgcolor="#FFFFFF"><div>Hello,</div><div><br></div><div>You have to split your data structure. The player profile has to go into hash table (e.g. Ets)  and ranking into separate index. It should give you better performance since your player profile is big. The first candidate for index is gb_trees. It should be good enough to cover 3.1 but 3.2 requires a range search, which is available in my Branch of gbt (<a href="http://github.com/fogfish/feta">http://github.com/fogfish/feta</a>)</div>
<div>If you are not fine with gbt performance then you have to shard your scores into multiple trees. </div><div><br>Best Regards,<div>Dmitry >-|-|-*></div><div><br></div></div><div><br>On 2.7.2012, at 13.30, Max Bourinov <<a href="mailto:bourinov@gmail.com">bourinov@gmail.com</a>> wrote:<br>
<br></div><div></div><blockquote type="cite"><div>Hi Erlangers,<div><br></div><div>I need to build a ranking system for online game.</div><div><br></div><div>I think I will have a ranking gen_server that will accept cast messages like this: {score, Player :: profile(), Score :: integer()}.</div>


<div><br></div><div>So, the question is what would be most appropriate data structure if:</div><div><ol><li>I have to rank about 50 000 - 100 000 different players.</li><li>On each score message I have to re-sort whole ranking table.</li>


<li>It must be very cheap to get:</li><ol><li>top 100 players</li><li>player's rating +/- 10 players about current player</li></ol><li>I expect about 20-50 score messages per seconds</li><li>Size of score message is about 4KB (profile takes most of the space).</li>


</ol><div><br></div></div><div>Any ideas or suggestions are welcome!</div><div><br></div><div><div>Best regards,</div><div>Max</div><br><br>
</div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>erlang-questions mailing list</span><br><span><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a></span><br>
<span><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a></span><br></div></blockquote></body></html>