주요 컨텐츠로 이동

구체화된 뷰란 무엇인가요?

가상 뷰보다 빠른 응답 시간을 위해 예약 또는 온디맨드 방식으로 새로 고쳐지는 물리적 테이블로 미리 계산된 쿼리 결과를 저장하는 데이터베이스 개체

4 Personas Analytics AIBI 4
데이터 + AI 기반Less than a minute

작성자: Databricks 직원

Summary

  • 일반 뷰가 동적으로 데이터를 검색하는 것과 달리, 미리 계산된 결과를 물리적으로 저장하여 반복적인 고비용 계산을 제거함으로써 복잡한 집계 및 자주 액세스하는 계산의 쿼리 성능을 크게 향상시킵니다
  • 기본 소스 데이터 변경 사항과 동기화하려면 (수동 또는 자동) 주기적인 refresh 일정이 필요하며, 이로 인해 발생하는 스토리지 오버헤드와 refresh 계산 비용은 성능 향상과 균형을 이루어야 합니다
  • ETL 처리, AI/BI 대시보드, 시계열 분석 및 안정적인 데이터와 빈번한 읽기 작업이 있는 시나리오에 이상적이지만, 실시간 업데이트나 빠르게 변경되는 데이터세트에는 적합하지 않습니다

구체화된 뷰란 무엇인가요?

구체화 뷰는 쿼리 결과를 물리적 테이블로 저장하는 데이터베이스 객체입니다. 가상이며 기본 테이블에서 데이터를 파생하는 일반 데이터베이스 뷰와 달리, 구체화 뷰에는 예약 또는 온디맨드 방식으로 증분 업데이트되는 미리 계산된 데이터가 포함됩니다. 이러한 데이터의 사전 계산을 통해 특정 시나리오에서 쿼리 응답 시간을 단축하고 성능을 향상할 수 있습니다.

구체화된 뷰는 복잡한 쿼리나 집계가 자주 수행되고 기본 데이터가 드물게 변경되는 상황에서 특히 유용합니다. 미리 계산된 결과를 저장함으로써 데이터베이스는 복잡한 쿼리를 반복적으로 실행할 필요가 없어 응답 시간이 더 빨라집니다.

데이터 구체화는 구체화된 뷰와 같은 것인가요?

“데이터 구체화”와 “구체화된 뷰”라는 용어는 관련이 있지만, 서로 다른 개념을 나타냅니다. 그렇다면 이 맥락에서 '구체화됨'은 무슨 의미일까요?

데이터 구체화는 계산된 데이터를 하드 디스크와 같은 물리적 매체에 저장하는 개념입니다. 일반적으로 성능 개선이라는 하나의 핵심적인 목적으로 가상 또는 논리적 뷰에서 생성됩니다.

어떤 면에서 데이터 구체화는 캐싱과 유사합니다. 두 프로세스 모두 데이터를 더 효율적으로 검색할 수 있게끔 저장하는 과정을 포함합니다. 두 가지의 주된 차이점은 캐싱이 사용 지점과 가까운 곳에 데이터를 임시로 저장하는 데 사용되는 반면, 구체화된 데이터는 일반적으로 수명 주기가 더 길고 업데이트 일정이 더 명확하게 정의된다는 점입니다.

이러한 데이터 구체화의 정의를 바탕으로, 이제 이것이 구체화된 뷰의 개념과 어떻게 관련되는지 살펴보겠습니다.

구체화된 뷰는 관계형 데이터베이스에서 더 빠른 검색을 위해 쿼리 결과를 저장하는 데 사용되는 데이터 구체화의 한 유형입니다.

데이터 웨어하우스 환경에서 구체화를 사용하는 것은 주로 편의성을 위한 것입니다. 데이터가 저장될 때 저장 방법의 선택은 일반적으로 데이터가 처음에 어떻게 형식화되었는지에 따라 결정됩니다. 하지만 데이터를 읽으려 할 때 그 선택이 쉬운 검색에 도움이 되지 않을 수 있습니다.

