如何解决当所有聚类列都不可用时,读取 cql 中的查询
在 cql 中,当我们编写读取查询时,我们需要按照在主键定义中提到的相同顺序提供列,并且所有列都必须存在。但是如果我们没有可用于某些聚类列的值,如何编写查询。
例如,如果主键定义为主键((state),city,name) 包含用户记录的表,其状态,城市和姓名作为主键的一部分,那么如何编写查询以查找来自一个州的所有具有给定名称的用户,而不管他们的城市? 类似的东西
Select * from USERS where state ='....',name='....';
不起作用。
解决方法
这里有两种选择。
-
在以
PRIMARY KEY ((state),name)
为键的原始表旁边创建一个查询表。 -
对上述查询调用
ALLOW FILTERING
指令,该指令仅过滤state
和name
。
虽然通常不鼓励使用 ALLOW FILTERING
(并且有充分的理由),但在这种情况下它并没有那么糟糕。通过指定 state
,您赋予查询定位包含数据的节点的能力。是的,您仍然会以性能不佳的方式“过滤”数据,但至少不会跨多个节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。