논리적 뷰 및 구체화된 뷰 개요
이 문서에서는 BigQuery의 논리적 뷰와 구체화된 뷰를 설명하고 비교합니다. 최신 데이터 웨어하우징에서 뷰는 원시 데이터와 비즈니스 인텔리전스 간의 중요한 추상화 계층 역할을 합니다. BigQuery에서 설계자는 일반적으로 논리적 (표준) 뷰와 구체화된 뷰라는 두 가지 유형 중에서 선택합니다. 이러한 뷰는 공통 인터페이스를 공유하지만 기본 메커니즘, 성능 프로필, 비용 영향은 다릅니다.
논리적 뷰
논리 (표준) 뷰는 SQL 쿼리로 정의하는 가상 테이블입니다. 실제 데이터는 저장하지 않습니다. 대신 기본 기본 테이블에서 데이터를 가져오는 데 필요한 쿼리 로직을 저장합니다. 논리적 뷰를 쿼리하면 BigQuery 쿼리 엔진이 뷰를 기본 쿼리로 확장합니다. 이 프로세스는 뷰가 호출될 때마다 BigQuery가 뷰를 다시 실행한다는 의미입니다.
논리 뷰의 이점은 다음과 같습니다.
- 스토리지 오버헤드가 없습니다. 추가 데이터가 저장되지 않으므로 기본 테이블의 스토리지에 대해서만 비용을 지불하면 됩니다.
- 실시간 정확성 쿼리는 실행 시간에 실행되므로 결과는 항상 기본 테이블의 최신 상태를 반영합니다.
- 논리적 추상화. 데이터를 중복하지 않고 복잡한 조인을 간소화하거나 행 수준 보안을 적용합니다.
- SQL 유연성. 복잡한 윈도우 함수, 사용자 정의 함수 (UDF), 모든 조인 유형을 비롯한 전체 범위의 BigQuery SQL을 지원합니다.
구체화된 뷰
구체화된 뷰는 SQL 쿼리 결과를 주기적으로 저장하는 미리 계산된 뷰입니다. 논리적 뷰와 달리 구체화된 뷰는 계산된 데이터를 물리적으로 저장하므로 BigQuery가 원시 기본 데이터를 반복적으로 처리하지 않고도 결과를 더 빠르게 제공할 수 있습니다. 이렇게 하면 쿼리를 사전 처리하여 대규모 데이터 세트의 쿼리 지연 시간을 줄일 수 있으며 자주 사용되는 쿼리의 컴퓨팅 비용을 줄일 수 있습니다.
BigQuery 구체화된 뷰는 사전 계산된 데이터의 속도와 라이브 뷰의 정확성을 결합합니다. 이러한 목표는 다음을 통해 달성됩니다.
- 자동 새로고침. 기본 테이블이 변경되면 백그라운드 프로세스가 구체화된 뷰를 업데이트합니다.
- 데이터 업데이트 빈도. 백그라운드 새로고침이 대기 중인 동안 쿼리가 발생하면 BigQuery는 처리되지 않은 기본 테이블 변경사항을 자동으로 보상하여 최신 결과를 제공합니다.
- 스마트 조정. 구체화된 뷰가 더 효율적으로 답변을 제공할 수 있다고 판단되면 쿼리 옵티마이저가 기본 테이블에서 구체화된 뷰로 쿼리를 자동으로 다시 라우팅할 수 있습니다.
논리적 뷰와 구체화된 뷰 비교
논리적 뷰가 기본 뷰 유형이지만 크거나 계산 비용이 높은 뷰를 자주 쿼리하는 경우 구체화된 뷰를 만드는 것이 좋습니다. 논리적 뷰는 가상이며 데이터 세트에 대한 재사용 가능한 참조를 제공하지만 실제로 데이터를 저장하지는 않습니다. 구체화된 뷰는 논리적 뷰와 같이 SQL로 정의되지만 BigQuery가 성능 개선을 위해 사용하는 데이터를 물리적으로 저장합니다.
다음 표에서는 BigQuery 논리적 뷰와 구체화된 뷰의 유사점과 차이점을 요약해서 보여줍니다.
| 측정기준 | 논리 뷰 | 구체화된 뷰 |
|---|---|---|
| 데이터 지속성 | 없음 (가상) | 물리적 (디스크에 저장됨) |
| 실행 | 뷰가 호출될 때마다 | 미리 계산됨, 백그라운드 새로고침 |
| 데이터 업데이트 빈도 | 만료되지 않음 | 선택사항 1(새로고침을 통해) |
| 성능 | 변수 (기본 테이블에 따라 다름) | 일관성 있고 빠름 |
| SQL 복잡성 | 무제한 | 제한적 이용 |
| 최적화 대상 | 보안 및 추상화 | 속도 및 비용 절감 |
| 유지보수 및 스토리지 비용 | 아니요 | 예 |
1 --max_staleness 옵션은 자주 변경되는 대규모 데이터 세트를 처리할 때 비용을 제어하면서 쿼리 성능을 개선합니다.
논리 뷰를 사용해야 하는 경우
- 시맨틱 레이어링 기술 전문성이 없는 사용자를 위해 복잡한 열 이름을 비즈니스 친화적인 용어로 바꿉니다.
- 신속한 개발. 로직이 유동적이고 물리적 스토리지의 오버헤드를 관리하고 싶지 않은 경우에 사용합니다.
- 통합 데이터 소스 Looker Studio 또는 BigQuery Sharing (이전 명칭: Analytics Hub)과 같은 시각화 도구의 데이터 소스를 제공합니다.
구체화된 뷰를 사용하는 경우
- 데이터 사전 처리 집계, 필터, 조인, 클러스터를 준비하여 쿼리 성능을 개선합니다.
- 대시보드 가속화 동일한 집계 측정항목(예: 일일 활성 사용자)을 자주 쿼리하는 Looker와 같은 BI 도구를 지원합니다.
- 대규모 스트림의 실시간 분석 고속 스트리밍 데이터를 수신하는 테이블에 대해 더 빠른 응답을 제공할 수 있습니다.
- 비용 관리 대규모 데이터 세트에 대한 반복적이고 비용이 많이 드는 쿼리의 비용을 줄입니다.
승인된 뷰
승인된 뷰를 만들어 소스 데이터 세트의 데이터 하위 집합을 보조 데이터 세트의 뷰에 공유할 수도 있습니다. 그런 다음 공유된 데이터를 보고 이에 대해 쿼리를 실행할 수 있지만 소스 데이터 세트에 직접 액세스할 수는 없는 특정 사용자 및 그룹 (주 구성원)과 이 뷰를 공유할 수 있습니다.
논리적 뷰 또는 구체화된 뷰에 대해 승인된 뷰를 만들 수 있습니다. 구체화된 뷰의 승인된 뷰는 승인된 구체화된 뷰라고 합니다.
권장사항
잘 설계된 BigQuery 환경에서 논리 뷰는 필요한 데이터를 통합하는 데 유용한 도구입니다. 집계가 많이 포함된 특정 트래픽이 많은 쿼리 패턴의 성능 최적화 도구로 사용할 구체화된 뷰를 예약합니다.
구체화된 뷰의 사용량과 성능을 모니터링하는 방법을 알아보려면 MATERIALIZED_VIEWS 뷰를 참고하세요.