【发布时间】:2016-12-23 07:45:58
【问题描述】:
我的 Cassandra 集群中有以下时间序列:
CREATE TABLE consumptions (
meter_id int,
date date,
meter_date_time timestamp,
data text,
PRIMARY KEY ((meter_id, date), meter_date_time)
) WITH CLUSTERING ORDER BY (meter_date_time DESC)
要计算一个月的消耗量,我需要一个月的最新抄表。就我而言,查询如下所示:
select * from consumtions
where meter_id = 1 and
date in (...'2016-12-30','2016-12-31'...)
limit 1
我知道,带有多个分区键的 IN 子句是一种反模式。没有非规范化的查询是否有更好的方法?
在我的大多数其他查询中,我使用的是 asnyc 查询 - 但这会返回所有结果,我无法使用 Limit。
【问题讨论】:
-
感谢您的 cmets。我实施了第二个解决方案:第二个替代方案是异步运行每个月的每一天查询,并在应用程序级别过滤掉最新的度量。这只是一小段代码。
标签: cassandra cql database-partitioning nosql