【问题标题】:Filter by two timestamp fields in Cassandra按 Cassandra 中的两个时间戳字段过滤
【发布时间】:2021-03-31 23:03:25
【问题描述】:

我在 cassandra 有一张桌子

CREATE TABLE measurements
(
    device_id            text,
    first_measurement_time   timestamp,
    last_measurement_time    timestamp

PRIMARY KEY ...
)

如果我的查询是这样的,我应该如何配置主键:

select * from measurements 
where device_id=? 
    and first_measurement > ? 
    and last_measurement < ?

【问题讨论】:

    标签: sql cassandra cassandra-3.0


    【解决方案1】:

    您不能在两个不同的列上设置不等式条件,即使它们都是主键的一部分。 Cassandra 要求,如果您在聚类列上进行不等式比较,则之前的所有聚类列都必须具有相等条件。

    如果您只在分区 (device_id) 内进行搜索,那么您可以使用 ALLOW FILTERING 强制执行此查询,尽管通常不建议这样做,并且可能导致更高的读取延迟。在这种情况下,您可以将两列作为集群列放入主键中。然后进行性能测试,例如使用NoSQLBench

    【讨论】:

    • 感谢您的回答。然后我计划仅按第一个字段过滤,但有一些可能的范围,例如: first_measurement > (X-(x days)) 和 first_measurement
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    相关资源
    最近更新 更多