Many million users. Just the one game- I might have some different scores I need to keep track of, but I very much hope to be able to use the same approach for those as for the high score mentioned here.
On Wed, Jan 22, 2014 at 7:08 PM, Colin Clark <co...@clark.ws> wrote: > How many users and how many games? > > > -- > Colin > +1 320 221 9531 > > > > On Jan 22, 2014, at 10:59 AM, Kasper Middelboe Petersen < > kas...@sybogames.com> wrote: > > I can think of two cases where something bad would happen in this case: > 1. Something bad happens after the increment but before some or all of the > update friend list is finished > 2. Someone spams two scores at the same time creating a race condition > where one of them could have a score that is not yet updated (or the old > score, depending on if the increment of the highscore is done before or > after the friend updates) > > Both are unlikely things to have happen often, but I'm going to have quite > a few users using the system and it would be bound to happen and I would > really like to avoid having data corruption (especially of the kind that is > also obvious to the users) if it can at all be avoided. > > Also should it happen there is no way to neither detect nor clean it up. > > > On Wed, Jan 22, 2014 at 6: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 >> > >