2017-09-16 1 views
0

구체화 된 뷰의 PK에도 사용되는 테이블의 값을 변경하는 것이 좋을지 궁금합니다. 의 확인을하면 사람이 어떻게 작동하는지에 대해 설명 할 수 있다면, 나는 감사합니다 예를 들어Cassandra - 구체화 된 뷰의 PK와 함께 사용되는 테이블의 컬럼을 업데이트해도 괜찮습니까?

, 다음 표를 갖는 (삽입 및 삭제 하시겠습니까?) :

그런 다음
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입니다.

답변

1

일반 테이블과 유사하게 Cassandra는 이전 레코드를 삭제하고 구체화 된보기에서 username이있는 업데이트 된 카테고리를 삽입합니다.

카산드라에서 묘비를

  1. 삭제 표시 차지 공간을 삭제하고 실질적으로 필요한 스토리지의 양을 증가시킬 수있다.
  2. 삭제 표시 수가 많은 테이블을 쿼리하면 성능 문제가 발생하고 지연 및 힙 (heap) 압력이 발생합니다.

사용자 범주를 자주 업데이트하면 거대한 삭제 표시가 생성됩니다.

관련 문제