맨위로가기

변경 데이터 캡처

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

변경 데이터 캡처(CDC)는 소스 시스템에서 변경된 데이터를 캡처하여 다른 시스템으로 전파하는 메커니즘이다. CDC는 로우(Row) 기반, 트리거(Trigger) 기반, 로그 스캐너(Log Scanner) 기반 등 다양한 방법론을 통해 구현될 수 있으며, 시스템 개발자는 이러한 방법들을 조합하여 CDC 환경을 구축한다. CDC 구현 시에는 부적절한 소스 시스템, 캡처 추적, 푸시(Push)와 풀(Pull) 방식의 데이터 전달 방식 등 여러 문제 요소를 고려해야 한다. CDC는 느린 변경 차원(SCD)과 유사하게 데이터 변화를 감지하는 데 사용될 수 있으며, 델타 기반 데이터 세트에 이상적이다.

더 읽어볼만한 페이지

  • 컴퓨터 데이터 - 헤더 (컴퓨팅)
    헤더는 전자 통신, 네트워킹, 파일 형식, 프로그래밍 등 다양한 분야에서 데이터의 전송 및 처리에 필요한 정보를 제공하는 정보의 집합이다.
  • 컴퓨터 데이터 - 데이터 손실
    데이터 손실은 절차적 요인, 인적 행위, 시스템 실패, 자연 재해, 범죄 등 다양한 원인으로 발생하며, 금전적 손실과 평판 손상 등 심각한 결과를 초래하므로 강력한 암호, 이중 인증, 정기적인 백업 등의 예방 조치가 중요하다.
  • 데이터 관리 - 데이터 센터
    데이터센터는 컴퓨터 시스템 및 관련 장비와 지원 인프라를 수용하는 시설로, 기술 발전에 따라 규모와 중요성이 확대되었으며, 에너지 효율과 보안을 고려하여 설계 및 운영되고, TIA-942 표준에 따른 티어 분류와 친환경 기술 도입이 이루어지고 있다.
  • 데이터 관리 - 정보 아키텍처
    정보 아키텍처는 정보 시스템 및 정보 기술 분야에서 공유 정보 환경의 구조적 설계를 의미하며, 웹사이트, 소프트웨어 등의 구성과 레이블링을 포함하여 검색 용이성과 사용성을 지원하고, 도서관정보학에 기원을 두고 있다.
변경 데이터 캡처
변경 데이터 캡처(CDC)
유형데이터 통합, 데이터베이스 기술
설명데이터베이스 변경 사항을 추적하고 캡처하는 기술
목표다운스트림 시스템에 데이터 변경 사항을 실시간 또는 거의 실시간으로 전달
사용 사례데이터 웨어하우징, 감사, 데이터 복제
이점낮은 대기 시간
변경 사항만 전송하여 네트워크 트래픽 감소
데이터 일관성 유지
단점복잡한 구성 및 관리
데이터베이스 성능에 미치는 영향 고려 필요
기술적 접근 방식
로그 기반 CDC데이터베이스 트랜잭션 로그를 분석하여 변경 사항 캡처
트리거 기반 CDC데이터베이스 테이블에 트리거를 생성하여 변경 사항 캡처
쿼리 기반 CDC주기적으로 데이터베이스 테이블을 쿼리하여 변경 사항 감지
아키텍처
소스 데이터베이스변경 사항을 캡처할 데이터베이스
CDC 엔진변경 사항을 캡처하고 변환하는 소프트웨어 구성 요소
대상 시스템캡처된 변경 사항을 적용할 시스템 (데이터 웨어하우스, 다른 데이터베이스 등)
고려 사항
데이터 일관성변경 사항이 대상 시스템에 정확하고 일관성 있게 적용되도록 보장
성능 영향CDC가 소스 데이터베이스 성능에 미치는 영향을 최소화
확장성증가하는 데이터 볼륨과 처리량 요구 사항을 처리할 수 있도록 CDC 솔루션 확장

2. 방법론