예를 들어, 정기적으로 데이터의 하위 집합을 읽어야 하는 대규모 데이터 세트가 있다고 가정해 봅시다. 데이터의 작은 부분에만 액세스하고 싶었음에도 불구하고 매번 전체 데이터 세트에 대해 쿼리를 실행해야 하므로, 매번 새로 검색하는 것은 비교적 시간이 많이 걸릴 수 있습니다.

이러한 상황에서는 구체화 뷰를 만드는 것이 좋습니다. 읽어야 할 데이터로 미리 채워지도록 설정하고, 자동으로 또는 시스템이 기본 소스 데이터의 변경을 감지할 때 새로 고침 일정을 정의하게 됩니다.

데이터베이스 객체 비교: 구체화된 뷰와 뷰

이제 "뷰"를 정의하고 구체화된 뷰가 어떻게 다른지 설명하는 것이 좋습니다. 뷰와 구체화된 뷰는 모두 데이터를 특정 형식으로 또는 특정 쿼리의 결과로 제공하는 데이터베이스 객체입니다. 그러나 스토리지, 성능, 사용 사례 측면에서 크게 다릅니다(나중에 더 자세히 살펴보겠습니다). 

뷰를 구체화된 뷰와 비교할 때 중요한 고려 사항은 뷰가 SQL 쿼리의 결과 집합을 기반으로 하는 가상 테이블이라는 점입니다. 중요한 것은 데이터 자체를 저장하는 것이 아니라 뷰가 쿼리될 때마다 기본 테이블에서 데이터를 동적으로 검색한다는 점입니다.

이것은 구체화 뷰와는 근본적으로 다릅니다. '구체화'를 정의하는 데 있어 중요한 요소는 데이터 스토리지입니다. 특히 구체화 뷰는 쿼리의 데이터 결과를 물리적으로 저장하는 데이터베이스 개체입니다.

이는 즉, 일반 뷰와 달리 구체화된 뷰는 데이터를 동적으로 검색하지 않는다는 것을 의미합니다. 쿼리 결과 집합을 저장하고 기본 테이블의 변경 사항을 반영하기 위해 주기적으로 새로 고쳐지므로 쿼리 성능이 향상되고 처리 리소스를 더 효율적으로 사용할 수 있습니다.

스토리지가 뷰와 구체화 뷰의 주요 차이점으로 간주될 수 있지만, 아래 표는 이것이 두 데이터베이스 객체의 다양한 기능에 어떻게 영향을 미치는지 비교하여 보여줍니다.

기능보기구체화된 뷰
데이터 스토리지데이터를 저장하지 않음(가상 테이블)데이터(사전 계산된 결과)를 물리적으로 저장합니다
데이터 검색기본 테이블에서 동적으로 데이터 검색저장된 결과에서 데이터 검색
성능복잡한 쿼리의 경우 더 느림복잡한 쿼리의 경우 더 빠름
데이터 최신성항상 최신 상태오래된 정보일 수 있으므로 새로고침이 필요합니다.
저장 공간추가 저장 공간 필요 없음추가 저장 공간 필요
사용 사례복잡한 쿼리 단순화, 보안성능 향상, 스냅샷 데이터
5X 리더

Gartner®: Databricks 클라우드 데이터베이스 리더

데이터베이스에서 머티리얼라이즈드 뷰의 장점과 단점은 무엇인가요?

구체화된 뷰는 Databricks Platform을 비롯한 데이터베이스에서 여러 장점과 함께 몇 가지 제한 사항도 있습니다. 장점과 단점을 철저히 이해하면 사용자가 언제 어떻게 효과적으로 사용할지 결정하는 데 도움이 될 수 있습니다.

