是否可以在不指定第一个的情况下按第二个簇键进行过滤?
Is it possible to filter by 2nd cluster key without specifying 1st?
我刚开始接触 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_id
和 tstamp
是簇键。我可以按范围过滤 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
进行过滤。因此,如果有一种方法可以在不指定 tstamp
的情况下以某种方式按 item_id
进行过滤,我就会得到我的答案。
有没有办法实现我正在寻找的东西?
这个问题的答案是建立两个表。一个与您想要的每个主键方案。在具有不同模式的表中复制数据相对便宜,因为在 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))")
我的理解:
我知道我的 user_id
是一个分区键,我只能通过 =
过滤它。我的 item_id
和 tstamp
是簇键。我可以按范围过滤 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
进行过滤。因此,如果有一种方法可以在不指定 tstamp
的情况下以某种方式按 item_id
进行过滤,我就会得到我的答案。
有没有办法实现我正在寻找的东西?
这个问题的答案是建立两个表。一个与您想要的每个主键方案。在具有不同模式的表中复制数据相对便宜,因为在 Cassandra 中写入速度非常快。