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 に答える