구체화된 뷰의 장점

  1. 향상된 쿼리 성능

    구체화된 뷰를 만드는 주된 이유 중 하나는 쿼리 성능을 개선하기 위함입니다. 이는 데이터 검색 속도를 높이고 기본 테이블의 부하를 줄이는 두 가지 필수적인 방법으로 달성됩니다.

    미리 계산된 결과를 저장하기 때문에 매번 데이터를 다시 계산하고 쿼리(또는 쿼리의 조인)를 해결할 필요가 없습니다. 결과적으로, 특히 복잡하고 리소스 집약적인 쿼리나 자주 액세스되는 쿼리의 경우 쿼리 실행 속도가 크게 향상됩니다.

    이러한 방식으로 데이터를 저장하면 기본 테이블에 대한 직접 쿼리 수도 줄어듭니다. 이렇게 하면 이러한 테이블의 부하가 최소화되고 전반적인 데이터베이스 성능이 향상됩니다.

  2. 리소스의 효율적인 사용

    특정 데이터 세트에 액세스해야 할 때마다 전체 쿼리를 실행하고 싶지는 않을 것입니다. 이는 특히 느리고 비효율적일 수 있습니다. 머티리얼라이즈드 뷰는 결과를 미리 계산하고 저장하여 리소스 사용을 최적화합니다. 이를 통해 반복적인 계산과 데이터 처리가 줄어 시간과 비용이 절약됩니다.

  3. 데이터의 스냅샷을 제공합니다

    구체화된 뷰는 특정 시점의 데이터 스냅샷을 제공합니다. 이는 보고 및 분석 목적뿐만 아니라 기록 데이터 분석을 위해 데이터세트의 변경 내역을 추적해야 하는 경우에 유용할 수 있습니다.

  4. 데이터 통합

    ETL 프로세스와 같이 다양한 소스의 데이터를 통합해야 하는 경우 구체화된 뷰는 훌륭한 옵션입니다. 구체화된 뷰를 사용해 여러 테이블 및 데이터베이스의 데이터를 집계하고 통합 할 수 있으며, 통합된 데이터에 쉽고 통일되고 효율적으로 액세스하는 방법을 제공합니다.

  5. 복잡한 계산 간소화에 도움

    복잡한 집계, 조인 및 계산은 모두 미리 계산하여 구체화 뷰에 저장할 수 있습니다. 이는 구체화 뷰가 높은 계산 비용을 줄이고 데이터를 더 빠르고 쉽게 쿼리하고 분석할 수 있도록 하는 또 다른 방법입니다.

구체화된 뷰의 한계

  1. 스토리지 오버헤드

    구체화된 뷰의 한 가지 단점은 의존하는 사전 계산된 데이터를 유지하기 위해 추가 스토리지 공간이 필요하다는 것입니다. 데이터 스토리지 솔루션, 뷰의 크기, 업데이트 빈도에 따라 이 추가 저장 공간 요구 사항은 무시할 수 없는 비용을 발생시킬 수 있습니다.

  2. 새로 고침 오버헤드

    구체화된 뷰는 정적 스냅샷을 제공하므로 기본 데이터의 변경 사항에 맞춰 최신 뷰를 보려면 증분 새로 고침을 수행해야 합니다. 주기적으로 이 작업을 수행하거나 구체화된 뷰가 새로 고쳐지는 빈도를 트리거하는 특정 이벤트를 할당할 수 있습니다. 어떤 방식을 선택하든, 데이터의 최신성을 보장하려면 refresh 주기를 정하는 전략을 채택하고 데이터 계산에 필요한 로직과 리소스를 할당해야 합니다.

  3. 성능 상충 관계

    안타깝게도 구체화 뷰를 새로 고치는 프로세스는 데이터베이스의 전반적인 성능에 영향을 줄 수 있습니다. refresh이 리소스를 많이 사용하거나 다른 데이터베이스 운영과 충돌을 일으키는 경우에 특히 두드러질 수 있습니다.

  4. 제한된 적용 가능성

    구체화된 뷰는 뷰에 자주 액세스하거나 데이터 웨어하우징과 같이 읽기 성능이 필수적인 경우에 매우 유용합니다. 하지만 모든 유형의 쿼리나 사용 사례에 적합한 것은 아닙니다. 예를 들어, 실시간 데이터 업데이트가 필요한 작업이나 기본 데이터의 변경 빈도가 높은 시스템은 구체화된 뷰에 가장 적합하지 않을 수 있습니다.

