CQL 部分键过滤器

CQL partial key filter

我在 Cassandra 中有一个 table,其中的关键(现在从业务角度来看)是这样的结构。 键 + 值示例:

Key (exists of 6 columns)             Date/value
A | B | C | D | E | F |    -> 2000-01 : 100, 2000-02 : 220, ....
A | B | C | D | X | F |    -> 2000-01 : 100, 2000-02 : 233, ....
A | B | C | D | Y | F |    -> 2000-01 : 111, 2000-02 : 210, ....
A | Z | C | D | E | F |    -> 2000-01 : 122, 2000-02 : 230, ....

每个键在特定日期或月份都有一个值(每个键 date/value 记录的数量非常少。目前大约 200 个)。但是key数量偏多

从业务方面来看,仅查询一个特定键(如 A B C D E F)是非常不常见的。用户将仅应用部分过滤,如:

* * C D * *

在这种情况下,查询应该 return 所有 6 条记录。他可能还想在 date/month 上进行过滤,但是,鉴于数据量较少,这是较低的优先级。

由于 CQL 不允许部分 table 键过滤(除了 ALLOW FILTERING),我不确定如何构建我的 table。有任何想法吗?还是这种情况不适合 Cassandra?

谢谢你

使用 Cassandra 建模时,您需要为每种查询数据的方式创建一个 table。因此,如果您想通过 D=some_val 进行查询,您将需要另一个可以回答该查询的 table - 也就是说,它必须将 D 作为分区键。

您的另一个选择是进行全面 table 扫描并手动过滤,或者使用类似 Spark 的工具来处理您的整个数据集。我不久前写了一篇博客 post,展示了您可以使用 Spark & Cassandra 做什么。 http://rustyrazorblade.com/2015/07/cassandra-pyspark-dataframes-revisted/