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

구체화된 뷰는 더 빠른 데이터 검색을 위해 여러 기존 테이블의 데이터를 결합하여 생성되는 중복 데이터 테이블입니다. 예를 들어 고객과 제품 데이터를 위한 두 개의 기본 테이블이 있는 소매 애플리케이션을 생각해 봅니다. 고객 테이블에는 고객 이름 및 연락처 세부 정보와 같은 정보가 포함되고 제품 테이블에는 제품 세부 정보 및 비용에 대한 정보가 포함됩니다. 고객 테이블에는 개별 고객이 구매하는 품목의 제품 ID만 저장됩니다. 특정 고객이 구매한 품목의 제품 세부 정보를 얻으려면 두 테이블을 상호 참조해야 합니다. 이렇게 만드는 대신에 고객 이름 및 관련 제품 세부 정보를 단일 임시 테이블에 저장하는 구체화된 뷰를 생성할 수 있습니다. 구체화된 뷰에 인덱스 구조를 구축하여 데이터 읽기 성능을 향상시킬 수 있습니다.

구체화된 뷰의 이점은 무엇인가요?

구체화된 뷰는 관련 데이터에 빠르고 효율적으로 액세스할 수 있는 방법입니다. 데이터 집약적인 애플리케이션의 쿼리 최적화를 지원합니다. 다음으로 몇 가지 주요 이점을 살펴보겠습니다.

속도

읽기 쿼리는 다양한 테이블과 데이터 행을 스캔하여 필요한 정보를 수집합니다. 구체화된 뷰를 사용하면 매번 새 정보를 계산할 필요 없이 새 뷰에서 직접 데이터를 쿼리할 수 있습니다. 쿼리가 복잡할수록 구체화된 뷰를 사용하면 더 많은 시간을 절약할 수 있습니다.

데이터 스토리지 단순성

구체화된 뷰를 사용하면 복잡한 쿼리 로직을 단일 테이블에 통합할 수 있습니다. 이를 통해 개발자는 데이터 변환 및 코드 유지관리가 더 쉬워집니다. 또한 복잡한 쿼리를 더 쉽게 관리할 수 있습니다. 데이터 서브셋을 사용하여 뷰에서 복제해야 하는 데이터의 양을 줄일 수도 있습니다.

일관성

구체화된 뷰는 특정 순간에 캡처된 데이터를 일관되게 보여줍니다. 구체화된 뷰에서 읽기 일관성을 구성하고 동시성 제어가 필수적인 다중 사용자 환경에서도 데이터에 액세스할 수 있도록 할 수 있습니다.

또한 구체화된 뷰는 소스 데이터가 변경되거나 삭제되는 경우에도 데이터 액세스를 제공합니다. 시간이 지남에 따라 구체화된 뷰를 사용하여 시간 기반 데이터 스냅샷에 대해 보고할 수 있습니다. 원본 테이블과의 격리 수준을 통해 데이터 전반에서 일관성을 높일 수 있습니다. 

향상된 액세스 제어

구체화된 뷰를 사용하여 특정 데이터에 액세스할 수 있는 사용자를 제어할 수 있습니다. 원본 테이블에 대한 액세스 권한을 부여하지 않고도 사용자에 대한 정보를 필터링할 수 있습니다. 이 접근 방식은 누가 어떤 데이터에 액세스할 수 있고 얼마나 많은 데이터를 보고 상호 작용할 수 있는지를 제어하려는 경우에 유용합니다.

구체화된 뷰의 사용 사례로는 무엇이 있나요?

다양한 시나리오에서 구체화된 뷰를 활용할 수 있습니다. 

필터링된 데이터 배포

원격 근무자와 같이 최근 데이터를 여러 위치에 배포해야 하는 경우 구체화된 뷰가 도움이 됩니다. 구체화된 뷰를 사용하여 여러 사이트에 데이터를 복제하고 배포합니다. 데이터에 액세스해야 하는 사람들은 지리적으로 가장 가까운 복제 데이터 저장소와 상호 작용합니다.

이 시스템은 동시성을 허용하고 네트워크 부하를 줄입니다. 읽기 전용 데이터베이스를 사용하는 효과적인 접근 방식입니다.

시계열 데이터 분석

구체화된 뷰는 타임스탬프가 지정된 데이터 세트 스냅샷을 제공하기 때문에 시간 경과에 따른 정보 변화를 모델링할 수 있습니다. 월별 또는 주별 요약과 같이 미리 계산된 데이터 집계를 저장할 수 있습니다. 이러한 용도는 비즈니스 인텔리전스 및 보고 플랫폼에 유용합니다. 