변경 데이터 캡처(CDC) 메커니즘은 시스템 개발자가 다양한 방식으로 구축할 수 있다. 구현 위치는 애플리케이션 로직부터 물리적 스토리지에 이르기까지 여러 시스템 계층 중 하나 이상이 될 수 있다.

가장 기본적인 CDC 환경은 두 개의 컴퓨터 시스템을 가정한다. 한 시스템(소스, source)은 특정 시점 이후 변경된 데이터를 가지고 있고, 다른 시스템(타겟, target)은 이 변경된 데이터를 기반으로 특정 동작을 수행해야 한다. 소스와 타겟 시스템은 물리적으로 동일한 시스템일 수도 있지만, 이는 논리적인 설계 패턴을 바꾸지는 않는다. 또한, 하나의 시스템 내에 여러 종류의 CDC 솔루션이 함께 존재할 수도 있다.

구체적인 변경 데이터 캡처 방식으로는 로우(Row) 기반, 트리거(Trigger) 기반, 로그 스캐너(Log Scanner) 기반 등 다양한 접근법이 있으며, 각 방식은 서로 다른 장단점을 가진다.

2. 1. 로우(Row) 기반 변경 캡처

테이블의 각 로우(행) 단위로 데이터 변경 사항을 추적하는 방식이다.

변경 사항을 추적해야 하는 테이블에 마지막 변경 시간을 기록하는 컬럼을 두는 방법이 있다. LAST_UPDATELAST_MODIFIED와 같은 이름이 주로 사용된다. 마지막으로 데이터를 가져간 시점 이후의 타임스탬프를 가진 로우는 변경된 것으로 간주한다. 이러한 타임스탬프 컬럼은 낙관적인 잠금(optimistic locking)에도 자주 활용된다.

데이터베이스 설계자는 변경 감지가 필요한 테이블에 버전 번호를 관리하는 컬럼을 추가하기도 한다. VERSION_NUMBER 같은 이름이 일반적이다. 이 방식은 변경되는 각 로우에 특정 버전 번호를 부여하고, 테이블 또는 테이블 그룹 전체의 현재 버전을 별도로 관리한다(예: 참조 테이블). 변경 감지 시점에는 가장 최신 버전 번호를 가진 데이터를 변경된 것으로 식별한다. 감지가 완료되면, 참조 테이블의 버전 번호를 새로운 번호로 업데이트한다. (이 방식은 낙관적인 잠금에 사용되는 행 수준 버전 관리와는 다르다. 낙관적 잠금에서는 각 행이 독립적인 버전 번호를 가지지만, 변경 데이터 캡처에서는 일반적으로 테이블 또는 그룹 단위의 버전을 사용한다.)

로우의 변경 여부를 직접 표시하는 상태 컬럼을 사용하는 방법도 있다. 예를 들어, 특정 상태 값을 가진 로우만 변경 대상으로 삼거나, 타임스탬프나 버전 번호가 최신이더라도 특정 상태의 로우는 대상 시스템에 업데이트하지 않도록 지정할 수 있다. 이는 타임스탬프나 버전 번호 방식의 대안이 되거나 보완하는 역할을 한다.

실제 시스템에서는 이러한 방법들을 조합하여 사용하기도 한다. 타임스탬프, 버전 번호, 상태 컬럼을 함께 사용하면 "버전 2.1 중에서 특정 기간(예: 2005년 6월 1일 00:00 ~ 2005년 7월 1일 00:00) 사이에 변경되었고, 상태 코드가 '운영 반영 가능'인 데이터만 가져오기"와 같이 더 정교한 변경 감지 로직을 구현할 수 있다. 이러한 조합은 강력한 메커니즘을 제공하며, 세 가지 요소는 서로 보완적이다.

2. 2. 트리거(Trigger) 기반 변경 캡처

트리거 기반 변경 캡처는 변경된 데이터를 여러 대상 시스템에 전달하기 위해 퍼블리시/서브스크라이브 패턴을 활용할 수 있는 방법이다. 이 방식에서는 트리거를 사용하여 원본 데이터베이스의 트랜잭션 테이블에서 발생하는 변경 이벤트를 감지하고 기록한다.

