【问题标题】:Cassandra: Column Family with composite keyCassandra:具有复合键的列族
【发布时间】:2012-10-23 11:02:08
【问题描述】:

我需要在 Cassandra 中创建一个带有复合键 (Player,Match) 的列族 (PlayerGoals) 我正在考虑将其定义为 Supercolumn,但我读到使用 Supercolumns 不是一个好主意。

我需要代表的一个例子是:

玩家目标:

Player: 1
    Match: 2
        Goals - 0
    Match: 3
        Goals - 2
Player: 2
    Match: 2 
        Goals - 1

....

【问题讨论】:

  • 您能说说您的查询模式吗?

标签: cassandra


【解决方案1】:

您可以使用复合键来存储它,其中键是 Player:Match,如下所示:

1:2
  Goals = 0
1:3
  Goals = 2
2:2
  Goals = 1

使用此架构,您可以:

  • 获取玩家的所有匹配项
  • 为玩家获得最高/最低/等目标
  • 找出一组玩家中的哪些人参加了比赛
  • 按进球数对已知球员列表进行排序

您需要一个单独的索引来:

  • 让球员参加比赛
  • 排名未知玩家

【讨论】:

  • 首先感谢,实际上我的问题是如何在 Cassandra 中执行这些操作。所以我想创建这些列族.. 使用比较器 = UTF8Type 和 default_validation_class= UTF8Type 和 column_metadata = [ {column_name : Name, validation_class : UTF8Type} ] 创建列族播放器;使用比较器创建列族匹配 = UTF8Type 和 default_validation_class= UTF8Type 和 column_metadata = [ {column_name : MatchName, validation_class : UTF8Type} ];
  • 创建列族 PlayerMatch,比较器 = 'CompositeType(UTF8Type,UTF8Type)' 和 default_validation_class= UTF8Type 和 column_metadata = [ {column_name : 目标,validation_class : UTF8Type} ];如果我插入这 2 行: set Player['01'][utf8('Name')]=utf8('Peter Crouch'); set Match['01'][utf8('MatchName')]=utf8('FA Cup 01');如何使用之前添加的行在 PlayerMatch 中插入一行? (set PlayerMatch['???']['???'][utf8('Goals')]=utf8('2');) 提前致谢。
猜你喜欢
  • 2013-07-08
  • 2012-06-26
  • 2012-12-05
  • 2013-11-01
  • 2013-10-28
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 2013-08-17
相关资源
最近更新 更多