在Cassandra中允许过滤以获得以下查询效率吗?

时间:2016-12-28 14:41:24

标签: performance cassandra nosql

我有一张这样的表:

CREATE TABLE IF NOT EXISTS Posts (
    idObject int,
    objectType text,
    idParent uuid,
    id uuid,
    idResolution uuid,
    PRIMARY KEY ((idObject, objectType, idParent), id)
);

现在看看以下查询:

SELECT * FROM POSTS WHERE idobject = 1 AND objectType = 'COURSE' AND idParent = 00000000-0000-0000-0000-000000000000 AND idResolution = 00000000-0000-0000-0000-000000000000 ALLOW FILTERING

现在分区密钥是完全已知的,所以如果我使用ALLOW FILTERING会出现任何性能问题,因为过滤将在已知的单个分区中完成?

2 个答案:

答案 0 :(得分:2)

这取决于该特定分区中的行数,以及它们是否分布在多个SSTable文件中。但是就像你说的那样,这个查询保证只限于一个节点,所以可能没问题。

我用cassandra-stress测试它,只是为了确定。这样,您就可以知道您的应用程序是否可以接受查询延迟。

答案 1 :(得分:2)

对于大型分区,最好使用DataStax驱动程序分页API。 https://docs.datastax.com/en/developer/java-driver/2.1/manual/paging/

一个巨大的分区可能会与您请求的无限大小有一些与应用程序相关的问题。保持安全并开启页面。