원격 데이터 상호 작용

분산 데이터베이스 시스템에서는 구체화된 뷰를 사용하여 원격 서버의 데이터와 관련된 쿼리를 최적화할 수 있습니다. 원격 소스에서 반복적으로 데이터를 가져오는 대신 로컬 구체화된 뷰에서 데이터를 가져와 저장할 수 있습니다. 따라서 네트워크 통신의 필요성이 줄어들고 성능이 향상됩니다.

예를 들어 외부 데이터베이스나 API를 통해 데이터를 받는 경우 구체화된 뷰가 데이터를 통합하여 처리하는 데 도움이 됩니다. 

주기적 배치 처리

구체화된 뷰는 주기적인 배치 처리가 필요한 상황에 유용합니다. 예를 들어, 금융 기관은 구체화된 뷰를 사용하여 당일 잔액과 이자 계산을 저장할 수 있습니다. 또는 포트폴리오 성과 요약을 저장하여 각 영업일이 끝날 때 새로 고칠 수도 있습니다.

구체화된 뷰는 어떻게 작동하나요?

구체화된 뷰는 특정 쿼리의 결과를 미리 계산하고 데이터베이스의 물리적 테이블로 저장하는 방식으로 작동합니다. 데이터베이스는 정기적으로 사전 계산을 수행하거나 사용자가 특정 이벤트를 통해 사전 계산을 트리거할 수 있습니다. 관리자는 구체화된 뷰의 성능 및 리소스 사용률을 모니터링하여 해당 뷰가 의도한 목적을 계속 충족하는지 확인합니다.

다음은 구체화된 뷰의 작동 방식에 대한 일반적인 개요입니다.

구체화된 뷰 생성

구체화된 뷰를 생성하기 위해 하나 이상의 소스 테이블에서 원하는 데이터를 검색하는 쿼리를 정의합니다. 이 쿼리에는 필요에 따라 필터링, 집계, 조인 및 기타 작업이 포함될 수 있습니다.

데이터베이스는 처음에 소스 데이터에 대해 정의된 질의를 실행하여 구체화된 뷰를 채웁니다. 쿼리 결과는 데이터베이스의 물리적 테이블로 저장되며 이 테이블은 구체화된 뷰를 나타냅니다.

구체화된 뷰 업데이트

구체화된 뷰의 데이터는 소스 테이블에 있는 기본 데이터의 변경 사항을 반영하도록 주기적으로 업데이트해야 합니다. 데이터 새로 고침 빈도는 사용 사례 및 요구 사항에 따라 다릅니다.

다음으로 데이터 새로 고침에 대한 몇 가지 일반적인 접근 방식을 설명합니다.

전체 새로 고침

구체화된 뷰는 완전히 다시 계산되고 최신 쿼리 결과로 덮어쓰여집니다. 가장 간단한 방법이지만 특히 대규모 구체화된 뷰의 경우 리소스 집약적일 수 있습니다.

증분 새로 고침

기본 데이터의 변경 사항만 구체화된 뷰에 적용됩니다. 대규모 데이터 세트와 잦은 업데이트를 처리할 때는 전체 새로 고침보다 더 효율적일 수 있습니다.

온디맨드 새로 고침

일부 시스템에서는 특정 이벤트나 사용자 요청에 의해 트리거된 요청 시 구체화된 뷰를 새로 고칠 수 있습니다. 이렇게 하면 데이터가 업데이트되는 시기를 더 잘 제어할 수 있지만 구체화된 뷰를 최신 상태로 유지하려면 세심한 관리가 필요합니다.

다양한 시스템의 기술적 변화

각 데이터베이스 관리 시스템에는 구체화된 뷰를 생성하는 고유한 방법이 있습니다.

데이터베이스 관리 시스템

구체화된 뷰의 작동 방식

PostgreSQL

PostgreSQL을 사용하면 구체화된 뷰를 수동으로 새로 고쳐 전체 뷰를 다시 계산해야 합니다. 구체화된 뷰를 생성하는 바로 그 순간에 데이터를 채웁니다.

MySQL

MySQL은 구체화된 뷰를 지원하지 않습니다.

Oracle

Oracle은 구체화된 뷰를 자동으로 새로 고치지만, 요청 시 새로 고칠 수 있는 옵션도 있습니다. 결과를 제공하기 전에 뷰를 새로 고치도록 요청하는 SQL 문을 작성할 수도 있습니다.

SQL Server