예를 들어, 'Accounts'라는 테이블이 있다고 가정하면, 이 테이블에 데이터 삽입, 수정, 삭제 등의 트랜잭션이 발생할 때 미리 정의된 트리거가 자동으로 실행된다. 이 트리거는 발생한 이벤트의 종류(Operation), 변경된 행의 식별자(RowId), 변경 시간(TimeStamp) 등 관련 정보를 별도의 '큐(Queue) 테이블'에 저장한다. 이 큐 테이블은 다음과 같은 필드를 포함하는 스키마를 가질 수 있다.

필드 이름설명
Id이벤트 고유 식별자
TableName변경이 발생한 테이블 이름 (예: Accounts)
RowId변경된 행의 기본 키 또는 식별자
TimeStamp변경이 발생한 시간
Operation변경 종류 (예: Insert, Update, Delete)



예시 데이터는 `1, Accounts, 76, 2008-11-02 00:15, Update` 와 같은 형태가 될 수 있다. 더 복잡한 설계에서는 변경된 실제 데이터 값 자체를 큐 테이블에 기록하기도 한다.

이렇게 큐 테이블에 기록된 변경 내역은 대상 시스템에서 주기적으로 확인하거나, 소스 시스템이 능동적으로 전달하여 데이터를 복제하는 데 사용된다. 대상 시스템은 큐 테이블의 정보를 순서대로 "재생(play back)"함으로써 소스 시스템의 변경 사항을 자신의 데이터에 반영할 수 있다.

이러한 트리거 기반 방식의 한 예로 로그 트리거 패턴이 있다. 시스템 개발자는 애플리케이션 로직부터 물리적 저장소에 이르기까지 다양한 시스템 계층에서 CDC 메커니즘을 구현할 수 있다.

단순화된 CDC 상황에서, 변경된 데이터를 가진 시스템을 '소스(Source)', 이 데이터를 기반으로 작업을 수행해야 하는 시스템을 '대상(Target)'이라고 부른다. 소스와 대상은 물리적으로 동일한 시스템일 수도 있지만, 논리적인 역할은 구분된다.

2. 3. 로그 스캐너(Log Scanner) 기반 변경 캡처

대부분의 데이터베이스 관리 시스템은 데이터베이스 내용과 메타데이터의 변경 사항을 기록하는 트랜잭션 로그를 관리한다. 로그 스캐너 기반 변경 데이터 캡처는 이 트랜잭션 로그의 내용을 해석하여, 데이터베이스에 직접적인 영향을 최소화하면서 변경된 데이터를 포착하는 방식이다.

트랜잭션 로그 파일을 기반으로 하는 변경 데이터 캡처(CDC) 방식은 다음과 같은 장점을 가진다.

  • 데이터베이스 영향 최소화: 특히 로그 처리를 위한 별도의 호스트를 사용하는 경우(로그 시핑/log shipping) 데이터베이스 운영에 미치는 영향을 크게 줄일 수 있다.
  • 애플리케이션 수정 불필요: 데이터베이스를 사용하는 기존 애플리케이션의 코드를 변경할 필요가 없다.
  • 낮은 레이턴시: 변경 사항이 발생했을 때 비교적 빠르게 감지하여 획득할 수 있다.
  • 트랜잭션 무결성: 로그 스캔을 통해 원본 트랜잭션이 커밋된 순서대로 변경 스트림을 생성할 수 있다. 이 변경 스트림에는 해당 트랜잭션에 포함된 모든 테이블의 변경 내용이 포함된다.
  • 데이터베이스 스키마 변경 불필요: CDC 구현을 위해 기존 테이블 구조를 변경할 필요가 없다.


