我正在尝试使用 cassandra 对具有许多传感器(> 50k)的时间序列数据进行建模。由于我想同时对多个传感器进行过滤,我认为使用以下(宽行)模式可能是合适的:
CREATE TABLE data(
time timestamp,
session_id int,
sensor text,
value float,
PRIMARY KEY((time, session_id), sensor)
);
如果每个传感器值都是 RDBMS 中的一列,我的查询理想情况下如下所示:
SELECT * FROM data WHERE sensor_1 > 10 AND sensor_2 < 2;
翻译成我的 cassandra 模式,我假设查询可能如下所示:
SELECT * FROM data
WHERE
sensor = 'sensor_1' AND
value > 10 AND
sensor = 'sensor_2' AND
value < 2;
我现在有两个问题:
- cassandra 告诉我,我只能在传感器列上过滤一次:
如果传感器包含 Equal,则传感器不能受多个关系的限制
- 显然,价值过滤目前没有意义。我不知道如何在查询中表达传感器和值之间的关系,以便过滤同一(宽)行中的多个列。
我知道第一个问题的解决方案是使用 CQL 的IN
子句。然而,这并不能解决第二个问题。
这种情况甚至适合 cassandra 吗?
提前谢谢了。