考虑到这一点,请纠正我的理解,如果这些都不对。
环境:Apache Cassandra v3.0.0
假设你有一张桌子和一个物化视图:
create table source(
id text, field text, stamp timestamp, data text,
primary key(id, field))
create materialized view myview as
select * from source
where data is not null and id is not null and field is not null
primary key (data, field, id)
我的理解是myview.data
本质上是视图的分区键(source
中的数据会被服务器自动复制到myview
?)。
如果确实如此,那么在source
表格上执行表格更新并更新source.data
列时,内部会发生什么?
答案 0 :(得分:3)
我将此帖子发布到了Cassandra的用户邮件列表中,并得到了以下两个回答这个问题的有用回复。
它应该只是按预期工作,就好像通过魔法一样。这就是拥有MV的重点,因此Cassandra会为您完成所有的簿记。是的,分区键可以更改,因此对基表的更新可以导致删除一个(或多个)MV行,并创建一个(或多个)新的MV行。它本身不会更改分区键,但就好像它已被更改并且行被移动一样。 如果MV分区键中使用的列在基表行中发生更改,这实际上会导致行从一个节点移动到另一个节点。
- Jack Krupansky
如果更新了数据更改的源表,将为旧值生成逻辑删除,并为新值生成插入。这对于源分区是串行发生的,因此如果对同一分区有多个更新,则会为每个中间值生成一个逻辑删除。
此博客文章包含更多详细信息:http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views
-Carl Yeksigian