구체화된 뷰 개요
구체화된 뷰는 계산 로직과 데이터를 모두 포함하는 객체입니다. 데이터 없이 계산 로직만 저장하는 일반 뷰와 달리, 구체화된 뷰는 정책에 따라 주기적으로 또는 실시간으로 데이터를 새로 고칩니다. 직접 쿼리할 수 있으며, 쿼리를 투명하게 재작성하는 데에도 사용할 수 있습니다.
읽기 전에
구체화된 뷰를 선택하고 사용하기 전에 다음 질문을 확인하세요.
- 어떤 문제를 해결하려고 하나요? 쿼리 가속, 데이터 모델링, 레이크하우스 가속 중 무엇이 필요한가요?
- 데이터 최신성 요구 사항은 얼마나 엄격한가요? 강한 일관성이 필요한가요, 아니면 최종 일관성으로 충분한가요?
- 뷰를 정의하는 SQL이 단일 테이블을 사용하나요, 아니면 여러 테이블을 사용하나요?
- 전체 새로 고침, 파티션 증분 새로 고침, 실시간 새로 고침 중 어떤 방식이 필요한가요?
다음 절에서 이러한 질문을 차례로 살펴봅니다.
구체화된 뷰의 사용 사례
구체화된 뷰는 SQL 정의에 따라 데이터를 계산하고 저장하며, 정책에 따라 주기적으로 또는 실시간으로 데이터를 업데이트합니다. 직접 쿼리할 수 있으며, 쿼리를 투명하게 재작성하는 데에도 사용할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다.
쿼리 가속
의사 결정 지원 시스템(예: BI 보고서 및 임시 쿼리)의 분석 쿼리에는 일반적으로 집계 연산이 포함되며, 여러 테이블 간의 조인이 포함될 수도 있습니다.
- 이러한 쿼리의 결과를 계산하는 데는 상당한 리소스가 소모되며, 응답 시간이 분 단위에 이를 수 있습니다.
- 비즈니스 환경에서는 초 단위의 응답이 필요한 경우가 많습니다.
- 자주 사용하는 쿼리를 가속하기 위해 구체화된 뷰를 생성할 수 있습니다.
경량 ETL(데이터 모델링)
데이터를 계층화하는 환경에서는 중첩된 구체화된 뷰를 사용하여 DWD 및 DWM 계층을 구축하고, 구체화된 뷰의 예약 새로 고침 기능으로 일부 ETL 작업을 대체할 수 있습니다.
레이크하우스
다양한 외부 데이터 소스의 테이블을 기반으로 구체화된 뷰를 생성하면 다음과 같은 이점을 얻을 수 있습니다.
- 외부 테이블의 데이터를 내부 테이블로 가져오는 비용을 절감할 수 있습니다.
- 외부 데이터 소스에 대한 쿼리를 가속할 수 있습니다.
구체화된 뷰의 분류
구체화된 뷰는 데이터 최신성, SQL 패턴, 새로 고침 방식이라는 세 가지 기준으로 분류할 수 있습니다.
데이터 최신성에 따른 분류: 동기식과 비동기식
| 분류 | 데이터 일관성 | 일반적인 최신성 | 직접 쿼리 지원 | 적용 시나리오 |
|---|---|---|---|---|
| 동기식 구체화된 뷰 | 기본 테이블과 강한 일관성 유지 | 실시간 | 지원하지 않음 | 높은 데이터 최신성이 필요한 시나리오 |
| 비동기식 구체화된 뷰 | 기본 테이블과 최종 일관성 유지 | T+1 / 시간 단위 | 지원 | 데이터 최신성 요구가 비교적 낮은 일반적인 분석 시나리오 |
선택 기준:
- 데이터 최신성 요구 사항이 높은 경우: 동기식 구체화된 뷰를 선택합니다.
- 데이터 최신성 요구 사항이 높지 않고 어느 정도 지연을 허용할 수 있는 경우: 비동기식 구체화된 뷰를 선택합니다.
투명한 재작성을 위해 지원하는 SQL 패턴에 따른 분류: 단일 테이블과 다중 테이블
구체화된 뷰를 정의하는 SQL은 단일 테이블 쿼리일 수도 있고 다중 테이블 쿼리일 수도 있습니다. 사용하는 테이블 수에 따라 구체화된 뷰를 단일 테이블 구체화된 뷰와 다중 테이블 구체화된 뷰로 나눌 수 있습니다.
- 비동기식 구체화된 뷰: 단일 테이블과 다중 테이블을 모두 지원합니다.
- 동기식 구체화된 뷰: 단일 테이블만 지원합니다.
새로 고침 방식에 따른 분류: 전체, 파티션 증분, 실시간
구체화된 뷰의 유형에 따라 지원하는 새로 고침 방식이 다릅니다.
| 구체화된 뷰 유형 | 전체 새로 고침 | 파티션 증분 새로 고침 | 실시간 새로 고침 |
|---|---|---|---|
| 비동기식 구체화된 뷰 | 지원 | 지원 | 지원하지 않음 |
| 동기식 구체화된 뷰 | - | - | 지원 |
각 새로 고침 방식의 의미는 다음과 같습니다.
- 전체 새로 고침(비동기식): 구체화된 뷰를 정의하는 SQL의 전체 데이터를 계산합니다.
- 파티션 증분 새로 고침(비동기식): 구체화된 뷰의 기본 테이블 파티션에서 데이터가 변경되면, 이에 해당하는 변경된 파티션을 식별하여 해당 파티션만 새로 고칩니다. 구체화된 뷰 전체를 새로 고치지는 않습니다.
- 실시간 새로 고침(동기식): 데이터를 실시간으로 새로 고쳐 기본 테이블과 항상 일관되게 유지하는 방식으로 이해할 수 있습니다.