In any case, the common approach to this in Cassandra is to not direc= tly manipulate the user's total score but to insert columns representing ch= anges to the score, later totaling them (and possibly inserting them elsewh= ere so you get the automatic sort). There are many fancy ways to approach t= his problem and reduce recalculation work.

To be m= ore specific about my reason for asking about monotonicity, if user scores = increased monotonically, you could simply keep a current "top ten" list and= bump out old members as new people's scores qualified for the top ten. Thu= s, you'd be keeping an ordered set of the top ten instead of an ordered set= of all people. Unfortunately, the possibility of decreasing scores means m= embers of the top ten may self-disqualify by a score decline, requiring pro= motion of the former 11th person to the top ten and immediate identificatio= n of the former 12th person to fill the 11th spot. (With a lack of monotoni= city, the top eleven -- not just ten -- must always be tracked to efficient= ly know when someone drops below the top ten.)

----- "David Timoth= y Strauss" <david@fourkitchens.com> wrote:
If user score= s move in more than one direction, as they apparently do in your case, they= are not monotonic. Monotonicity can make system design a bit easier for va= rious reasons.

----- "JKnight JKnight" <beuknight@gmail.com>= wrote:
Thanks David,
But what's does "monotonicity" me= an?

User's score belongs to their action. When they win the game o= r sale something, user's score  will increase. When user lose the game= or buy something, user's score will decrease.

On Mon, Apr 5, 2010 at 4:09 AM, David Straus= s wrote:

You should also know: Cassandra is not ideal for directly tracking
values you increment or decrement.

On 2010-04-05 08:04, JKnight JKnight wrote:
> Thanks for for reply, David.
>
> I will tell more the detail about the system. My system is used to sto= re
> the score (point) user earn when they play game.
>
> "Mark" is the score.
> User's score changes when user win game, buy or sell anything.
>
> Sorry I make a mistake. My data model is:
>
> Mark{ //Column Family
>     gameId:{ //row key
>         mark_userId: ""// (column name : value), >         mark2_userId2: ""
>     },
>     gameId2:{//row key
>         mark_userId: ""
>     }
> }
>
>
> On Sun, Apr 4, 2010 at 11:44 PM, David Strauss <david@fourkitchens.com
> <mailto:david@fourkitchens.com>> wrote:
>
>     On 2010-04-05 02:48, JKnight JKnight wrote:
>     > I want to design the data storage to store user's m= ark for a large
>     > amount of user. When system run, user's mark change= s frequently.
>
>     What is a "mark"?
>
>     > I want to list top 10 user have largest mark.
>
>     Do the "marks" increase monotonically? What other proper= ties do they
>     have?
>
>     > Could we use Cassandra for store this data?
>     >
>     > Ex, here my Cassandra data model design:
>     > Mark{
>     >     userId{
>     >         mark_userId
>     >     },
>     > }
>
>     I do not understand that notation. What parts are the CF= , key/row, and
>     column?
>
>     > When user's mark changes, we remove old mark_userId= and add new
>     > mark_userId.
>     > Because user's mark change frequently and with larg= e amount  of
>     user, I
>     > think Cassandra can not satisfy.
>
>     On the contrary, Cassandra excels at tracking rapidly ch= anging data and
>     even shards rows to scale I/O horizontally.
>
>     --
>     David Strauss
>       | david@fourkitchens.com <mailto:david@fourkitchens.com>
>     Four Kitchens
>       | http://fourkitchens.com
>       | +1 512 454 6659 [office]
>       | +1 512 870 8453 [direct]
>
>
>
>
> --
> Best regards,
> JKnight

--
David Strauss
| david= @fourkitchens.com
| +1 512 577 5827 [mobile]
Four Kitchens
| http://four= kitchens.com
| +1 512 454 6659 [office]
| +1 512 870 8453 [direct]

--
Best regard= s,
JKnight

--
David Strauss
| david= @fourkitchens.com
| +1 512 577 5827 [mobile]
Four Kitche= ns
| http://fourkitchens.com
| +1 512 454 6= 659 [office]
| +1 512 870 8453 [direct]

--
David Strauss
| david@fo= urkitchens.com
| +1 512 577 5827 [mobile]
Four Kitchens<= br>   | http://fourkitchens.com
| +1 512 454 6659= [office]
| +1 512 870 8453 [direct]
------=_Part_37100_388006094.1270466787884--