하지만 트랜잭션 로그를 이용하는 방식에는 몇 가지 어려움과 과제가 존재한다.

  • 표준 부재 및 DBMS 종속성: 트랜잭션 로그의 구조, 내용, 접근 방식은 특정 데이터베이스 관리 시스템에 종속적이다. 데이터 접근 기술(예: SQL)과 달리 트랜잭션 로그에는 표준화된 규격이 없다. 대부분의 데이터베이스 업체는 자사 로그의 내부 형식을 상세히 공개하지 않는 경우가 많으며, 오라클, DB2, SQL/MP, SQL/MX, SQL 서버 등 일부 시스템만이 로그 접근을 위한 프로그래밍 인터페이스(API)를 제공한다. 이러한 종속성은 특정 DBMS 기술에 묶이는 결과를 초래할 수 있으며, 다양한 데이터베이스 환경을 포괄적으로 지원하는 데 제약이 된다.
  • 기술적 과제:
  • 실시간 로그 읽기와 주기적인 로그 파일 보관(아카이브) 작업 간의 조율 문제.
  • 로그에 기록된 물리적 저장 형식(예: 최소한의 버퍼 차이)을 사용자가 이해하고 활용하기 쉬운 논리적 데이터 형식으로 변환하는 문제.
  • 데이터베이스 관리 시스템 버전이 업그레이드될 때 발생할 수 있는 로그 형식 변경에 대응하는 문제.
  • 로그에는 기록되었으나 최종적으로는 롤백 처리되어 반영되지 않은 변경 내용을 식별하고 제외하는 문제.
  • 데이터베이스 내 테이블 구조, 즉 메타데이터의 변경 사항을 추적하고 처리하는 문제.


이러한 문제점들을 고려할 때, 특정 DBMS에 대한 의존성을 낮추고 다양한 시스템 환경에서 유연하게 변경 데이터를 활용하기 위해서는 개방형 표준에 기반한 로그 처리 기술의 발전이 중요한 과제로 남아있다.

3. 문제 요소

변경 데이터 캡처(CDC) 시스템 구축 및 운영은 복잡한 문제들의 균형을 맞추는 과정이다. 시스템 개발자는 애플리케이션 로직부터 물리적 스토리지에 이르기까지 다양한 방식과 시스템 계층을 조합하여 CDC 메커니즘을 설정할 수 있다.

특히 트랜잭션 로그 기반 CDC 방식은 여러 장점에도 불구하고 다음과 같은 기술적 어려움이 있다.


  • '''표준 부재 및 데이터베이스 관리 시스템(DBMS) 종속성''': 트랜잭션 로그의 구조, 내용, 사용 방식은 DBMS마다 다르며 표준화되어 있지 않다. 대부분의 DBMS는 로그의 내부 형식을 공개하지 않아 특정 시스템에 종속적인 해결책이 필요하다. 일부 DBMS(예: 오라클, DB2, SQL/MP, SQL/MX, SQL Server 2008 등)는 로그 접근을 위한 프로그래밍 인터페이스를 제공하기도 하지만, 이것이 모든 시스템에 적용되는 것은 아니다.
  • '''로그 관리의 복잡성''': 트랜잭션 로그를 읽는 작업과 DBMS가 주기적으로 로그 파일을 오프라인 저장소로 보관(아카이빙)하는 작업을 효과적으로 조율해야 한다.
  • '''데이터 형식 변환 문제''': 트랜잭션 로그에는 종종 물리적인 저장 형식(예: 최소한의 버퍼 차이)으로 데이터가 기록된다. 이를 변경 데이터를 소비하는 시스템이 이해하고 활용할 수 있는 논리적인 데이터 형식으로 변환하는 과정이 필요할 수 있다.
  • '''DBMS 버전 간 호환성 문제''': DBMS 버전이 업그레이드될 때 트랜잭션 로그의 형식이 변경될 수 있으며, CDC 솔루션은 이러한 변화에 대응할 수 있어야 한다.
  • '''롤백된 트랜잭션 처리''': 로그에는 기록되었지만 최종적으로 커밋되지 않고 롤백된 변경 사항들이 포함될 수 있다. CDC 시스템은 이러한 커밋되지 않은 변경 사항을 식별하고 결과에서 제외해야 한다.
  • '''메타데이터 변경 처리''': 데이터베이스 테이블의 구조(스키마) 변경과 같은 메타데이터 변경 사항이 발생했을 때, 이를 올바르게 해석하고 CDC 프로세스에 반영하는 것이 어려울 수 있다.


