ApacheCassandra 3.0.0物化视图:可以查看';由于基础表的更改而导致的分区键更改?

ApacheCassandra 3.0.0物化视图:可以查看';由于基础表的更改而导致的分区键更改?,cassandra,materialized-views,cqlsh,cassandra-3.0,Cassandra,Materialized Views,Cqlsh,Cassandra 3.0,想想看,如果有任何不正确的地方,请纠正我的理解 环境:ApacheCassandraV3.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

想想看,如果有任何不正确的地方,请纠正我的理解

环境:ApacheCassandraV3.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
?)


如果这是真的,那么在
表上执行表更新并且更新
源.data
列时,内部会发生什么情况?

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

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

--杰克·克鲁潘斯基

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

此博客文章提供了更多详细信息:

-卡尔·耶克西根