주요 컨텐츠로 이동

Databricks SQL의 구체화된 뷰(MV)와 스트리밍 테이블(ST) 정식 출시

Databricks SQL에서 쉽고 빠르고 효율적인 수집과 변환, 이제 AWS와 Azure에서 사용 가능
이 포스트 공유하기

Summary

  • 구체화된 뷰(MV)와 스트리밍 테이블(ST)는 SQL 분석가와 엔지니어를 위해 DBSQL 웨어하우스 내에서 데이터와 분석 애플리케이션을 더 효과적으로 제공하는 데 도움을 줍니다.
  • MV와 ST는 자동화된 end-to-end 증분 처리를 통해 쿼리 결과를 사전에 계산하고 저장함으로써 쿼리 지연 시간을 크게 줄입니다.
  • MV와 ST를 사용하여 데이터 파이프라인을 개발하면 테이블과 DML 코드 관리에 들어가는 수동 작업을 대부분 자동화하여 분석 엔지니어들이 비즈니스 로직에 집중하고 간단한 SQL 구문을 사용하여 조직에 더 큰 가치를 제공할 수 있습니다.

Generated by AI

Databricks SQL의 구체회된 뷰 (Materialized views, MV)와 스트리밍 테이블 (Streaming Tables, ST)이 AWS와 Azure에서 정식 출시되었습니다. 스트리밍 테이블은 클라우드 스토리지와 메시지 버스와 같은 소스에서 몇 줄의 SQL로 간단하게 증분 수집을 제공합니다. 구체화된 뷰는 대시보드와 쿼리의 결과를 사전 계산하고 증분 업데이트하여 이전보다 훨씬 빠르게 실행할 수 있습니다. 이 기능을 함께 활용하면 SQL만으로 데이터 수집부터 변환까지 효율적이고 확장 가능한 데이터 파이프라인을 구축할 수 있습니다.

이 블로그에서는 분석가와 분석 엔지니어가 DBSQL 웨어하우스 내에서 데이터와 분석 애플리케이션을 보다 효과적으로 제공할 수 있도록 돕는 다양한 도구에 대해 자세히 알아보겠습니다. 또한 MV와 ST의 모니터링, 문제 해결, 비용 추적을 위한 새로운 기능들도 소개할 것입니다.

데이터 웨어하우스 사용자가 직면하는 과제

데이터 웨어하우스는 비즈니스 인텔리전스(BI) 애플리케이션을 통한 분석과 내부 보고를 위한 주요 위치입니다. SQL 분석가는 대규모 데이터셋을 효율적으로 수집 및 변환하고, 실시간 분석을 위한 빠른 쿼리 성능을 보장하며, 빠른 데이터 액세스와 비용 관리 사이의 균형을 관리해야 합니다. 이러한 목표를 달성하는 데는 몇 가지 어려움이 있습니다:

  • 느린 쿼리와 대시보드 속도: 대규모 BI 대시보드는 방대한 데이터 세트를 복잡하게 가공하므로 쿼리 속도가 느려지고, 이는 인터랙티브 사용자 경험을 방해하며 반복적인 데이터 재처리로 인해 비용이 증가합니다.
  • 데이터 신선도와 비용 관리: 쿼리 지연을 줄이기 위해 결과를 미리 계산할 수 있지만, 이는 종종 데이터 신선도가 떨어지고 비용이 증가하는 문제를 야기합니다. 이를 해결하려면 최신 데이터를 적정 비용으로 유지하기 위한 복잡한 증분 처리 방식이 필요합니다.
  • 셀프서비스 지원 부족: 전통적인 SQL 파이프라인은 복잡한 수작업 코딩에 의존하여, 비즈니스 요구에 신속하게 대응하는 데 한계가 있습니다.

구체화된 뷰(MV)와 스트리밍 테이블(ST)로 빠르고 신선한 데이터 제공

MV와 ST는 자동화된 end-to-end 증분 처리를 통해 뷰의 편리함과 사전 계산된 데이터의 속도를 결합해 이러한 과제를 해결합니다. 이를 통해 엔지니어는 복잡한 코딩 없이도 빠른 쿼리를 제공할 수 있으며, 필요한 비즈니스 요구에 맞게 최신 데이터를 유지할 수 있습니다.

MV를 이용한 빠른 쿼리와 대시보드
MV는 SQL 분석 및 BI 대시보드의 성능을 향상시키기 위해 쿼리 결과를 사전에 계산하고 저장함으로써 쿼리 지연 시간을 크게 줄입니다. 기본 테이블을 반복적으로 쿼리하는 대신, MV는 대시보드와 최종 사용자 쿼리가 미리 집계되거나 미리 결합된 데이터를 검색하게 하여 이를 훨씬 빠르게 만듭니다. 또한, MV를 쿼리하는 것은 Views에 비해 더 비용 효율적이며, MV에 저장된 데이터만 접근하므로, 모든 쿼리에 대해 기본 테이블을 재처리하는 오버헤드를 피할 수 있습니다.

