주요 컨텐츠로 이동
플랫폼

선언적 패턴을 활용한 레이크하우스의 SQL ETL 현대화

SQL 분석가와 분석 엔지니어가 이제 쿼리에서 직접 append, CDC 및 배치 ETL에 선언적 흐름을 활용하는 방법을 알아보세요.

작성자: Matt Jones , Shanelle Roman

  • 더 광범위한 Declarative Everywhere 전략의 일환으로 선언적 ETL이 레이크하우스에 직접 도입됩니다.
  • 이제 SQL 분석가와 분석 엔지니어는 복잡한 절차적 코드를 작성하지 않고도 APPEND, AUTO CDC 및 REPLACE WHERE 배치 업데이트에 선언적 흐름을 활용할 수 있습니다.
  • 실무자는 표준 SQL 워크플로 내에서 쿼리 수준의 ETL 작업을 쉽게 실행하거나, 다단계 프로젝트 지향 개발을 위해 Lakeflow Pipelines Editor로 전환할 수 있습니다.

Databricks는 Lakehouse의 데이터 웨어하우징 워크플로우에 선언적 ETL을 도입하여, SQL 실무자가 이미 익숙하게 작업하고 있는 환경에서 복잡한 변환 로직을 더 쉽게 단순화할 수 있도록 지원합니다.

이는 Apache Spark™ Declarative Pipelines의 기반이 되는 선언적 실행 모델을 Databricks 전반의 더 많은 저작 경험에 도입하려는 광범위한 전략의 일환입니다. 이제 SQL 사용자는 전용 파이프라인 중심 환경에서 작업할 필요 없이 Databricks Lakehouse 내의 SQL 쿼리에서 직접 일반적인 ETL 패턴을 정의할 수 있습니다.

Lakehouse에서 반복되는 ETL 패턴 단순화하기

Databricks의 선언적 SQL ETL은 새로운 것이 아닙니다. 오늘날 수천 명의 SQL 우선 사용자들은 이미 구체화된 뷰(Materialized Views)스트리밍 테이블(Streaming Tables)과 같은 선언적 프리미티브를 활용하여 반복되는 변환을 단순화하고, 다운스트림 테이블을 최신 상태로 유지하며, BI 워크로드를 가속화하고 있습니다.

반복되는 많은 ETL 패턴은 설명하기는 쉽지만 운영하기는 어렵습니다. 사용자 정의 SQL 로직, 수동 일정 예약, 오케스트레이션 연결 등이 필요하기 때문입니다. 이러한 패턴에는 새 레코드 추가, CDC 변경 사항 적용, 변경된 데이터만 새로 고침 등이 포함됩니다.

선언적 프리미티브가 효과적인 이유는 사용자가 테이블을 최신 상태로 유지하는 데 필요한 모든 단계를 직접 코딩하는 대신, 원하는 테이블이나 뷰를 설명하기만 하면 되기 때문입니다. Databricks는 해당되는 경우 일정 예약, 새로 고침 및 증분 처리를 처리하므로 사용자는 테이블을 최신 상태로 유지하는 데 필요한 로직을 직접 코딩할 필요가 없습니다.

이제 이러한 선언적 접근 방식을 Lakeflow Pipelines 에디터를 넘어 데이터 웨어하우스 및 SQL 실무자를 위한 더 많은 반복 ETL 패턴으로 확장하고 있습니다. 이제 Lakehouse 사용자는 예를 들어 SQL 에디터에서 직접 원하는 ETL 패턴을 정의할 수 있으며, Databricks는 이를 안정적으로 실행하는 데 필요한 증분 처리, 업데이트 로직, 일정 예약 및 오케스트레이션을 처리합니다.

image2.png
증분 REPLACE WHERE 플로우는 Lakehouse에 타겟팅된 새로 고침 기능을 제공합니다

Lakehouse에서 사용할 수 있는 최초의 선언적 프리미티브

Lakehouse SQL 에디터에서 사용할 수 있는 최초의 선언적 작업은 추가 전용(append-only) 업데이트, 변경 데이터 캡처(CDC), 배치 덮어쓰기라는 세 가지 일반적인 반복 ETL 패턴에 매핑됩니다.

이러한 패턴 중 상당수는 이미 Lakeflow의 AUTO CDC와 같은 선언적 API를 통해 제공되고 있으며, 이번 변화의 핵심은 SQL 분석가가 Lakehouse에서 직접 이러한 패턴에 액세스할 수 있도록 하는 것입니다.

이러한 플로우는 일정에 따라 새로 고치거나, 업스트림 업데이트에 의해 트리거되거나, 온디맨드로 실행하거나, Jobs의 SQL 태스크를 통해 오케스트레이션할 수 있습니다.

추가 전용(Append-Only) 업데이트

