我不完全确定你在问什么(Xp 是用户的分数吗?),但这里有一个猜测:
要存储用户数据,请为每个用户创建一行,键入他们的用户名(假设这是唯一且固定的),然后为每个项目创建一个列:
username -> Xp other ...
value value ...
要维护一个高分表,请使用单行(可能在不同的列族中),包含所有用户(或高于某个阈值的用户),列名是分数,并指定一个数字 ( LongType) 比较器,以便按分数对列进行排序:
highscores -> 1000 1001 99999999 ...
user123 user345 user789 ...
然后,您可以通过查询此排序行中的最后或前 N 列来检索最高的 N 分。如果该行太大,您可以从该行中删除低分。
更新:正如您所指出的,多个用户可能获得相同的分数。一个快速而肮脏的解决方案是将值设为用户列表:
highscores -> 1000
"user123, user567, user899"
如果您不太可能获得大量相同分数的用户,这是可以容忍的,但由于您需要读取、更新和写入列表,这很尴尬。
您可以使用超级列,但通常不推荐使用这些。
否则您可能会使用composite column keys 以便区分用户,但保持按分数排序的列。