언제 구체화된 뷰를 사용해야 할까요?

그렇다면 뷰와 구체화된 뷰 데이터베이스 객체의 차이점과 뷰 사용의 장점을 이해했다면, 대신 구체화된 뷰를 만들어야 할 적절한 시기는 언제일까요? 다음은 구체화된 뷰를 사용하여 데이터 액세스 프로세스를 더 효율적으로 만드는 데 도움이 될 수 있는 몇 가지 상황입니다.

정기적인 배치 처리

정기적으로 배치 처리를 수행해야 하는 경우, 구체화 뷰는 쿼리의 일부를 미리 계산하고 저장하여 독립적으로 처리할 수 있도록 지원합니다. 예를 들어 주간 급여를 관리하는 경우, 구체화 뷰를 사용하여 다양한 직원의 급여, 세금, 수수료와 같은 급여 명세서 세부 정보를 저장할 수 있습니다. 그러면 구체화 뷰에 저장된 데이터는 매주 말에 새로 고쳐집니다.

필터링된 데이터 배포

구체화된 뷰는 원격 소스의 데이터를 복제하고 캐시하는 데 사용될 수 있으므로, 여러 위치에서 특정 데이터 세트를 사용 가능하게 만드는 문제를 해결하는 데 도움이 됩니다. 이는 데이터를 여러 다른 스토리지 사이트로 복사하고 배포하여 소스 데이터베이스의 전체 부하를 줄일 수 있으므로 읽기 전용 데이터베이스에 특히 유용합니다. 데이터에 액세스해야 하는 모든 사람은 자신에게 가장 가까운 사이트를 사용할 수 있으며, 이는 응답 시간도 단축시킵니다.

AI/BI 대시보드 최적화

AI/BI 대시보드 는 Databricks Data Intelligence Platform에서 데이터 시각화 및 보고를 향상시키는 효과적인 도구입니다. 단순화된 디자인은 시각화를 공유하고 배포하는 데 이상적이지만, 공개 대시보드의 모든 데이터가 최신성 요구 사항을 충족하는 것이 중요합니다.

구체화된 뷰를 사용하면 대시보드를 구동하는 쿼리 결과를 사전 계산하고 저장하여 주기적인 업데이트를 예약함으로써 최신 뷰를 보장하고 최종 사용자 응답 시간을 대폭 개선할 수 있습니다.

시계열 데이터 분석

구체화된 뷰의 핵심 장점 중 하나는 데이터의 스냅샷을 제공한다는 것입니다. 이를 통해 시간 경과에 따른 기본 데이터 세트의 변경 방식을 훨씬 더 간단하게 연구할 수 있으며, 보고 목적으로 유용하게 사용할 수 있는 기록 데이터 스냅샷을 제공합니다.

따라서 구체화된 뷰는 광범위한 비즈니스 인텔리전스 애플리케이션에 적합한 솔루션입니다. 스타 스키마 쿼리 를 수행하거나 가공되지 않은 데이터에서 집계를 계산해야 하는 경우, 구체화된 뷰는 월별 평균, 주별 합계, 일별 개수와 같이 사전 집계된 요약을 저장합니다. 시간 경과에 따른 이러한 수치를 시각화하는 것은 기록 분석 및 보고 목적에 유용합니다.

기본 데이터베이스와의 연결 끊김 예방

