【发布时间】:2023-03-10 18:32:01
【问题描述】:
给定表:
CREATE TABLE T (
a int,
last_modification_time timestamp,
b int,
PRIMARY KEY (a)
);
我经常更新记录。每次更新时,last_modification_time 都会设置为 now(),并且还会设置其他字段。
能够通过last_modification_time 范围查询的正确 cassandra 方法是什么?我需要这样查询:
select * from .. where a=Z and last_modification_time < X and last_modification_time > Y;
一种方法是使用PRIMARY KEY (a, last_modification_time) 创建物化视图,但我想避免这种情况,因为 物化视图在 3.X cassandra 版本中有错误。
如果last_modification_time 经常更新,通过last_modification_time 范围查询的替代方法是什么?
【问题讨论】:
-
您的架构将导致宽行...如果您无法更改数据模型并且将始终使用分区键,请尝试二级索引...stackoverflow.com/questions/35719985/…
-
@undefined_variable 你能解释一下'宽行'是什么意思吗?
-
您最好的选择可能是使用 Postgres 来支持这样的查询模型。
-
在这种情况下 last_modification_time 更新大约 20 次然后记录变得稳定。鉴于此约束,您是否看到任何支持 last_modification_time 范围查询的数据模型?
-
@undefined_variable 二级索引不起作用 - 索引列上不允许范围查询
标签: cassandra cql cassandra-3.0