我在 Cassandra 中有一些数据。说
create table MyTable {
id text PRIMARY KEY,
data text,
updated_on timestamp
}
我的应用程序除了通过主键 id 查询此数据外,还需要通过 updated_on 时间戳查询它。为了按时间用例完成查询,我尝试了以下操作。
create table MyTable {
id text PRIMARY KEY,
data text,
updated_on timestamp,
updated_on_minute timestamp
}
那么我的选择是什么?我是否只需要维护自己的表来跟踪及时出现的数据?会喜欢这方面的一些意见。
提前致谢。
最佳答案
与往常一样,创建附加表以通过不同的分区键进行查询。
在你的情况下,表将是
create table MyTable_by_timestamp {
id text,
data text,
updated_on timestamp,
Primary key(updated_on, id)
}
写入两个表 mytable_by_timetamp 和 mytable_by_id。根据分区键updated_on 或id 使用相应的表进行读取。
根据它尝试解决的用例(查询)复制数据绝对没问题。
编辑:
如果担心分区太大,您可以随时将其存储到较小的分区中。例如,上表可以分解为
create table MyTable_by_timestamp {
id text,
data text,
updated_on timestamp,
updated_min timestamp,
Primary key(updated_min, id)
}
这里我选择了每一分钟作为桶的大小。根据您收到的更新数量,您可以将其更改为秒 (updated_sec) 以进一步减小分区大小。
关于cassandra - 如果不是物化 View 而不是二级索引,那么在 cassandra 中查询数据的推荐方法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48876392/