비용을 낮추면서 실시간 사용 사례로 전환
ST와 MV는 완전한 증분 데이터 파이프라인을 구성하여 실시간 처리에 이상적입니다. ST는 스트리밍 데이터를 지속적으로 수집하고 처리하여, BI 대시보드, 머신러닝 모델, 운영 시스템에 최신 정보를 지속적으로 제공합니다. 한편, MV는 새로운 데이터가 도착할 때마다 자동으로 증분 갱신을 수행해 수동 입력 없이도 최신 데이터를 유지하면서 뷰 전체 재구성의 필요를 줄여 비용 절감 효과를 제공합니다. ST와 MV를 결합하면 실시간 분석과 리포팅에 비용과 성능의 최적 균형을 얻을 수 있습니다.

증분 갱신이 가능한 MV는 시간과 비용을 대폭 절감할 수 있습니다. 내부 벤치마크 결과, 2천억 개의 행을 가진 테이블에서 MV 갱신 비용이 전체 테이블을 갱신하는 것보다 98% 저렴하고 85% 빠르며, 데이터 신선도는 약 7배 향상되고 비용은 비슷한 CREATE TABLE AS 구문 대비 1/50로 절감되었습니다.

MV는 유사한 CREATE TABLE AS 문보다 85% 빠르게 업데이트할 수 있습니다
MVs can be updated 85% faster than a similar CREATE TABLE AS statement

분석가들이 DBSQL에서 데이터 파이프라인을 쉽게 구축
MV와 ST를 사용하여 데이터 파이프라인을 개발하면 테이블과 DML 코드 관리에 들어가는 수동 작업을 대부분 자동화하여 분석 엔지니어들이 비즈니스 로직에 집중하고 간단한 SQL 구문을 사용하여 조직에 더 큰 가치를 제공할 수 있습니다. ST는 복잡한 구성을 필요로하지 않고 클라우드 저장소와 메시지 버스와 같은 다양한 소스에서 데이터를 쉽게 가져올 수 있게 해줍니다.

트랜잭션 테이블 위에 효과적으로 Materialized Views를 활용함으로써 분석 계층에서의 쿼리 성능이 크게 향상되며, 5억 개의 Fact 테이블에서 쿼리 시간이 최대 85%까지 줄었습니다. 이를 통해 우리의 비즈니스 팀은 분석 대시보드를 더 효율적으로 소비하고, 데이터에서 얻은 인사이트를 바탕으로 더 빠른 결정을 내릴 수 있습니다.
— Shiv Nayak / Head of Data and AI Architecture, EasyJet
우리는 Databricks의 materialized views를 사용하여 대량의 데이터를 처리하는 데 필요한 시간을 크게 줄였습니다. 이 개선으로 실행 시간이 85% 줄어들어, 우리 팀이 더 효율적으로 작업하고 머신러닝 및 비즈니스 인텔리전스 인사이트에 집중할 수 있게 되었습니다. 간소화된 프로세스는 더 큰 데이터 볼륨을 지원하며, 전반적인 비용 절감과 프로젝트의 민첩성 향상에도 기여하고 있습니다.
— Sam Adams, Senior Machine Learning Engineer, Paylocity
“Materialized Views로의 전환은 쿼리 성능의 큰 향상을 가져왔습니다... 더불어 추가적인 비용 절감도 큰 도움이 되었습니다.”
— Karthik Venkatesan, Security Software Engineering Sr. Manager, Adobe
“우리는 몇 테라바이트의 데이터를 가진 테이블에서 쿼리 성능이 98% 향상된 것을 확인했습니다.”
— Gal Doron, Head of Data, AnyClip
“트랜잭션 테이블 위에 Materialized Views를 사용하면 분석 레이어에서의 쿼리 성능이 크게 향상되며, 5억 개의 Fact 테이블에서 실행 시간이 최대 85%까지 줄었습니다.”
— Nikita Raje, Director Data Engineering, DigiCert

예시: Databricks의 볼륨에서 데이터를 수집하고 변환하기

