Apache Cassandra 3.0.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列时,内部会发生什么

我把它发布到了Cassandra的用户邮件列表中,并得到了以下两个有用的回复,回答了这个问题。

这一切都应该像预期的那样发挥作用,就像变魔术一样。这就是拥有MV的全部意义,让卡桑德拉为你做所有的记账工作。是的,分区键可以更改,因此对基表的更新可以导致删除一个(或多个)MV行并创建一个(或者多个)新MV行。它本身不会更改分区键,但就好像它被更改了,行也被移动了一样如果MV分区键中使用的列在基表行中发生更改,这实际上可能导致行从一个节点移动到另一个节点

--Jack Krupansky

在更新数据发生更改的源表的情况下,将为旧值生成逻辑删除,并为新值生成插入。对于源分区,这种情况是串行发生的,因此,如果对同一分区有多个更新,则会为每个中间值生成一个tombstone。

此博客文章包含更多详细信息:http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views

-Carl Yeksigian

相关内容

最新更新