It is a tricky type of problem because some ways of doing it involve iterative scans. This presentation discusses a solution for top-k:
http://www.slideshare.net/planetcassandra/jonathan-halliday On Wed, Jan 22, 2014 at 12:48 PM, Colin <colpcl...@gmail.com> wrote: > Read users score, increment, update friends list, update user with new > high score > > Would that work? > > -- > Colin > +1 320 221 9531 > > > > > On Jan 22, 2014, at 11:44 AM, Kasper Middelboe Petersen < > kas...@sybogames.com> wrote: > > > > Hi! > > > > I'm a little worried about the data model I have come up with for > handling highscores. > > > > I have a lot of users. Each user has a number of friends. I need a > highscore list pr friend list. > > > > I would like to have it optimized for reading the highscores as opposed > to setting a new highscore as the use case would suggest I would need to > read the list a lot more than I would need write new highscores. > > > > Currently I have the following tables: > > CREATE TABLE user (userId uuid, name varchar, highscore int, bestcombo > int, PRIMARY KEY(userId)) > > CREATE TABLE highscore (userId uuid, score int, name varchar, PRIMARY > KEY(userId, score, name)) WITH CLUSTERING ORDER BY (score DESC); > > ... and a tables for friends - for the purpose of this mail assume > everyone is friends with everyone else > > > > Reading the highscore list for a given user is easy. SELECT * FROM > highscores WHERE userId = <id>. > > > > Problem is setting a new highscore. > > 1. I need to read-before-write to get the old score > > 2. I'm screwed if something goes wrong and the old score gets > overwritten before all the friends highscore lists gets updated - and it is > an highly visible error due to the same user is on the highscore multiple > times. > > > > I would very much appreciate some feedback and/or alternatives to how to > solve this with Cassandra. > > > > > > Thanks, > > Kasper >