首页 > 解决方案 > 一致性级别与 Cassandra 原生二级索引有何关系?

问题描述

一致性级别与二级索引有何关系?如果例如在没有限制的二级索引查询中使用 QUORUM 查询?Cassandra内部:首先查询所有节点本地索引,然后使用本地索引查询的结果(分区),使用QUORUM获取索引分区数据?

这就是为什么以下陈述是正确的?:

问:“使用二级索引时,一致性级别的选择如何影响集群可用性?”

A:“因为二级索引是分布式的,为了完成一次查询,集群中的所有token范围必须有可用的CL节点。例如,RF = 3,当环中三个连续节点中有两个不可用时, CL = QUORUM 的所有二级索引查询都将失败,但是 CL = ONE 的二级索引查询将成功。无论集群大小如何,都是如此。

标签: cassandra

解决方案


您指定的一致性级别决定了读取请求必须有多少副本可用才能成功。

在执行需要二级索引的查询时,这不仅适用于节点的仲裁,而且这次适用于所有令牌范围的仲裁。

例如一个集群有6个节点A到F。如果节点A拥有50到100的token范围,并且节点B和C是环右边的相邻节点,那么对于一个QUORUM节点A的一致性为2的读查询/B/C 必须可用于标记范围 50-100 的索引查找。对 DC/环中的所有其他令牌范围重复此要求。

出于这个原因,二级索引查找非常昂贵,因此我们建议您避免使用它们,如果性能对您很重要,请在可能的情况下进行非规范化。干杯!


推荐阅读