Apache Cassandra 3.0.0物化视图:由于对基础表的更改,视图的分区键是否会发生变化?

时间:2015-11-26 17:09:01

标签: cassandra materialized-views cqlsh cassandra-3.0

考虑到这一点,请纠正我的理解,如果这些都不对。

环境: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列时,内部会发生什么?

1 个答案:

答案 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