ST와 MV의 일반적인 활용 사례는 클라우드 스토리지 버킷에 도착하는 데이터를 지속적으로 수집하고 변환하는 것입니다. 다음 예는 외부 설정이나 오케스트레이션 없이 SQL에서 이를 완전히 수행하는 방법을 보여줍니다. 우리는 레이크하우스에 데이터를 적재하기 위해 하나의 ST를 만들고, 그런 다음 수집된 행의 수를 세기 위해 MV를 만들 것입니다.

  1. 5분마다 볼륨에서 데이터를 가져오기 위해 ST를 생성합니다. ST는 새로운 데이터의 정확한 1회 전달(exactly-once delivery)을 보장합니다. 그리고 ST는 데이터 처리를 위해 서버리스 백그라운드 컴퓨트를 사용하기 때문에, 데이터 볼륨이 급증하더라도 자동으로 처리할 수 있습니다.
sql(Auto-detected)
CREATE OR REFRESH STREAMING TABLE my_bronze

REFRESH EVERY 5 minutes

AS

SELECT count(distinct event_id) as event_count

FROM STREAM read_files('/Volumes/bucket_name')
  1. 매시간 데이터를 변환하기 위해 MV를 생성합니다. MV는 항상 정의된 쿼리의 결과를 반영하며 가능한 경우 증분 갱신됩니다.
sql(Auto-detected)
CREATE OR REPLACE MATERIALIZED VIEW my_silver

REFRESH EVERY 1 hour

AS

SELECT count(distinct event_id) as event_count from my_bronze

새로운 기능들

프리뷰 출시 이후, MV와 ST를 위한 카탈로그 탐색기(Catalog Explorer) 기능이 개선되어 실시간 상태와 갱신 일정을 손쉽게 확인할 수 있게 되었습니다. 또한, MV는 이제 CREATE OR REPLACE 기능을 지원하여 기존 MV를 대체하는 방식으로 업데이트할 수 있습니다. MV는 증분 갱신 기능도 확장하여, inner join, left join, UNION ALL, 윈도우 함수와 같은 다양한 쿼리에서도 증분 갱신을 지원합니다. 이제 이러한 새로운 기능을 좀 더 자세히 살펴보겠습니다.

관측 가능성(Observability)

카탈로그 탐색기에 MV와 ST의 상태와 일정에 대한 실시간 정보를 추가하여 사용자가 보다 직관적으로 데이터를 확인할 수 있도록 개선했습니다.

  1. 현재 갱신 상태: MV나 ST가 마지막으로 갱신된 정확한 시간을 표시하여 데이터 신선도를 쉽게 파악할 수 있습니다.
  2. 갱신 일정: MV가 시간 기반 일정에 따라 자동으로 갱신되도록 설정된 경우, 카탈로그 탐색기에서 해당 일정을 읽기 쉬운 형식으로 보여줍니다. 이를 통해 최종 사용자도 MV의 신선도를 쉽게 확인할 수 있습니다.

MV와 ST

더 쉬운 스케줄링과 관리

DDL을 사용하여 MV와 ST 갱신을 스케줄링할 수 있는 EVERY 구문을 도입했습니다. EVERY를 사용하면 CRON 구문을 작성할 필요 없이 시간 기반 스케줄을 간단하게 설정할 수 있습니다. CRON 구문의 표현력이 필요한 사용자들을 위해 CRON 스케줄링 기능도 계속 지원됩니다. 

예:

sql(Auto-detected)
CREATE OR REPLACE MATERIALIZED VIEW | STREAMING TABLE <name>

SCHEDULE EVERY 1 HOUR|DAY|WEEK

AS...        

또한, MV에 대해 CREATE OR REPLACE 를 지원하여, 삭재 후 다시 생성할 필요 없이 기존의 권한과 ACLs를 유지하면서 MV 정의를 쉽게 업데이트(in-place update)할 수 있도록 했습니다. 

Left join, inner join 및 윈도우 함수에서의 증분 갱신

MV는 쿼리 계획에 따라 최적의 새로 고침 전략을 자동으로 선택합니다
MVs will automatically pick the best refresh strategy based on the query plan.

큰 MV를 다시 계산하는 것은 비용이 많이 들고 느릴 수 있습니다. MV는 이를 해결하기 위해 증분 방식으로 업데이트를 계산하여 비용을 낮추고 갱신 속도를 높입니다. 이를 통해 비용의 일부만으로 데이터의 신선도를 높일 수 있으며, 최종 사용자가 미리 계산된 데이터를 쿼리할 수 있습니다. MV는 DBSQL Pro와 서버리스 웨어하우스, 또는 Delta Live Tables(DLT) 파이프라인에서 증분 갱신됩니다.

쿼리가 지원하는 경우 MV는 자동으로 증분 갱신됩니다. 쿼리에 지원되지 않는 표현식이 포함되어 있으면 대신 전체 갱신이 수행됩니다. 증분 갱신은 마지막 업데이트 이후의 변경 사항만 처리하고 테이블에 데이터를 추가하거나 업데이트합니다.

