0

可能重复:
对 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)来恢复信息,这可以正常工作,但我真正需要做的是恢复只询问第一个元素的信息组合键。

我该怎么做?

谢谢

4

1 回答 1

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;

后来,迪恩

于 2012-10-31T12:19:55.500 回答