访问Cassandra中的集成rowkey

时间:2012-10-30 08:05:33

标签: cassandra composite

  

可能重复:
  Misunderstanding on Composite Key for Cassandra

我有一个带有复合键的列家族:

create column family MyCF
with key_validation_class = 'CompositeType(UTF8Type, UTF8Type)'
and comparator = 'CompositeType(UTF8Type, UTF8Type)'
and default_validation_class='CompositeType(UTF8Type, UTF8Type)'
;

我存储了行键,其中包含以下值:1:1,2:2,1:3,2:1,1:2,2:3

RowKey: 1:1
= (column=colum1, value=value1, timestamp=1351093372962000)

RowKey: 2:2
=> (column=colum1, value=value1, timestamp=1351093411137000)

RowKey: 1:3
= (column=colum1, value=value1, timestamp=1351093385820000)

RowKey: 2:1
= (column=colum1, value=value1, timestamp=1351093401162000)

RowKey: 1:2
= (column=colum1, value=value1, timestamp=1351093379274000)

RowKey: 2:3
= (column=colum1, value=value1, timestamp=1351093421393000)

加载Cassandra后,我希望恢复所有以1开头的行,即 1:1,1:2和1:3

我尝试过使用Hector和Thrift,但我无法找到有关文档的任何信息。

使用CQL无法恢复它,因为不支持这种查询,或者这就是论坛上的说法。

我还设法通过选择行键(1:1,1:2,1:3)来恢复信息,这可以正常工作,但我真正需要做的是恢复只询问第一个的信息集成密钥的元素。

我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

嗯,完全不同的方式是这样的

RowKey: 1:1
= (extra:1, column=colum1, value=value1, timestamp=1351093372962000)

RowKey: 2:2
=> (extra:2, column=colum1, value=value1, timestamp=1351093411137000)

RowKey: 1:3
= (extra:1, column=colum1, value=value1, timestamp=1351093385820000)

RowKey: 2:1
= (extra:2, column=colum1, value=value1, timestamp=1351093401162000)

RowKey: 1:2
= (extra:1, column=colum1, value=value1, timestamp=1351093379274000)

RowKey: 2:3
= (extra:2, column=colum1, value=value1, timestamp=1351093421393000)

然后你可以索引额外的字段。作为使用cassandra的PlayOrm中的示例,您可以拥有

public class Entity {
  @NoSqlId
  private String id;

  @NoSqlIndexed
  private String extra;

  @NoSqlPartitionedBy
  private Account fieldYouMightPartitionBy;    
  private String column;
  private String value;
}

然后你可以运行

PARTITIONS (:partitionId) SELECT e from Entity as e WHERE e.extra = 1;

后, 迪安