-
Clickhouse Materialized views개발/기술 2025. 11. 7. 22:41
테이블에 데이터가 추가될 때마다 특정한 쿼리를 실행하고 결과를 target 테이블에 전송하는 테이블이다. 데이터가 추가될수록 결과가 타겟 테이블에 전송되고 중간 result 는 업데이트되고 병합된다. 병합된 결과는 기존 데이터에 대한 쿼리와 동등하다.
target 테이블에 미리 계산된 결과를 전달하고 싶을때 사용하는 테이블이라고 보면됨.
아래 up_down_votes_per_day_mv 테이블은 up_down_votes_per_day 테이블에 일별 데이터를 모아서 전송해주는 역할을 하는 materialized 테이블이다
CREATE MATERIALIZED VIEW up_down_votes_per_day_mv TO up_down_votes_per_day AS SELECT toStartOfDay(CreationDate)::Date AS Day, countIf(VoteTypeId = 2) AS UpVotes, countIf(VoteTypeId = 3) AS DownVotes FROM votes GROUP BY Day리얼타입에 데이터를 유입시킬 수 있으며 점진적으로 업데이트되는 인덱스와 비슷한 역할을 한다고 볼 수 있다. 다른 디비의 경우 materialized view 가 특정 상태의 snapshot 을 저장하고 새로고침을 해줘야 하는 것에 비해서 요건 클릭하우스 고유한 특징이라고 볼 수 있다.
별도의 애플리케이션 돌릴 필요 없이 테이블을 이용해서 데이터 전처리를 해줄 수 있는 테이블이라고 볼 수 있다. 여기에 Aggregate Engine 같은걸 이용하면 효율을 더 높일수도 있다.

'개발 > 기술' 카테고리의 다른 글
Clickhouse Projections (0) 2025.11.07 Clickhouse Skip Index (0) 2025.11.07 Clickhouse JSON 칼럼 (0) 2025.10.27 클릭하우스 업데이트 빠르게 만들기 (0) 2025.10.03 클릭하우스 업데이트는 왜 느릴까? (0) 2025.09.13