如果不是物化视图,也不是二级索引,那么在cassandra中查询数据的推荐方法是什么
我有一些卡桑德拉的数据。说如果不是物化视图,也不是二级索引,那么在cassandra中查询数据的推荐方法是什么,cassandra,cassandra-3.0,Cassandra,Cassandra 3.0,我有一些卡桑德拉的数据。说 create table MyTable { id text PRIMARY KEY, data text, updated_on timestamp } 我的应用程序除了按主键id查询此数据外,还需要按时间戳上的更新_进行查询。为了实现“按时间查询”用例,我尝试了以下方法 create table MyTable { id text PRIMARY KEY, data text, updated_on timesta
create table MyTable {
id text PRIMARY KEY,
data text,
updated_on timestamp
}
我的应用程序除了按主键id查询此数据外,还需要按时间戳上的更新_进行查询。为了实现“按时间查询”用例,我尝试了以下方法
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)
}
在这里,我选择了每分钟作为桶的大小。根据收到的更新数量,可以将其更改为秒(更新秒),以进一步减小分区大小 如果复制数据,那么分区就会变大。因此,我可能会创建一个只包含维度而不包含日期的表。你看不出这有什么问题,是吗?如果你只存储维度,那么你不能按日期正确查询?我以为这是你最初的问题。您可以随时使用bucket大小或引入人工bucket来减少分区大小。很酷,我只需要确认在应用程序级别维护单独的表仍然是推荐的方法。看起来是的。