따라서 효과적인 CDC 솔루션을 구현하려면 이러한 기술적 과제들을 신중하게 고려하고 해결해야 한다.

3. 1. 부적절한 소스 시스템

변경 데이터 캡처는 소스 시스템이 데이터 자체는 변경하지 않고 메타데이터 변경 사항만 저장하는 경우, 복잡도가 증가하고 그 가치가 떨어질 수 있다. 예를 들어, 일부 데이터 모델에서는 실제 데이터 수정 없이 마지막으로 데이터를 조회한 사용자를 기록하는 경우가 있는데, 이는 변경 데이터 캡처 과정에서 불필요한 변경 기록, 즉 노이즈(noise)를 발생시킨다.

3. 2. 캡처 추적

실제로 데이터 변경 사항을 추적하는 방법은 원본 데이터가 어디에 저장되어 있는지, 즉 데이터 소스에 따라 달라진다. 데이터가 현대적인 데이터베이스 시스템에 저장되어 있다면, 변경 데이터 캡처(CDC)는 주로 데이터베이스 접근 권한의 문제로 귀결된다. 이 경우 일반적으로 사용되는 두 가지 주요 기법은 다음과 같다.

만약 데이터가 현대적인 데이터베이스 시스템 외부에 존재한다면, 변경 데이터 캡처는 좀 더 복잡한 프로그래밍 문제가 된다. 시스템 개발자는 애플리케이션 로직부터 물리적인 저장 방식에 이르기까지 다양한 시스템 계층과 기술을 조합하여 CDC 메커니즘을 구축해야 한다.

단순화된 CDC 시나리오를 가정해보자. 특정 시점 이후 변경된 데이터를 가진 컴퓨터 시스템(소스)과, 이 변경된 데이터를 기반으로 어떤 작업을 수행해야 하는 다른 컴퓨터 시스템(대상)이 있다. 소스와 대상이 물리적으로 같은 시스템일 수도 있지만, 이는 CDC 설계 패턴의 논리적 구조를 바꾸지는 않는다. 하나의 시스템 내에서도 여러 CDC 솔루션이 동시에 존재할 수 있다.

변경 사항을 추적하는 몇 가지 프로그래밍적 기법은 다음과 같다.

  • 타임스탬프 활용: 변경 사항을 추적해야 하는 테이블에 각 행이 마지막으로 수정된 시간을 기록하는 열(예: `LAST_UPDATE`, `LAST_MODIFIED`)을 둔다. 마지막으로 데이터를 가져간 시점보다 최신 타임스탬프를 가진 행은 변경된 것으로 간주한다. 이 방식은 낙관적 잠금과 같은 다른 목적으로 이미 타임스탬프 열이 사용되고 있는 경우 쉽게 적용할 수 있다.
  • 버전 번호 활용: 테이블에 버전 번호를 관리하는 열(예: `VERSION_NUMBER`)을 추가한다. 각 행이 변경될 때마다 버전 번호를 부여하거나, 테이블 전체 또는 관련 테이블 그룹에 대한 현재 버전을 별도의 참조 구조(예: 참조 테이블)에 유지 관리한다. 변경 캡처 시, 참조 구조에 기록된 마지막 버전 이후의 버전 번호를 가진 데이터를 변경된 것으로 간주하고, 캡처가 완료되면 참조 구조의 버전을 최신으로 업데이트한다. (단, 이는 각 행마다 독립적인 버전 번호를 사용하는 낙관적 잠금의 행 수준 버전 관리와는 다른 개념이다. CDC에서 행 수준 버전을 사용하려면 모든 행의 초기 버전을 알아야 하는데, 이는 현실적으로 관리가 어렵다.)
  • 상태 플래그 활용: 테이블 행에 변경 여부를 나타내는 상태 열(예: 변경 시 `true`로 설정되는 불리언 열)을 두어 변경된 행을 식별한다. 이 방식은 타임스탬프나 버전 번호 방식과 함께 사용될 수도 있다. 예를 들어, 최신 타임스탬프나 버전 번호를 가졌더라도 상태 플래그가 특정 조건(예: '검증 필요')을 나타내면 대상 시스템에서 즉시 업데이트하지 않도록 제어할 수 있다.
  • 조합 방식: 위에서 언급된 타임스탬프, 버전 번호, 상태 플래그 방식을 조합하여 사용하는 것은 특히 강력한 변경 추적 메커니즘을 제공한다. 세 요소는 서로 보완적이며, 함께 사용하면 "상태 코드가 '운영 준비 완료'이고, 버전 2.1이며, 2005년 6월 1일 0시부터 2005년 7월 1일 0시 사이에 변경된 모든 데이터 캡처"와 같이 매우 구체적인 조건으로 변경 데이터를 식별할 수 있다.

