본문으로 건너뛰기
최종 수정: 에

구체화된 뷰 개요

구체화된 뷰는 계산 로직과 데이터를 모두 포함하는 객체입니다. 데이터 없이 계산 로직만 저장하는 일반 뷰와 달리, 구체화된 뷰는 정책에 따라 주기적으로 또는 실시간으로 데이터를 새로 고칩니다. 직접 쿼리할 수 있으며, 쿼리를 투명하게 재작성하는 데에도 사용할 수 있습니다.

읽기 전에​

구체화된 뷰를 선택하고 사용하기 전에 다음 질문을 확인하세요.

  • 어떤 문제를 해결하려고 하나요? 쿼리 가속, 데이터 모델링, 레이크하우스 가속 중 무엇이 필요한가요?
  • 데이터 최신성 요구 사항은 얼마나 엄격한가요? 강한 일관성이 필요한가요, 아니면 최종 일관성으로 충분한가요?
  • 뷰를 정의하는 SQL이 단일 테이블을 사용하나요, 아니면 여러 테이블을 사용하나요?
  • 전체 새로 고침, 파티션 증분 새로 고침, 실시간 새로 고침 중 어떤 방식이 필요한가요?

다음 절에서 이러한 질문을 차례로 살펴봅니다.

구체화된 뷰의 사용 사례​

구체화된 뷰는 SQL 정의에 따라 데이터를 계산하고 저장하며, 정책에 따라 주기적으로 또는 실시간으로 데이터를 업데이트합니다. 직접 쿼리할 수 있으며, 쿼리를 투명하게 재작성하는 데에도 사용할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다.

쿼리 가속​

의사 결정 지원 시스템(예: BI 보고서 및 임시 쿼리)의 분석 쿼리에는 일반적으로 집계 연산이 포함되며, 여러 테이블 간의 조인이 포함될 수도 있습니다.

  • 이러한 쿼리의 결과를 계산하는 데는 상당한 리소스가 소모되며, 응답 시간이 분 단위에 이를 수 있습니다.
  • 비즈니스 환경에서는 초 단위의 응답이 필요한 경우가 많습니다.
  • 자주 사용하는 쿼리를 가속하기 위해 구체화된 뷰를 생성할 수 있습니다.

경량 ETL(데이터 모델링)​

데이터를 계층화하는 환경에서는 중첩된 구체화된 뷰를 사용하여 DWD 및 DWM 계층을 구축하고, 구체화된 뷰의 예약 새로 고침 기능으로 일부 ETL 작업을 대체할 수 있습니다.

레이크하우스​

다양한 외부 데이터 소스의 테이블을 기반으로 구체화된 뷰를 생성하면 다음과 같은 이점을 얻을 수 있습니다.

  • 외부 테이블의 데이터를 내부 테이블로 가져오는 비용을 절감할 수 있습니다.
  • 외부 데이터 소스에 대한 쿼리를 가속할 수 있습니다.

구체화된 뷰의 분류​

구체화된 뷰는 데이터 최신성, SQL 패턴, 새로 고침 방식이라는 세 가지 기준으로 분류할 수 있습니다.

데이터 최신성에 따른 분류: 동기식과 비동기식​

분류데이터 일관성일반적인 최신성직접 쿼리 지원적용 시나리오
동기식 구체화된 뷰기본 테이블과 강한 일관성 유지실시간지원하지 않음높은 데이터 최신성이 필요한 시나리오
비동기식 구체화된 뷰기본 테이블과 최종 일관성 유지T+1 / 시간 단위지원데이터 최신성 요구가 비교적 낮은 일반적인 분석 시나리오

선택 기준:

  • 데이터 최신성 요구 사항이 높은 경우: 동기식 구체화된 뷰를 선택합니다.
  • 데이터 최신성 요구 사항이 높지 않고 어느 정도 지연을 허용할 수 있는 경우: 비동기식 구체화된 뷰를 선택합니다.

투명한 재작성을 위해 지원하는 SQL 패턴에 따른 분류: 단일 테이블과 다중 테이블​

구체화된 뷰를 정의하는 SQL은 단일 테이블 쿼리일 수도 있고 다중 테이블 쿼리일 수도 있습니다. 사용하는 테이블 수에 따라 구체화된 뷰를 단일 테이블 구체화된 뷰와 다중 테이블 구체화된 뷰로 나눌 수 있습니다.

  • 비동기식 구체화된 뷰: 단일 테이블과 다중 테이블을 모두 지원합니다.
  • 동기식 구체화된 뷰: 단일 테이블만 지원합니다.

새로 고침 방식에 따른 분류: 전체, 파티션 증분, 실시간​

구체화된 뷰의 유형에 따라 지원하는 새로 고침 방식이 다릅니다.

구체화된 뷰 유형전체 새로 고침파티션 증분 새로 고침실시간 새로 고침
비동기식 구체화된 뷰지원지원지원하지 않음
동기식 구체화된 뷰--지원

각 새로 고침 방식의 의미는 다음과 같습니다.

  • 전체 새로 고침(비동기식): 구체화된 뷰를 정의하는 SQL의 전체 데이터를 계산합니다.
  • 파티션 증분 새로 고침(비동기식): 구체화된 뷰의 기본 테이블 파티션에서 데이터가 변경되면, 이에 해당하는 변경된 파티션을 식별하여 해당 파티션만 새로 고칩니다. 구체화된 뷰 전체를 새로 고치지는 않습니다.
  • 실시간 새로 고침(동기식): 데이터를 실시간으로 새로 고쳐 기본 테이블과 항상 일관되게 유지하는 방식으로 이해할 수 있습니다.