Apache Cassandra 3.0.0 物化视图:视图的分区键是否会因底层 table 的更改而更改?

Apache Cassandra 3.0.0 Materialized View: can the view's partition key change due to changes to the underlying table?

暂时想到这里,如有不妥之处请指正。

环境:Apache Cassandra v3.0.0

假设您有一个 table 并在其上创建了一个物化视图:

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 table 执行 table 更新并更新 source.data 列时,内部会发生什么情况?

我post将它发送到 Cassandra 的用户邮件列表,得到了以下两个有用的回复来回答这个问题。

一切都应该按预期工作,就像变魔术一样。这就是拥有 MV 的全部意义所在,因此 Cassandra 会为您完成所有簿记工作。是的,分区键可以更改,因此对基 table 的更新可能会导致删除一个(或多个)MV 行并创建一个(或多个)新 MV 行。它本身并没有改变分区键,但就好像它被改变了并且行被移动了一样。 如果 MV 分区键中使用的列在基础 table 行中更改,这实际上会导致行从一个节点移动到另一个节点。

-- 杰克克鲁潘斯基

如果更新源 table 数据发生更改,将为旧值生成墓碑,并为新值生成插入。这对于源分区是连续发生的,所以如果对同一个分区有多个更新,将为每个中间值生成一个逻辑删除。

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

-Carl Yeksigian