当我们提供所有分区键时,允许过滤如何工作?


AsuRa
2025-03-10 04:16:37 (4天前)


我已经阅读了至少50篇关于此的文章,但仍然不知道答案……
我知道如何分区,聚类和允许过滤工作,但无法弄清楚使用ALLOW背后的情况是什么…

2 条回复
  1. 0# Charizard | 2019-08-31 10-32





    1. 是的,它应首先筛选出分区,然后才会对非键值进行过滤,并按照此处提到的实验进行:

      https://dzone.com/articles/apache-cassandra-and-allow-filtering

      在大多数情况下,我认为在所有密钥之后使用allow过滤是安全的。





    2. 它将在很大程度上取决于您过滤掉的数据量 - 如果sport_id = 1的最后一个条件是试图过滤掉大部分数据,那么这将是一个坏主意,因为它给数据库带来了很大的压力,所以你需要考虑这里的权衡。





    3. 使用带有分区键的IN子句并不是一个好主意 - 特别是上面的查询看起来并不好看,因为它在分区键上使用IN子句和允许过滤。





    4. 建议 - Cassandra非常善于在一秒钟内处理尽可能多的请求,设计理念应该是一次发送更轻量级的查询,而不是尝试发送一个执行大量工作的查询。所以我的建议是在分区密钥上使用=条件触发N调用Cassandra,而不过滤最后一列,然后在代码中组合并执行最终过滤器(您使用的任何语言我认为它可以支持并行发送所有这些调用到数据库)。通过这样做,您可以在数据增长时长期获得性能优势。



    5. </醇>

登录 后才能参与评论