기본 데이터베이스와의 연결이 끊길 위험이 있다는 것을 알고 있다면 구체화된 뷰를 사용하여 가장 중요한 데이터를 계속 사용할 수 있도록 유지할 수 있습니다. 물론 이러한 상황에서는 새로 고침 일정이 견고한지 각별히 주의해야 합니다. 이 경우 구체화된 뷰를 로컬에 캐시할 수 있습니다.

언제 구체화된 뷰를 사용해야 할까요?

구체화된 뷰를 사용하는 것이 가장 적절한 옵션이 아닌 몇 가지 시나리오가 있다는 점을 명심하십시오. 우선, 데이터를 빠르고 쉽게 쿼리할 수 있다면 굳이 사용할 필요가 없습니다. 또한, 소스 데이터가 매우 빠르게 변경되는 경우 구체화된 뷰를 사용하는 것은 거의 의미가 없습니다. 대신, 지속적인 데이터 새로 고침으로 인한 처리 오버헤드 부담이 더 빠른 데이터 검색으로 얻을 수 있는 이점을 능가할 가능성이 높습니다.

Databricks SQL에서 구체화 뷰 만들기

Databricks SQL 의 구체화된 뷰는 Unity Catalog를 통해 관리됩니다. 소스 테이블의 최신 데이터를 기반으로 사전 계산된 결과를 저장합니다. 기존 구현과 달리 Databricks 구체화된 뷰는 쿼리될 때마다 업데이트하는 대신 마지막 새로 고침 시점의 데이터 상태를 유지합니다. 구체화된 뷰를 수동으로 새로 고치거나 예약된 자동 새로 고침을 설정할 수 있습니다.

Databricks SQL 구체화 뷰는 ETL(추출, 변환, 로드) 처리에 특히 유용합니다. 규정 준수, 수정, 집계 및 변경 데이터 캡처(CDC)를 처리하기 위한 간단하고 선언적인 접근 방식을 제공합니다. 구체화 뷰는 느린 쿼리와 자주 사용되는 계산을 미리 계산하여 쿼리 대기 시간을 크게 개선하고 비용을 절감합니다. 또한 기본 테이블을 정리, 보강 및 비정규화하여 원활한 변환을 지원합니다. 경우에 따라 구체화 뷰는 기본 테이블의 변경 사항을 증분 방식으로 계산하여 비용을 절감하고 사용자 환경을 간소화할 수 있습니다.

Databricks는 Spark Declarative Pipelines 출시와 함께 레이크하우스 아키텍처의 일부로 구체화된 뷰를 처음 도입했습니다. DB SQL 웨어하우스에서 구체화된 뷰를 만들면 뷰 새로 고침을 관리하는 LakeFlow Pipelines이 자동으로 생성됩니다. Lakeflow UI, API 또는 CLI를 사용하여 새로 고침 운영 상태를 쉽게 모니터링할 수 있습니다.

구체화된 뷰 생성 작동 방식

다음 예제는 기본 테이블 orders  고객 에서 구체화된 뷰 customer_orders 를 생성합니다:

구체화된 뷰 새로 고침 작동 방식

Databricks SQL에서는 미리 정의된 일정에 따라 구체화 뷰에 대한 자동 refresh를 설정할 수 있습니다. 이 일정은 SCHEDULE 절을 사용하여 구체화 뷰를 생성하는 동안 구성하거나 나중에 ALTER VIEW 문을 사용하여 추가할 수 있습니다. 일정이 설정되면 업데이트를 처리하기 위한 Databricks 작업이 자동으로 생성됩니다.

언제든지 일정 세부 정보를 검토하려면 DESCRIBE EXTENDED 문을 사용할 수 있으며, 이를 통해 구체화 뷰에 대해 구성된 일정을 확인할 수 있습니다. 이를 통해 Databricks SQL에서 구체화 뷰의 자동 새로 고침 일정을 쉽게 모니터링하고 관리할 수 있습니다.

구체화된 뷰에 대한 자세한 내용은 Databricks 제품 설명서 를 참조하거나 소개 블로그를 읽어보세요.

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요