Materialized Views

Materialized Views (구체화된 뷰)

쿼리 결과를 미리 계산해 저장해 두는 구체화된 뷰(Materialized View)를 다루는 문서예요. 뷰가 참조하는 원본 테이블에 대한 쿼리가 들어오면 Hive가 자동으로 해당 쿼리를 구체화된 뷰를 사용하도록 다시 작성(rewrite)해서 응답 속도를 높일 수 있습니다.

출처: 문서

본문

구체화된 뷰는 쿼리 결과를 실제로 저장해 두는 뷰입니다. 일반 뷰와 달리 데이터가 미리 계산되어 저장되므로, 반복되는 집계 쿼리를 빠르게 처리할 수 있습니다.

구체화된 뷰 만들기:

CREATE MATERIALIZED VIEW mv1 AS
SELECT key, count(*) AS cnt FROM src GROUP BY key;

구체화된 뷰 이름 지정:

CREATE MATERIALIZED VIEW mv1
  DISABLE REWRITE
  AS SELECT ...;

특징:

  • 쿼리 재작성(Query Rewrite): 원본 테이블을 대상으로 한 쿼리가 들어오면, Hive 옵티마이저가 이를 구체화된 뷰를 사용하는 쿼리로 자동 재작성합니다.
  • 데이터 갱신(Refresh): 원본 테이블이 변경되면 구체화된 뷰의 데이터를 갱신해야 합니다. REBUILD 문으로 수동 갱신하거나 설정에 따라 자동으로 반영할 수 있습니다.
ALTER MATERIALIZED VIEW mv1 REBUILD;
  • 제약 조건: 뷰를 만들 때 필요한 기본 키(primary key)/외래 키(foreign key) 제약을 함께 정의하면 재작성과 데이터 정합성 관리에 도움이 됩니다.
ALTER TABLE t1 ADD CONSTRAINT pk PRIMARY KEY (id) DISABLE NOVALIDATE;

관련 설정:

설정 설명
hive.materializedview.rewriting 구체화된 뷰 자동 재작성 활성화 여부
hive.materializedview.rewriting.time.window 재작성에 사용 가능한 뷰의 최대 유효 시간(분)

참고 사항:

  • 구체화된 뷰의 데이터는 원본과 자동 동기화되지 않으므로, 정확한 최신 데이터가 필요하면 REBUILD 로 갱신해야 합니다.
  • 재작성 성능을 높이려면 뷰가 결과 집합을 작게 만들 수 있도록 적절한 집계·필터를 설계하는 것이 좋습니다.

더 알아보기 (Learn more)