我想让cassandra用一系列参数来过滤结果。但这在“正常”列上是不可能的。或者用Cassandra的话说:
IN predicates on non-primary-key columns (access_right_id) is not yet supported
我的table是这样的:
CREATE TABLE "service"
(
course_id uuid,
type text,
access_token uuid,
name_de text,
name_en text,
url text,
edit_right_id uuid,
access_right_id uuid,
PRIMARY KEY (course_id, type, access_token)
);
我想执行如下查询:
SELECT * FROM service WHERE
course_id = :courseId
AND type = :type
AND access_right_id IN :rights
我现在正在寻找解决我问题的办法。我在想三种可能的解决办法:
发送n次查询(可能带有物化视图和 access_right_id
作为主键部分(集群键))
SELECT * FROM service WHERE
course_id = :courseId
AND type = :type
AND access_right_id = :right
发送生成的查询,如下所示:
SELECT * FROM service WHERE
course_id = :courseId
AND type = :type
AND (access_right_id = :right1 OR access_right_id = :right2 OR access_right_id = :right ...)
发送查询而不进行筛选,并以代码形式筛选结果。
在这种情况下你认为这是最好的吗?Cassandra更“顺从”的是什么?
提前感谢您的意见。
暂无答案!
目前还没有任何答案,快来回答吧!