추가 전용 업데이트는 오늘날 많은 스트리밍 테이블의 표준 패턴으로, 소스의 새 레코드를 대상 테이블에 증분 방식으로 추가하는 데 사용됩니다. 이는 Auto Loader를 사용하여 클라우드 오브젝트 스토리지에서 새 레코드를 로드하는 등의 수집 워크로드에 일반적으로 사용됩니다.

반복적인 insert 로직을 작성하고 일정을 예약하는 대신, SQL 사용자는 소스에서 이전에 처리된 데이터와 새 데이터를 자동으로 추적하는 간단한 APPEND 플로우를 정의할 수 있습니다. Databricks는 상태 추적을 처리하고 새 레코드가 도착하는 대로 증분 방식으로 추가하며, 기본 서버리스 파이프라인을 자동으로 관리합니다.

이를 통해 SQL 사용자는 별도의 파이프라인을 수동으로 생성, 예약 또는 관리하지 않고도 추가 스타일의 수집을 간편하게 운영할 수 있습니다.

Lakehouse에서 APPEND 플로우를 정의하는 방법 알아보기.

변경 데이터 캡처(Change Data Capture)

CDC 파이프라인은 SQL ETL에서 가장 흔하면서도 가장 복잡한 패턴 중 하나입니다. 팀에서는 삽입, 업데이트, 삭제를 처리하기 위해 종종 MERGE INTO을 사용하지만, CDC 데이터는 순서가 뒤바뀐 채 도착할 수 있어 잘못된 결과를 방지하기 위한 추가 로직이 필요합니다.

AUTO CDC를 사용하면 SQL 사용자가 Lakehouse에서 몇 줄의 선언적 코드만으로 CDC 로직을 정의할 수 있습니다. AUTO CDC를 사용하면 복잡한 merge 파이프라인을 직접 작성하지 않고도 키, 시퀀싱, 삭제 처리, 결과를 SCD Type 1 또는 SCD Type 2로 저장할지 여부를 쉽게 지정할 수 있습니다.

“bsport에서 SQL AUTO CDC 덕분에 Databricks에서 데이터 수집을 훨씬 더 간단하고 모듈화된 방식으로 관리할 수 있게 되었습니다. 단일 파이프라인에서 테이블 로드를 분리함으로써 플랫폼 전반의 가용성과 데이터 최신성을 향상시켰습니다. 또한 제3자 데이터를 독립적으로 처리할 수 있어 장애 관리가 용이해지고, 오케스트레이션 복잡성이 줄어들며, 전반적인 설정을 운영하고 확장하기가 더 쉬워졌습니다. 우리 팀에게 이는 프로덕션 환경에서 더 강력한 안정성을 갖춘 더 깔끔하고 유연한 SQL 기반 워크플로우를 만들어 주었습니다.”—Adrien Marteau, Head of Data, bsport

SCD Type 1 및 Type 2용 AUTO CDC 플로우를 생성하는 방법 알아보기.

배치 덮어쓰기(Batch Overwrites)

일부 배치 ETL 워크로드는 날짜 범위, 파티션 또는 비즈니스 세그먼트와 같은 특정 데이터 하위 집합만 새로 고치면 됩니다. 기존에는 팀에서 비용이 많이 드는 전체 재계산이나 사용자 정의 덮어쓰기 로직을 사용하여 이를 처리하는 경우가 많았습니다.

REPLACE WHERE 플로우는 타겟팅된 증분 배치 재계산을 위한 선언적 패턴을 Lakehouse에 도입합니다. 사용자가 대상 테이블에 조건자(predicate)를 정의하면 Databricks가 해당 영역을 자동으로 새로 고칩니다. Databricks의 자동 증분 엔진인 Enzyme을 사용하면, 전체 대상 테이블을 재계산하거나 일치하는 슬라이스 전체를 다시 쓰는 대신 가능한 경우 지정된 조건자 내에서 변경된 데이터만 식별하고 처리할 수 있습니다.

Lakehouse 벤치마크 테스트에서 Enzyme 기반의 REPLACE WHERE는 기존 REPLACE WHERE보다 3.4배 더 빠르고 2.5배 더 저렴하게 실행되었습니다. 이는 선택적 재처리, 스키마 진화, 백필, 더 큰 기록 범위를 처리하기 전에 작은 데이터 창에서 반복 작업하는 데 유용합니다.

REPLACE WHERE 플로우를 사용하여 테이블의 타겟팅된 하위 집합을 새로 고치는 방법 알아보기(커뮤니티 블로그는 여기에서 읽어보실 수 있습니다).

요약: SQL 실무자에게 이것이 중요한 이유

