当所有聚簇列都不可用时在 cql 中读取查询

Read queries in cql when all clustering columns are not available

在 cql 中,当我们编写读取查询时,我们需要按照主键定义中提到的相同顺序提供列,并且所有列都必须存在。但是如果我们没有可用于某些聚类列的值,如何编写查询。

例如,如果 table 的主键定义为主键((州)、城市、名称),其中包含用户的记录,其中用户的州、城市和名称作为主键的一部分,则如何编写查询以查找来自某个州的具有给定名称的所有用户,而不管他们所在的城市? 像

Select * from USERS where state ='....', name='....';

不行。

这里有两个选择。

  1. PRIMARY KEY ((state),name) 上键入的原始 table 旁边创建一个查询 table。

  2. 对上述查询调用 ALLOW FILTERING 指令,该指令仅过滤 statename

虽然通常不鼓励使用 ALLOW FILTERING(并且有充分的理由),但在 this 案例中并没有那么糟糕。通过指定 state,您已赋予查询定位包含数据的节点的能力。是的,您仍然会以一种非性能方式“过滤”数据,但至少它不会跨多个节点。