Cassandra - 是否可以更新也用于物化视图 APK 的 table 列?
Cassandra - Is it OK to update a table's column which is aslo used for materialized view's PK?
不知道能不能改一个table的值,也用在物化视图的PK中?
如果没问题,如果有人能解释一下它是如何工作的(插入和删除?),我将不胜感激
例如,具有以下 tables:
CREATE TABLE users (
id uuid,
username text,
category int,
created timestamp,
PRIMARY KEY (username) //Show users ASC
)
CREATE MATERIALIZED VIEW category_username AS
SELECT username, category
FROM keyspace.users
WHERE username IS NOT NULL AND category IS NOT NULL
PRIMARY KEY (category, username); //Show users by category ASC
然后我将用户的类别更改为不同于他现在的类别:
UPDATE keyspace.users
SET category = 'SomeUniqueInt'
WHERE username = 'IAmGroot' IF EXISTS;
category_username 会相应更新吗?
这是对这个question的评价。
类似于普通table Cassandra 将删除之前的记录并从物化视图中插入带有用户名的更新类别。
在 Cassandra 中删除创建墓碑
- 墓碑占用 space 并且可以显着增加您需要的存储量。
- 查询具有大量墓碑的 tables 会导致性能问题,并导致延迟和堆压力。
所以如果你经常更新用户类别,那么会产生巨大的墓碑。
不知道能不能改一个table的值,也用在物化视图的PK中? 如果没问题,如果有人能解释一下它是如何工作的(插入和删除?),我将不胜感激
例如,具有以下 tables:
CREATE TABLE users (
id uuid,
username text,
category int,
created timestamp,
PRIMARY KEY (username) //Show users ASC
)
CREATE MATERIALIZED VIEW category_username AS
SELECT username, category
FROM keyspace.users
WHERE username IS NOT NULL AND category IS NOT NULL
PRIMARY KEY (category, username); //Show users by category ASC
然后我将用户的类别更改为不同于他现在的类别:
UPDATE keyspace.users
SET category = 'SomeUniqueInt'
WHERE username = 'IAmGroot' IF EXISTS;
category_username 会相应更新吗?
这是对这个question的评价。
类似于普通table Cassandra 将删除之前的记录并从物化视图中插入带有用户名的更新类别。
在 Cassandra 中删除创建墓碑
- 墓碑占用 space 并且可以显着增加您需要的存储量。
- 查询具有大量墓碑的 tables 会导致性能问题,并导致延迟和堆压力。
所以如果你经常更新用户类别,那么会产生巨大的墓碑。