【发布时间】:2017-09-11 19:36:06
【问题描述】:
所以,我有一个 Cassandra CQL 语句,如下所示:
SELECT * FROM DATA WHERE APPLICATION_ID = ? AND PARTNER_ID = ? AND LOCATION_ID = ? AND DEVICE_ID = ? AND DATA_SCHEMA = ?
此表按时间戳列排序。
该功能由 REST API 和他们可以指定以获取最新行的过滤器参数之一,然后我将“LIMIT 1”附加到 CQL 语句的末尾,因为它是按时间戳排序的列按降序排列。我想做的是允许他们指定多个设备 ID 以获取最新条目。所以,我的问题是,有没有办法在 Cassandra 中做这样的事情:
SELECT * FROM DATA WHERE APPLICATION_ID = ? AND PARTNER_ID = ? AND LOCATION_ID = ? AND DEVICE_ID IN ? AND DATA_SCHEMA = ?
并且仍然使用“LIMIT 1”之类的东西来只取回每个设备 ID 的最新行?或者,我是否只需为每个设备执行单独的 CQL 语句来获取每个设备的最新行?
FWIW,表的复合键如下所示:
PRIMARY KEY ((application_id, partner_id, location_id, device_id, data_schema), activity_timestamp)
) WITH CLUSTERING ORDER BY (activity_timestamp DESC);
【问题讨论】: