If the total number of players scores changed was a relatively small part of the list, then re-linking those on each change might still be efficient, but you indicate that the number might be high, then Rick's b-tree approach works better. In my opinion you have two options:
- Lucene - you can have your scores as numeric strings such that alphanumeric sorting will give the right order - Tree index - a b-tree, or multi-branch tree, or even the TimeLineIndex built into neo4j If you want to try the tree index approach, but want a 'magic' solution, why not try the TimeLineIndex? All that you need is for your score to be expressible as a long, and be a positive number. On Tue, Mar 16, 2010 at 9:16 AM, Mattias Ask <mattias....@jayway.com> wrote: > Thanks for answering! Linked list... My spontaneous feeling is that then > I'll have to sort every time the scores change, right? And that operations > would probably take more and more time depending on the number of > players..? > But the fetching of the leaderboard would be dead fast every time! > > The logic is kind of that of a pyramid game (no, I'm not doing anything > bad... quite the opposite, actually... ask Emil if you don't believe me ;). > If I score, the person that has introduced me will get points, and the > person that introduced that person would get points and so on. This means > that one changed score can ripple out over a number of different scores. In > my mind, If I use a linked list approach, I would have to sort the list for > every update of the scores. Or I would have to bash-sort at a later stage. > Or I would have to sort when getting the top scores. What I really was > hoping for some magic Lucene-sorted-index-type-of-thingy ;) Any ideas on > that? > > /Mattias > > On Mon, Mar 15, 2010 at 11:19 PM, Lachlan Cotter <l...@lachlanc.id.au > >wrote: > > > Probably depends on the logic of your scoring system, I would think. > > > > > > On 16/03/2010, at 8:43 AM, Rick Bullotta wrote: > > > > > Perhaps a linked list using relationships? > > > > > > Or even a btree should be doable? > > > > > > ------Original Message------ > > > From: Mattias Ask > > > Sender: user-boun...@lists.neo4j.org > > > To: Neo user discussions > > > ReplyTo: Neo user discussions > > > Subject: [Neo] Leaderboard? > > > Sent: Mar 15, 2010 11:03 AM > > > > > > I've been thinking of a problem that I have, and would like to hear > > > how you > > > all would solve it. > > > > > > I have a use case where the top scoring users should be presented in a > > > leaderboard. One players action may effect many players scores. How > > > would > > > you solve this problem when using Neo? I know that I could make all > > > actions > > > trigger an update to a PlayersScore-table in a relational db, and > > > then do a > > > "SELECT player_id, score FROM PlayersScores ORDER BY score DESC", > > > but I > > > would like to know how this can be done in Neo without killing > > > performance. > > > Any ideas? > > > > > > Best regards, > > > Mattias Ask > > > _______________________________________________ > > > Neo mailing list > > > User@lists.neo4j.org > > > https://lists.neo4j.org/mailman/listinfo/user > > > > > > > > > > > > _______________________________________________ > > > Neo mailing list > > > User@lists.neo4j.org > > > https://lists.neo4j.org/mailman/listinfo/user > > > > _______________________________________________ > > Neo mailing list > > User@lists.neo4j.org > > https://lists.neo4j.org/mailman/listinfo/user > > > _______________________________________________ > Neo mailing list > User@lists.neo4j.org > https://lists.neo4j.org/mailman/listinfo/user > _______________________________________________ Neo mailing list User@lists.neo4j.org https://lists.neo4j.org/mailman/listinfo/user