트리거를 이용한 큐 테이블 방식데이터베이스 트리거는 변경 데이터를 여러 대상 시스템으로 전달하는 데 사용될 수 있다. 이 방식에서는 특정 테이블(예: 계정 테이블)에서 데이터 변경(삽입, 수정, 삭제)이 발생할 때마다 트리거가 작동하여, 해당 이벤트에 대한 정보(또는 변경된 데이터 자체)를 별도의 '큐(Queue) 테이블'에 기록한다. 이 큐 테이블은 나중에 변경 내역을 순서대로 "재생"하여 다른 시스템에 적용하는 데 사용될 수 있다.

큐 테이블의 스키마는 예를 들어 다음과 같은 필드를 가질 수 있다.

필드명설명
Id고유 식별자
TableName변경이 발생한 테이블 이름
RowId변경된 행의 식별자
Timestamp변경 발생 시각
Operation변경 작업 유형 (예: 삽입, 수정, 삭제)



예를 들어, 계정(Accounts) 테이블의 76번 행이 2008년 11월 2일 0시 15분에 수정되었다면, 큐 테이블에는 `(1, 'Accounts', 76, '2008-11-02 00:15:00', 'Update')`와 같은 데이터가 기록될 수 있다. 더 정교한 설계에서는 실제로 변경된 데이터 값 자체를 큐 테이블에 기록하기도 한다.
트랜잭션 로그 기반 방식데이터베이스의 트랜잭션 로그를 직접 읽어 변경 사항을 캡처하는 방식도 널리 사용된다. 이 방식은 다음과 같은 뚜렷한 장점을 가진다.


  • 데이터베이스 영향 최소화: 특히 로그 파일을 별도의 전용 호스트로 전송하여 처리하는 경우, 원본 데이터베이스 시스템에 주는 부하가 매우 적다.
  • 애플리케이션 수정 불필요: 데이터베이스를 사용하는 기존 애플리케이션 코드를 변경할 필요가 없다.
  • 낮은 지연 시간: 변경 사항이 로그에 기록되는 즉시 감지할 수 있어 실시간 데이터 동기화에 유리하다.
  • 트랜잭션 무결성 보장: 로그 스캔을 통해 원본 트랜잭션이 커밋된 순서대로 변경 스트림을 생성하고 재생할 수 있으며, 단일 트랜잭션에 포함된 여러 테이블의 변경 사항을 일관성 있게 처리할 수 있다.
  • 데이터베이스 스키마 변경 불필요: 추적을 위해 테이블 구조를 변경할 필요가 없다.


