查询cassandra的最快方法?主键还是分区键?

1yjd4xko  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(388)

问Cassandra最快的方法是什么?我有一个主键由3列组成的表。我通过其中一列进行查询,速度非常慢(我通过spark进行查询)。所有3个人的查询速度会更快吗?

我还有一个由两列组成的分区键。不幸的是,我用来获取记录的列不是分区键中的列。会不会因此而变慢?
任何见解都是有帮助的。

zbsbpyhn

zbsbpyhn1#

不幸的是,我用来获取记录的列不是分区键中的列。会不会因此而变慢?
是的,这可能就是事情进展缓慢的原因。尽管公平地说,spark是用来查询分布式数据存储的。它不是为了快而设计的。
所以我假设主键定义如下:

PRIMARY KEY((A,B),C)

查询的原因 C 速度慢,是因为cassandra(spark)无法确定集群中哪个节点负责基于 C . 因此,需要检查每个节点的 C 满足你的要求。
所有3个人的查询速度会更快吗?
是的,三者的查询速度可能更快。这是因为分区键由 A 以及 B . 对于基于分区键的查询,在本例中 A 以及 B 都是散列在一起的。该散列与每个节点负责的令牌范围相匹配。这样,可以容易地确定包含期望数据的目标节点,并且不需要检查每个节点的匹配值。
如果我只使用主键的1列(比如a)进行查询,那也会很快,对吧?
不,不会的。给定的分区键定义 (A,B) ,无法确定包含数据的节点 A 一个人。事实上,由于结果集可能会更大,通过 A 可能比通过 C .

相关问题