2012-10-30 42 views
0

可能重複:
Misunderstanding on Composite Key for Cassandra訪問集成rowkey在卡桑德拉

我有一個ColumnFamily中具有複合鍵:

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) 

加載卡桑德拉後,我要恢復所有以1開頭是 1行,:1,1:2和1:3

我已經嘗試過使用赫克託和做節儉,但我一直無法找到關於文檔的任何信息。

使用CQL不可能恢復它,因爲這種查詢不受支持,或者這是論壇上的說法。

我也設法通過選擇行鍵(1:1,1:2,1:3)來恢復信息,並且這個工作正常,但是我真正需要做的是恢復信息,只詢問集成密鑰的第一個元素。

我該怎麼辦?

感謝

+0

什麼是你的分區? – Tamil

回答

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) 

然後你可以索引的額外字段。作爲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; 

後, 院長