如何更快地在where子句中使用非主键列运行cassandra查询。

时间:2016-08-29 00:11:28

标签: cassandra

我正在考虑性能基准,将cassandra视为我们项目的数据库解决方案。我创建了一个包含28列的表,其中有几列作为主键。

我加载了包含大约250多万条记录的数据的表格。

当我在where子句中使用主键列查询查询时,结果非常令人满意。当我在5个线程中并行化查询时,我可以在2.5分钟内完成接近100万个查询。

但是,当我在where子句中尝试使用非主键列进行查询时,1000个查询花了将近2个小时。

我知道,没有主键是不利的,我们可能会遇到某种情况。

  1. 我试图查看是否可以使用二级索引,但它们似乎仅限于一列。

  2. 我找不到自定义索引的正确示例,因为它需要索引类型类。

  3. 如果我使用主键中的所有列,那至少会有5%的帮助。

  4. 如果我们期望在where子句中没有主键列的更多查询情况,cassandra真的是一个很好的解决方案吗?

  5. 我坚信有人可能肯定会遇到这种情况,所以如果有人可以分享他们的经验会很棒。

1 个答案:

答案 0 :(得分:3)

  

如果我们期望在where子句中没有主键列的更多查询情况,那么cassandra真的是一个很好的解决方案吗?

这是一个使用案例,其中先验的Cassandra不是最佳解决方案。 但是,如果您有250多万条记录,其他数据库也会遇到性能问题。

一种解决方案是在其他表中构建自己的索引。 如果你没有太多不同类型的where子句,它应该可以解决问题。 即使您必须执行多个更新或选择命令来更新或选择单行,这些命令中的每一个都应该与您所做的工作一样快。