是否可以在不指定1st的情况下按第二个群集键进行过滤?

时间:2015-01-29 19:15:41

标签: cassandra primary-key

我刚开始接手cassandra

我很好奇我能否做到以下几点:

session.execute("CREATE TABLE IF NOT EXISTS mykeyspace.newtable 

(user_id int,
 item_id int,
 tstamp timestamp,
 PRIMARY KEY(user_id, item_id, tstamp))")

我的理解:

我知道我的user_id是一个分区键,我只能按=对其进行过滤。我的item_idtstamp是群集密钥。我可以按范围过滤item_id(使用相等符号),对于给定的item_id我可以按tstamp的范围过滤,但如果未指定item_id,我可以无法按tstamp进行过滤。

我的问题:

有没有办法指定我的PRIMARY KEY,以便我可以:

1)按=过滤user_id(我已经拥有)

2)按= item_id过滤(我已经拥有)

3)按tstamp的范围过滤(我没有)

如果我将PRIMARY KEY规范更改为:

PRIMARY KEY(user_id, tstamp, item_id)

然后我将无法再按item_id进行过滤。因此,如果有一种方法以某种方式按item_id过滤而未指定tstamp,我会得到答案。

有没有办法实现我想要的目标?

1 个答案:

答案 0 :(得分:5)

答案是建立两个表。一个与您想要的每个主键方案。在具有不同模式的表中复制数据相对便宜,因为在Cassandra中写入速度非常快。