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

Aka*_*all 3 primary-key cassandra

我刚开始接手了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))")
Run Code Online (Sandbox Code Playgroud)

我的理解:

我知道我user_id是一个分区键,我只能过滤它=.我item_idtstamp是群集密钥.我可以item_id按范围过滤(使用等号),对于给定的item_id我可以按范围过滤tstamp,但如果item_id没有指定,我根本无法过滤tstamp.

我的问题:

有没有办法指定我PRIMARY KEY这样我可以:

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

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

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

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

PRIMARY KEY(user_id, tstamp, item_id)
Run Code Online (Sandbox Code Playgroud)

然后我将无法再过滤item_id.因此,如果有一种方式以某种方式过滤而item_id没有指定tstamp我会得到我的答案.

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

Rus*_*ssS 5

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