我有一张表:
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上添加索引以使其工作或使其成为键的一部分。
我的问题是:
将value1作为密钥的一部分添加是一个好主意吗?
在插入过于频繁(1分钟)时,在value1上添加索引是一个好主意吗?
如果两者都不是很好的选择,我们如何为范围查询建模这个要求?
答案 0 :(得分:0)
将value1添加为密钥的一部分是个好主意吗?
如果您这样做,那么您必须知道value1
的可能值以请求数据。如果value1
是一种枚举,则可能(使用in
cql关键字)但作为double
,我认为这不是一个好的解决方案。
在插入过于频繁(1分钟)的情况下,在value1上添加索引是一个好主意吗?
我不知道你为什么不应该这样做。