하지만 트랜잭션 로그 기반 CDC는 몇 가지 기술적인 어려움도 안고 있다.

  • 표준 부재 및 DBMS 종속성: 데이터 접근 방식과 달리 트랜잭션 로그의 구조, 내용, 사용 방식은 데이터베이스 관리 시스템(DBMS)마다 다르며 표준화되어 있지 않다. 대부분의 DBMS는 로그의 내부 형식을 공개하지 않지만, 일부(예: 오라클, DB2, SQL/MP, SQL/MX, SQL Server 2008)는 로그 접근을 위한 프로그래밍 인터페이스를 제공하기도 한다.
  • 로그 관리의 복잡성: 로그 파일을 읽는 작업과 데이터베이스 시스템이 주기적으로 로그 파일을 보관(아카이빙)하는 작업을 조율해야 한다.
  • 데이터 형식 변환: 트랜잭션 로그에는 물리적인 저장 형식(예: 버퍼 변경 내역)으로 기록되는 경우가 많아, 이를 애플리케이션에서 사용하기 쉬운 논리적인 데이터 형식으로 변환해야 할 수 있다.
  • DBMS 버전 간 호환성: DBMS 버전이 업그레이드될 때 로그 형식이 변경될 수 있어 이에 대한 대응이 필요하다.
  • 롤백된 트랜잭션 처리: 로그에는 기록되었지만 최종적으로 커밋되지 않고 롤백된 변경 사항을 식별하고 제외해야 한다.
  • 메타데이터 변경 처리: 테이블 구조(스키마) 변경과 같은 메타데이터 변경 사항을 올바르게 해석하고 처리해야 한다.

3. 3. 푸시(Push) vs. 풀(Pull)

변경 데이터 캡처(CDC)는 데이터 변경 사항을 감지하고 이를 다른 시스템이나 프로세스로 전달하는 기술이다. 데이터를 전달하는 방식은 크게 '''푸시'''(Push)와 '''풀'''(Pull) 방식으로 나눌 수 있다.

단순화된 CDC 상황에서, 변경된 데이터를 가진 시스템을 '''소스'''(Source)라고 하며, 이 변경된 데이터를 받아 처리해야 하는 시스템을 '''대상'''(Target)이라고 한다. 소스와 대상은 논리적인 개념이며, 물리적으로 동일한 시스템일 수도 있다.

  • '''푸시'''(Push): 소스 시스템(프로세스)이 자체적으로 변경 데이터의 스냅샷을 생성하여 대상 시스템(다운스트림 프로세스)으로 직접 전달하는 방식이다. 대상 시스템은 전달받은 스냅샷을 사용하고, 필요한 경우 이를 가공하여 또 다른 대상 시스템으로 전달할 수 있다.
  • '''풀'''(Pull): 대상 시스템(소스 바로 다음의 다운스트림 타겟)이 소스 시스템에게 변경된 데이터 제공을 요청하는 방식이다. 소스 시스템은 요청에 따라 데이터를 전달하며, 대상 시스템은 이 데이터를 받아 처리한다. 푸시 방식과 마찬가지로, 대상 시스템은 받은 스냅샷을 다음 대상 시스템에 전달할 수 있다.


시스템 개발자는 애플리케이션 로직에서 물리적 스토리지에 이르기까지 다양한 방식과 시스템 계층의 조합으로 CDC 메커니즘을 설정할 수 있다.

4. 대안

느린 변경 차원(SCD) 모델 예시


변경 데이터 캡처(CDC)의 대안으로 느린 변경 차원(Slowly Changing Dimension, SCD)을 사용하는 경우가 있다.[1][2] CDC와 SCD는 데이터 세트의 변화를 감지할 수 있다는 점에서 유사하다.

SCD의 가장 일반적인 유형은 다음과 같다.

  • 유형 1: 기존 데이터를 새 데이터로 덮어쓴다.
  • 유형 2: 데이터 변경 이력을 모두 유지한다.
  • 유형 3: 이전 값과 현재 값만 유지한다.


특히 대상 시스템에서 데이터 변경 이력을 관리해야 할 필요가 있을 때 SCD 유형 2가 유용하게 사용될 수 있다. 반면, CDC는 대상 시스템의 데이터를 덮어쓰는 방식(SCD 유형 1과 유사)을 사용하며, 변경된 데이터만을 대상 시스템에 전달해야 하는 경우, 즉 '델타 기반 데이터 세트' 처리에 더 적합하다.

참조

[1] 서적 4ggg Rty
[2] 서적 4ggg Rty



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com