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

Reply via email to