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/
我在 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/