Cassandra选择查询时间序列数据

时间:2016-10-21 11:31:12

标签: cassandra cassandra-2.0 cassandra-2.1

我有一张表:

CREATE TABLE mydata (
my_key TEXT,
log_time TIMESTAMP,
value1 DOUBLE,
PRIMARY KEY (my_key, log_time)
);

我们获取时间序列数据,其中我们为100K键插入100K值(每分钟每个键1个值),因此每分钟都会添加新值。

我想运行以下范围查询:

Select * from mydata where my_key='1' and (log_time >='starttime' and log_time <='endtime') and (value1 > 100 and value1 < 200)

使用当前表设计,可能因为value1不是分区/群集键的一部分。但是,我们可以在value1上添加索引以使其工作或使其成为键的一部分。

我的问题是:

  1. 将value1作为密钥的一部分添加是一个好主意吗?

  2. 在插入过于频繁(1分钟)时,在value1上添加索引是一个好主意吗?

  3. 如果两者都不是很好的选择,我们如何为范围查询建模这个要求?

1 个答案:

答案 0 :(得分:0)

  

将value1添加为密钥的一部分是个好主意吗?

如果您这样做,那么您必须知道value1的可能值以请求数据。如果value1是一种枚举,则可能(使用in cql关键字)但作为double,我认为这不是一个好的解决方案。

  

在插入过于频繁(1分钟)的情况下,在value1上添加索引是一个好主意吗?

我不知道你为什么不应该这样做。