MV는 inner join, left join, UNION ALL, 그리고 윈도우 함수(OVER)에 대한 증분 새로고침을 지원합니다. 조인에 테이블을 몇 개든지 지정할 수 있으며, 조인에 포함된 모든 테이블의 업데이트가 쿼리 결과에 반영됩니다. 더 많은 쿼리 유형에 대한 지원을 계속 확장하고 있으며, 최신 기능은 문서를 참조하시기 바랍니다. 

비용 파악

이제 청구 대상 사용량(billable usage) 시스템 테이블에서 갱신에 대한 ID 정보를 확인할 수 있습니다. 이 정보를 얻으려면 간단히 billable usage 시스템 테이블에 대한 쿼리를 실행하여 usage_metadata.dlt_pipeline_id가 MV 또는 ST와 연결된 파이프라인 ID로 설정된 레코드를 찾으면 됩니다. 카탈로그 탐색기의 Details 탭에서 MV 또는 ST를 보면 파이프라인 ID를 찾을 수 있습니다. 자세한 내용은 문서를 참조하시기 바랍니다.

다음 쿼리는 예시를 보여줍니다:

sql(Auto-detected)
SELECT  sku_name,  usage_date, identity_metadata, SUM(usage_quantity) AS `DBUs`

FROM

  system.billing.usage

WHERE

  usage_metadata.dlt_pipeline_id = <pipeline_id>

GROUP BY ALL    

MV와 ST의 향후 계획

MV와 ST는 DBSQL의 최고 데이터 웨어하우징 기능을 바탕으로 하는 강력한 데이터 웨어하우징 기능입니다. 이미 1,400개 이상의 고객이 이를 사용하여 증분 수집 및 갱신을 실현하고 있습니다. 우리는 가까운 미래에 MV와 ST를 더 발전시켜 나갈 계획에 대해 매우 기대하고 있습니다. 다음은 그러한 향후 기능들의 일부 미리 보기입니다:

  • 상류(upstream) 데이터 변경에 따른 새로 고침. 상류 데이터 변경에 따른 자동 새로 고침을 설정할 수 있으며, 업데이트 후 얼마나 빨리 갱신할지 제어하여 비용을 관리할 수 있습니다.
  • 소유자(owner)를 수정하고 서비스 주체로 실행 (run as a service principal)
  • 카탈로그 탐색기에서 MV와 ST의 코멘트(comments)를 직접 수정할 수 있는 기능.
  • UI에서의 MV/ST 통합 모니터링. Databricks UI에서 MV와 ST를 모두 볼 수 있어, 전체 워크스페이스에 대한 건강 상태와 운영 정보를 쉽게 모니터링할 수 있습니다.
  • 비용 모니터링. MV와 ST 이름이 청구 시스템 테이블(billing system table)에 포함되어 DBU 사용량을 더 쉽게 모니터링하고, 데이터를 식별하고, 새로고침 기록을 파이프라인 ID를 찾아보지 않고 확인할 수 있습니다.
  • Delta Sharing: 현재 Private Preview에서 사용 가능
  • Google Cloud 지원: 곧 출시 예정!

지금 바로 MV와 ST를 사용해 보세요

바로 시작하려면:

 

(번역: Youngkyong Ko)  Original Post

Databricks 무료로 시작하기

관련 포스트

데이터브릭스 SQL용 Materialized 뷰 및 스트리밍 테이블 소개

이제 Materialized 뷰와 스트리밍 테이블을 AWS 및 Azure의 Databricks SQL 에서 공개적으로 사용할 수 있게 되었다는 기쁜 소식을 알려드리게 되어 기쁩니다. 스트리밍 테이블은...

구체화된 뷰(Materialized View)로 더욱 빨라진 Lakeview 대시보드

February 27, 2024 작성자: 차오 차이, 폴 랩파스 in
(번역: Youngkyong Ko) Original Post 이 글에서는 Lakeview 대시보드와 함께 Databricks SQL의 구체화된 뷰( Materialized View )를 사용하여 비즈니스에 새로운 데이터와 인사이트를 제공하는...

Cost-effective, incremental ETL with serverless compute for Delta Live Tables pipelines

We recently announced the general availability of serverless compute for Notebooks, Workflows, and Delta Live Tables (DLT) pipelines. Today, we'd like to explain...

Delivering cost-effective data in real time with dbt and Databricks

As businesses grow, data volumes scale from GBs to TBs (or more), and latency demands go from hours to minutes (or less), making...
모든 엔지니어링 블로그 포스트 보기