我在Cassandra有一张桌子,钥匙(现在从商业角度看)是这样的结构。 键+值的示例:
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, ....
每个键每个特定日期或月份都有一个值(每个键的日期/值记录的数量非常低。现在为200左右)。但是,键的数量很高。
从业务方面来说,仅查询一个特定的密钥(例如A B C D E F)是非常不寻常的。用户将仅应用部分过滤,如:
* * C D * *
在这种情况下,查询应返回所有6条记录。他可能还想过滤日期/月份,但是,如果数据量较低,则优先级较低。
由于CQL不允许部分表密钥过滤(在ALLOW FILTERING旁边),我不知道如何构建我的表。有任何想法吗?或者这是一个不适合Cassandra的案例?
感谢你
答案 0 :(得分:1)
使用Cassandra进行建模时,您需要为每种查询数据的方式创建一个表。因此,如果您想按D=some_val
进行查询,则您需要另一个可以回答该查询的表格 - 也就是说,它必须将D作为其分区密钥。
您的另一个选择是进行全表扫描并手动过滤,或使用Spark之类的东西来处理整个数据集。我不久前写了一篇博文,展示了你可以用Spark& amp;卡桑德拉。 http://rustyrazorblade.com/2015/07/cassandra-pyspark-dataframes-revisted/