ETL을 현대화하기 위해 전체를 다시 작성하거나 복잡한 파이프라인 프레임워크에 전부를 걸 필요는 없습니다. 기존 Lakehouse SQL 작업에 선언적 의미 체계(semantics)를 도입하면 가장 적합한 부분에서 기존 코드와 현대화된 선언적 SQL을 적절히 조합하여 사용할 수 있습니다.

사용자 정의 작업을 위해 기존의 미세 조정된 절차적 SQL 쿼리를 유지하면서, 유지 관리가 많이 필요한 반복 패턴에 대해 추가 전용 수집, AUTO CDC 또는 타겟팅된 배치 덮어쓰기와 같은 선언적 작업을 원활하게 연결할 수 있습니다. 이를 통해 기존 SQL 로직에 대한 완전한 제어와 함께 원하는 곳에서 자동화된 상태 관리, 종속성 처리, 스키마 진화를 모두 Lakehouse 내에서 직접 활용할 수 있는 두 가지 장점을 모두 누릴 수 있습니다.

선언적 프리미티브에서 완전한 선언적 파이프라인으로

일상적인 SQL 워크플로우에 선언적 프리미티브를 혼합하면 개별 테이블과 증분 로직을 관리하기 위한 실용적이고 마찰이 적은 출발점을 제공합니다. 프로젝트의 규모와 복잡성이 커짐에 따라 개발 워크플로우도 자연스럽게 함께 발전할 수 있습니다.

관련된 여러 변환, 공유 종속성 및 프로덕션 워크플로우를 관리하는 팀의 경우, Lakeflow Pipelines 에디터는 다중 파일 개발, 종속성 관리, 파이프라인 시각화, 통합 검증 및 프로덕션 배포를 지원하여 선언적 ETL을 위한 보다 풍부한 프로젝트 중심의 개발 경험을 제공합니다.

image1.png
Lakeflow Pipelines 에디터

이는 도메인, 데이터 제품 또는 비즈니스 단위 전반에서 관련된 많은 변환을 관리하는 팀에 특히 유용합니다. 연결되지 않은 스크립트를 유지 관리하거나 하나의 대규모 프로젝트에 모든 로직을 집중시키는 대신, 팀은 Databricks에서 거버넌스가 적용되고 팀이 소유하는 파이프라인으로 선언적 플로우를 구성할 수 있습니다. Unity Catalog를 사용하면 각 팀이 공유 데이터 자산을 기반으로 구축하고, 권한을 일관되게 관리하며, 파이프라인과 다운스트림 소비자 전반의 계보(lineage)를 파악할 수 있습니다.

SQL 실무자는 익숙한 SQL 에디터에서 선언적 플로우로 시작한 다음, 더 큰 프로젝트, 더 깊이 있는 파이프라인 관리 및 팀 기반 개발을 위해 더 구조화된 환경이 필요할 때 Pipelines 에디터로 이동할 수 있습니다.

Lakeflow Pipelines 에디터로 선언적 ETL 워크플로우를 빌드하는 방법에 대해 자세히 알아보세요.

Genie Code를 사용하여 더 빠르게 시작하기

Genie Code를 사용하면 SQL 실무자가 이미 사용 중인 워크플로에서 이러한 선언적 ETL 패턴을 더 쉽게 발견하고 적용할 수 있습니다. 빈 페이지에서 시작하거나 기존 SQL을 프로덕션 환경에 바로 사용할 수 있는 패턴으로 수동 변환하는 대신, 사용자는 Genie Code에 선언적 흐름을 생성, 설명 및 개선하도록 요청할 수 있습니다.

예를 들어, CDC 데이터로 작업하는 사용자는 Genie Code에 적절한 키, 시퀀스 열, 삭제 처리, SCD Type 1 또는 Type 2 동작을 포함하여 AUTO CDC 흐름을 생성하는 데 도움을 요청할 수 있습니다. 반복적인 배치 로직으로 작업하는 사용자는 Genie Code의 도움을 받아 기존 덮어쓰기 로직을 증분 REPLACE WHERE 흐름으로 변환할 수 있습니다.

선언적 ETL을 더 많은 작성 환경에서 사용할 수 있게 됨에 따라, Genie Code는 사용자가 수행하려는 작업에 적합한 선언적 패턴을 찾을 수 있도록 안내할 수 있습니다.

시작하려면 위의 각 섹션에 링크된 설명서를 살펴보세요. 그리고 SQL 편집기에서 Genie Code를 사용하여 APPEND 흐름, AUTO CDC 흐름 또는 REPLACE WHERE 흐름이 기존 ETL 로직을 단순화할 수 있는 부분을 식별해 보세요.

(이 글은 AI의 도움을 받아 번역되었습니다. 원문이 궁금하시다면 여기를 클릭해 주세요)

최신 게시물을 이메일로 받아보세요

블로그를 구독하고 최신 게시물을 이메일로 받아보세요.