이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.
TL;DR
AUTO CDC가 수작업 MERGE 로직을 대체하는 선언적 CDC 기능을 이중 시간 이력과 부분 업데이트까지 확장했습니다. Bitemporal AUTO CDC는 사실이 유효했던 business time과 시스템이 이를 인지한 system time을 각각 저장하고, 순서가 뒤섞인 정정 이벤트가 도착하면 기존 이력을 재구성합니다. 이 이력을 행으로 보존하면 VACUUM 이후에도 MLflow에 기록한 시점으로 학습 데이터를 다시 만들 수 있습니다. Partial Updates는 변경되지 않은 필드가 NULL로 전달되는 입력에서 기존 값을 유지하며, AUTO CDC Type 1 Python API는 Apache Spark 4.2에 기여돼 Delta Lake와 Apache Iceberg에서 동작합니다.
섹션별 상세
수작업으로 작성한 MERGE 기반 CDC 파이프라인은 이벤트 순서와 데이터 형태가 복잡해질수록 이력 왜곡 위험과 유지보수 부담이 커집니다. AUTO CDC는 SCD Type 1·Type 2와 Snapshot CDC를 몇 가지 선언으로 처리하고, 이번 확장에서는 이중 시간 이력과 부분 업데이트까지 같은 파이프라인 모델에 결합합니다. 이를 통해 데이터 엔지니어가 수백 줄의 취약한 변경 로직을 직접 조정하지 않고도 감사 추적과 실제 운영 데이터의 예외 상황을 다룰 수 있습니다.
Bitemporal AUTO CDC는 사실이 실제로 유효했던 business time과 시스템이 그 사실을 학습한 system time을 독립적으로 저장합니다. 대상 테이블에는 __START_AT·__END_AT와 __SYSTEM_START_AT·__SYSTEM_END_AT 네 개의 시스템 관리 열이 추가되며, 두 시간축 중 어느 쪽에서도 늦게 도착한 정정 이벤트가 기존 이력을 다시 구성합니다. 예를 들어 1월 1일에 발생한 변경을 1월 5일에 수신하고 1월 8일에 정정하더라도, 1월 3일 당시 시스템이 알던 값과 현재 기준으로 수정된 실제 값을 각각 조회할 수 있어 규제 기록과 감사 재현에 활용할 수 있습니다.
근거
- Bitemporal AUTO CDC는 business time과 system time을 독립적으로 추적하며 네 개의 시스템 관리 시간 열을 사용합니다. — Dual-Axis History Tracking with Bitemporal AUTO CDC 절의 두 시간축 설명과 __START_AT, __END_AT, __SYSTEM_START_AT, __SYSTEM_END_AT 열 목록
- 이벤트가 어느 시간축에서든 순서 없이 도착하면 엔진이 영향을 받은 과거 이력을 다시 구성합니다. — When a correction shows up with an earlier business time or system time 문단의 out-of-order correction 동작 설명
bitemporal 이력은 Delta Lake의 파일 버전이 아니라 논리적 행으로 보존되므로 VACUUM 이후에도 모델 학습 데이터의 재현성을 유지할 수 있습니다. 학습 시 business time과 system time의 두 시점을 MLflow 파라미터로 기록하거나, 현재 뷰를 사용한다면 하나의 system time을 저장한 뒤 해당 시점으로 다시 조회하면 됩니다. VACUUM과 OPTIMIZE가 오래된 파일을 정리하거나 압축해도 시간별 이력 행은 남기 때문에, 파일 보존 기간에 의존하는 Delta Lake Time Travel보다 장기 감사에 적합한 재현성 계약을 구성할 수 있습니다.
근거
- bitemporal 이력은 VACUUM 이후에도 행으로 남아 모델 학습 데이터 재현성을 유지합니다. — Beyond time travel: reproducible ML that survives VACUUM 절의 파일 버전과 논리적 행 이력 비교
AutoCDC Partial Updates는 업데이트 이벤트에 포함되지 않은 필드가 NULL로 전달되는 CDC 소스를 별도 사용자 로직 없이 처리합니다. 예를 들어 대상 행이 (1, 'A', 20)이고 입력이 (1, NULL, 30)일 때 기본 동작은 name을 NULL로 바꾸지만, 부분 업데이트를 활성화하면 name은 'A'로 유지되고 값 30만 반영됩니다. IGNORE NULL UPDATES ON columnList, IGNORE NULL UPDATES ON * EXCEPT (columnList), COLUMNS TO UPDATE 세 가지 설정으로 열별 NULL 처리 규칙을 지정할 수 있으며 이 기능은 Generally Available 상태입니다.
근거
- Partial Updates는 NULL을 기존 값을 덮어쓰지 않는 신호로 처리할 수 있습니다. — 대상 행 (1, 'A', 20)과 입력 (1, NULL, 30)의 기본 동작 및 Partial Updates 결과 예시
Databricks는 AUTO CDC Type 1의 Python API를 Apache Spark 4.2에 기여해 선언적 CDC를 오픈 소스 생태계로 확장하고 있습니다. 초기 이벤트의 delete tombstone 상태를 보조 테이블에 보관하고 재시도된 microbatch가 대상 데이터를 훼손하지 않고 수렴하도록 만들어 out-of-order 데이터와 idempotent retry를 처리합니다. 구현이 특정 저장 형식에 묶이지 않아 Delta Lake와 Apache Iceberg에서 모두 동작하며, SQL 인터페이스인 CREATE FLOW ... AS AUTO CDC INTO와 SCD Type 2 전체 이력 관리 및 부분 업데이트 기능도 Apache Spark 후속 릴리스와 개발 계획에 포함되어 있습니다.
근거
- AUTO CDC Type 1 Python API가 Apache Spark 4.2에 기여됐고 Delta Lake와 Apache Iceberg에서 동작합니다. — We continue to commit to open source 절의 Apache Spark 4.2 기여와 저장 형식 호환성 설명
용어 해설
- 변경 데이터 캡처(Change Data Capture)
- — 변경 데이터 캡처는 원천 시스템에서 발생한 삽입·수정·삭제 이벤트를 추적해 대상 테이블에 반영하는 처리 방식입니다. AUTO CDC는 이벤트 순서가 뒤섞이거나 일부 필드만 전달되는 상황까지 선언적으로 처리해 수작업 MERGE 로직을 줄입니다.
- 이중 시간 데이터(Bitemporal Data)
- — 이중 시간 데이터는 실제 사실이 유효했던 업무 시간과 시스템이 해당 사실을 인지한 시스템 시간을 함께 보존합니다. 두 시간축을 독립적으로 관리하면 과거의 실제 상태와 특정 시점에 시스템이 알고 있던 상태를 각각 재구성할 수 있습니다.
- SCD Type 2
- — SCD Type 2는 차원 데이터의 변경 이력을 새 행으로 누적해 과거 버전을 보존하는 방식입니다. 일반적인 SCD Type 2가 사실이 바뀐 업무 시간만 추적하는 반면, bitemporal AUTO CDC는 시스템이 변경을 수신한 시간까지 별도로 기록합니다.
- Delta Lake Time Travel
- — Delta Lake Time Travel은 테이블 파일의 과거 버전을 기준으로 특정 시점의 데이터를 조회하는 기능입니다. 그러나 VACUUM이 오래된 파일을 삭제하면 조회가 중단될 수 있어, 장기적인 모델 재현성에는 이력 자체를 행으로 저장하는 bitemporal 방식이 더 적합합니다.
- 부분 업데이트(Partial Updates)
- — 부분 업데이트는 변경된 필드만 포함하는 CDC 이벤트를 처리하는 방식입니다. 입력 행에서 변경되지 않은 필드가 NULL로 전달될 때 이를 기존 값을 덮어쓰라는 의미가 아니라 업데이트하지 말라는 의미로 해석해 데이터 손실을 막습니다.
기술
- Apache Spark Declarative Pipelines
- AUTO CDC
- Apache Spark 4.2
- Delta Lake
- Apache Iceberg
- MLflow
- Spark SQL
활용 사례
- 규제 대상 거래·참조 데이터의 이중 시간 감사 추적
- 과거 시점의 시스템 인지 상태와 실제 업무 상태 재구성
- VACUUM 이후에도 유지되는 머신러닝 학습 데이터 재현
- NULL을 포함한 부분 행 업데이트 처리
- 순서가 뒤섞인 CDC 이벤트와 재시도 microbatch 처리
언급된 리소스
문서Bitemporal AUTO CDC
문서Apply Partial Updates documentation
문서Open Source AutoCDC Programming Guide
문서SPIP
문서SPARK-56249
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2026. 08. 12.수집 2026. 08. 12.출처 타입 RSS
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.