구체화는 일반 뷰 인덱스를 생성하는 단계이므로 SQL Server는 ‘인덱싱된 뷰’라는 이름을 사용합니다. 인덱싱된 뷰를 사용하여 기본 SQL 쿼리만 수행할 수 있습니다. 사용자를 위해 자동으로 업데이트됩니다.

MongoDB

MongoDB는 NoSQL 환경을 위해 집계 함수를 사용하여 구체화된 뷰와 유사한 기능을 제공합니다. 

뷰와 구체화된 뷰의 차이점은 무엇인가요?

관계형 데이터베이스에서 는 여러 기본 테이블의 데이터를 변환하고 결합하여 만든 임시 테이블입니다. 데이터 자체를 저장하지 않는 가상 테이블입니다. 대신 하나 이상의 소스 테이블에 대한 쿼리로 정의됩니다.

사용자가 뷰를 쿼리할 때마다 데이터베이스 엔진은 원본 테이블에 대해 기본 쿼리를 실행하여 결과를 동적으로 계산합니다. 뷰의 데이터는 액세스할 때마다 원본 테이블에서 직접 전달되므로 항상 최신 상태입니다.

반면, 구체화된 뷰는 특정 쿼리의 결과를 데이터베이스의 물리적 테이블로 저장합니다. 구체화된 뷰의 데이터는 미리 계산되어 저장되므로 뷰에 액세스할 때마다 쿼리를 다시 계산할 필요 없이 이미 나온 결과를 사용할 수 있습니다.

그러나 구체화된 뷰의 데이터가 항상 최신 상태인 것은 아닙니다. 데이터 최신성과 쿼리 성능 간의 균형을 맞추려면 업데이트 빈도를 구성해야 합니다.

구체화된 뷰의 과제는 무엇인가요?

구체화된 뷰는 고려해야 할 또 다른 데이터베이스 구성 요소이므로 유지관리 측면에서 복잡성이 가중됩니다. 쿼리 및 효율성 이점과 잠재적인 스토리지 비용 및 데이터 일관성 문제의 균형을 맞춰야 합니다.

구체화된 뷰가 계속 유용하도록 하려면 업데이트를 트리거하는 효과적인 규칙을 생성해야 합니다. 구체화된 뷰를 자주 업데이트하면 시스템 성능에 영향을 미칠 수 있습니다. 특히 이미 피크 기간에 있는 경우에는 더욱 그렇습니다. 또한 구체화된 뷰는 데이터를 복제할 때 상당한 스페이스를 차지합니다. 지속적으로 업데이트되는 대규모 데이터베이스가 있는 경우 구체화된 뷰의 스토리지 요구가 상당할 수 있습니다. 

구체화된 뷰를 사용하려는 경우 명확한 새로 고침 규칙과 일정을 설정해야 합니다. 또한 데이터 불일치, 새로 고침 실패 및 추가된 스토리지 부담에 대처하는 방법을 이해해야 합니다.

AWS는 구체화된 뷰 요구 사항을 어떻게 지원하나요?

구체화된 뷰는 Amazon Redshift에서 쿼리 성능을 개선할 수 있는 강력한 도구입니다.

Amazon Redshift는 기계 학습을 통해 워크로드를 지속적으로 모니터링하며, 새로운 구체화된 뷰가 도움이 되면 이를 생성합니다. Redshift의 이 자동화된 구체화된 뷰(AutoMV) 기능은 사용자가 생성한 구체화된 뷰와 성능 이점이 동일합니다.

AutoMV 기능은 다음과 같이 여러모로 이점이 있습니다.

  • 구체화된 뷰를 생성하고 최신 상태로 유지하는 비용과 쿼리 지연 시간에 대한 예상 이점의 균형을 맞춤
  • 이전에 생성된 AutoMV를 모니터링하고 더 이상 도움이 되지 않는 경우 폐기
  • 사용자가 생성한 구체화된 뷰와 동일한 기준 및 제한을 사용하여 자동으로, 점진적으로 새로 고침

또한 개발자는 AutoMV를 활용하기 위해 쿼리를 수정할 필요가 없습니다. 구체화된 뷰를 사용하기 위한 자동 쿼리 재작성은 시스템에서 생성된 AutoMV를 활용할 수 있는 쿼리를 식별합니다. 이 기능은 AutoMV를 사용하도록 쿼리를 자동으로 다시 작성하여 쿼리 효율성을 높입니다. 

지금 바로 계정을 만들어 AWS에서 구체화된 뷰를 시작해 보세요.

AWS 활용 다음 단계

무료 계정에 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 구축을 시작하세요.

로그인