sql - 按 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 < ?
解决方案
即使它们都是主键的一部分,也不能在两个不同的列上存在不等式条件。Cassandra 要求,如果您在聚类列上进行不等式比较,则所有先前的聚类列都必须具有相等条件。
如果您只在分区 ( device_id
) 内进行搜索,那么您可以使用 强制执行此查询ALLOW FILTERING
,尽管通常不建议这样做,并且可能导致更高的读取延迟。在这种情况下,您可以将两列作为集群列放入主键中。然后进行性能测试,例如使用NoSQLBench。
推荐阅读
- git - 为什么 2 个哈希值与 1 个哈希值的 git diff 输出不同?
- node.js - 如何为 Azure 上的容器实例启用 HTTPS
- npm - NPM 错误:这可能不是 npm 的问题。上面可能有额外的日志输出
- python - 何使用 Python 数据框解析和获取 xml 的元素
- nlp - Nltk 不适用于 spyder 5 或版本 5
- docker - 无法验证第一个证书 - Traefik 通配符证书
- r - writexl 库中的 write_xlsx 不显示 R 中的行名
- javascript - RredisSearch 中的单字符搜索
- android - 使用 Android 上的 Flutter 应用程序链接到 C++ 运行时
- vba - 每天自动将今天的 Outlook 约会导出到 Excel