Cassandra中的IN关系是否对查询不利?

梁安迪

给定CQL中以下选择的示例:

SELECT * FROM tickets WHERE ID IN (1,2,3,4)

给定ID是分区键,使用IN关系是否比执行多个查询更好?或者没有区别?

亚伦

我记得不久后有人在Cassandra用户邮件列表中回答了这个问题,但是现在我找不到确切的消息。具有讽刺意味的是,Cassandra传播者Rebecca Mills刚刚发表了一篇文章解决了这个问题(使用Cassandra驱动程序时应该做的事情……要点#13和#22)。但是答案是“是”,在某些情况下,多个并行查询要比使用an更快IN根本原因可以在DataStax SELECT文档中找到

何时不使用IN

...使用IN可能会降低性能,因为通常必须查询许多节点。例如,在一个具有30个节点,复制因子为3且一致性级别为LOCAL_QUORUM的单个本地数据中心群集中,单个键查询针对两个节点,但是如果查询使用IN条件,则将被查询的节点可能更高,最多可达20个节点,具体取决于密钥在令牌范围内的位置。

因此,基于此,随着群集的扩大,似乎这将成为一个更大的问题。

因此,解决此问题的最佳方法(根本不必使用IN)是重新考虑此查询的数据模型。在不了解您的架构的情况下,也许有票证ID 1、2、3和4共享的属性(列值)。也许使用了诸如关卡或组(如果票证用于特定场所)之类的东西,甚至而是一个事件(id)。

基本上,虽然使用唯一的高基数标识符对数据进行分区听起来不错,但实际上,以后(在Cassandra中)查询数据会变得更加困难。如果您可以提出另一列来对数据进行分区,那么在这种情况下肯定会对您有所帮助。无论如何,创建一个新的特定列族(表)来处理这些行的查询将是比使用IN或多个查询更好的方法

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Cassandra CQL中,是否可以查询集合列类型的大小?

来自分类Dev

Parse.com是否允许在关系查询中包含指针?

来自分类Dev

在Rails中查询关系的关系

来自分类Dev

在Cassandra中处理关系模型

来自分类Dev

WHERE中的谓词与SQL查询中FROM中的关系是否正确,是否正确?

来自分类Dev

cassandra中的SELECT查询

来自分类Dev

Cassandra中的范围查询

来自分类Dev

删除Cassandra中的查询

来自分类Dev

在ManyToMany关系中查询

来自分类Dev

laravel中的关系查询

来自分类Dev

关系中的SQL查询

来自分类Dev

在Laravel中查询关系

来自分类Dev

解析中的关系查询

来自分类Dev

Android中的关系查询

来自分类Dev

在Laravel Eloquent中查询关系内的关系

来自分类Dev

Korma中的with子句是否会为关系中的每个项目触发一个查询?

来自分类Dev

Cassandra inet类型是否支持CIDR查询?

来自分类Dev

SOLR Cassandra查询是否应该详尽无遗?

来自分类Dev

Cassandra inet类型是否支持CIDR查询?

来自分类Dev

Cassandra CQL中的聚合查询

来自分类Dev

Cassandra查询中的模运算

来自分类Dev

关系中的MYSQL查询搜索

来自分类Dev

在Django中查询ManyToMany关系

来自分类Dev

口才ORM中的关系查询

来自分类Dev

SELECT查询中的关系(PHP)

来自分类Dev

SQL 中的多关系查询

来自分类Dev

oneToMany 关系中的 HQL 查询

来自分类Dev

在 Cassandra 中管理多对多关系

来自分类Dev

如何使用cassandra中的元数据查询/日志查找是否正在读取表