cassandra - 一致性级别与 Cassandra 原生二级索引有何关系?
问题描述
一致性级别与二级索引有何关系?如果例如在没有限制的二级索引查询中使用 QUORUM 查询?Cassandra内部:首先查询所有节点本地索引,然后使用本地索引查询的结果(分区),使用QUORUM获取索引分区数据?
这就是为什么以下陈述是正确的?:
问:“使用二级索引时,一致性级别的选择如何影响集群可用性?”
A:“因为二级索引是分布式的,为了完成一次查询,集群中的所有token范围必须有可用的CL节点。例如,RF = 3,当环中三个连续节点中有两个不可用时, CL = QUORUM 的所有二级索引查询都将失败,但是 CL = ONE 的二级索引查询将成功。无论集群大小如何,都是如此。
解决方案
您指定的一致性级别决定了读取请求必须有多少副本可用才能成功。
在执行需要二级索引的查询时,这不仅适用于节点的仲裁,而且这次适用于所有令牌范围的仲裁。
例如一个集群有6个节点A到F。如果节点A拥有50到100的token范围,并且节点B和C是环右边的相邻节点,那么对于一个QUORUM
节点A的一致性为2的读查询/B/C 必须可用于标记范围 50-100 的索引查找。对 DC/环中的所有其他令牌范围重复此要求。
出于这个原因,二级索引查找非常昂贵,因此我们建议您避免使用它们,如果性能对您很重要,请在可能的情况下进行非规范化。干杯!
推荐阅读
- c# - LINQ:用正文编写表达式以返回 IQueryable
- excel - 从方阵中选择列向量的函数
- javascript - 在 IndexedDb 中的游标外访问游标中设置的变量
- css - CSS等价于
- python - 如何填补python中丢失的时间段?
- reactjs - 如何在 BootStrapTable 的 TableHeaderColumn 中显示数据字段的全文
- c++ - 编译 gsoap-onvif 解决 #error: 'M_ASN1_STRING_data' 未在此范围内声明
- apache-kafka - 如何在 mvn spring-boot:run 时修复 kafka 错误
- javascript - 在javascript中加入两行
- java - 如何创建消费者生产者队列