본문 바로가기

Database/MSSQL

[MSSQL] CDC(Change Capture Data) in SQL Server

 

MS SQL 에서 활용하는 CDC(Change Capture Data) 활용하는 방법에 대하여 정리합니다.

 


개요

CDC란 INSERT, UPDATE 및 DELETE 작업와 같은 테이블 변경 작업을 식별하여 추적하는 기술입니다.

주로 실시간성 스트리밍 데이터에 활용되는 기술이며, 대용량 데이터에서도 활용하면 리소스를 절약할 수 있습니다.

 

 

SQL Server 에는 2008 에 처음 도입되었습니다.
SQL Agent를 통해 테이블 변경이 있을 때마다 프로시저를 트리거하는 방식으로 구현되었습니다.

SQL Server 2016 에는 위 기능이 SQL Agent을 사용하지 않고 간단히 설정할 수 있도록 업데이트 되었습니다.

 

두 버전 모두 테이블 단위로 CDC가 설정되고 해당 설정이 켜진 테이블은 Temporal Table(History table)이 생성됩니다.

테이블의 변경이 생기면 Temporal Table에 변경 이력이 남습니다. 

 

* 주의 *
Managed Service는 가격이 굉장히 비쌉니다. 24시간으로 서비스를 유지하기 때문인 것 같습니다.

ADF에 있는 CDC도 RDB의 아래 기술을 활용한 기능입니다.
Managed Service를 사용하지 않고 아래와 같이 구현하여 메뉴얼로 트리거하여 활용하는 것을 추천합니다.

 

구현

구현 방법은 Hisotry Table을 설정해주면 됩니다.

alter table [TableName]
set (system_versioning = on (HISTORY_TABLE = [TableName]));

 

 

해당 설정 후에 아래와 같이 확인할 수 있습니다.

아래 History 테이블은 다른 테이블과 동일하게 조작할 수 있습니다.

 

 

 



Ref.

01. [Docs] https://learn.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables?view=sql-server-ver16

02. [Docs] https://learn.microsoft.com/en-us/azure/azure-sql/database/change-data-capture-overview?view=azuresql

03. [Blog] https://quiz12.tistory.com/89
04. [Blog] https://itequia.com/en/table-versioning-in-sql-server-what-is-it-and-how-does-it-work/

05. [Blog] https://burning-dba.tistory.com/75

'Database > MSSQL' 카테고리의 다른 글

[MSSQL] Query로 XML 파싱하기  (0) 2024.05.01
[MSSQL] View와 SP에 참조되는 테이블 확인하기  (0) 2024.04.12
[MSSQL] sys 함수 정리  (0) 2023.11.20