cassandra 3.11,按列表筛选结果(搜索备选方案)

llmtgqce  于 2021-06-13  发布在  Cassandra
关注(0)|答案(0)|浏览(302)

我想让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更“顺从”的是什么?
提前感谢您的意见。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题