【发布时间】:2016-06-02 03:50:39
【问题描述】:
我是 cassandra 的新手,我将它用于分析任务(需要良好的索引)。
我在这篇文章(和其他文章)中读到:cassandra, select via a non primary key 我无法使用带有WHERE clause 的非主键列查询我的数据库。
这样做,似乎有 3 种可能性(都有很大的缺点):
- 创建二级索引(不推荐用于性能问题)。
- 创建一个新表(我不想要冗余数据,即使 cassandra 没问题)。
- 将要查询的列放在主键中,在这种情况下,我需要在 WHERE 子句中定义主键的所有部分,并且不能使用除
IN或=之外的其他运算符.
在没有上述 3 个约束的情况下,是否有其他方法可以解决我想要做的事情(WHERE clause 带有非主键列)?
【问题讨论】:
-
Cassandra 确实不适合您描述的用例。听起来您需要查询灵活性,而您根本无法从 Cassandra 中获得这种灵活性。最重要的是,建议创建查询表(带有冗余数据)是一种可扩展的解决方案;而尝试像关系数据库一样使用 Cassandra 则不然。
-
嗨@Aaron oups,问题是对于查询灵活性
mongodb比cassandra更推荐,但对于read/write性能(这在我的情况下非常重要),后者非常在这一点上很糟糕。 -
而您将看到这种性能的唯一方法是采用使用冗余数据的基于查询的建模方法。当您尝试使用关系模型或类似方法来实现查询灵活性时,Cassandra 的表现非常糟糕。
-
OK :) 有没有关于如何构建查询表的好文档?
-
我建议从 datastax 中观看有关数据建模的课程,这与核心概念课程一起提供了非常坚实的基础:academy.datastax.com/courses/ds220-data-modeling
标签: indexing cassandra where-clause database nosql