CDC – Parte 01

“O Change Data Capture foi projetado para capturar inserções, atualizações e excluções aplicadas em tabelas do SQL Server e disponibilizar os detalhes das mudanças disponíveis em um formato relacional facilmente consumível.

As tabelas de alterações usadas pelo Change Data Capture contêm colunas que refletem a estrutura de colunas de uma tabela de origem controlada, junto com os metadados necessários para entender as mudanças ocorridas.” (Microsoft Books Online)

O Change Data Capture ou CDC atua nas tabelas selecionadas de um banco de dados específico como uma trigger before que dispara as inserções e/ou alterações realizadas no objeto para o qual ela está apontada em uma outra tabela.

A grande diferença é que a trigger usa a mesma transação realizada na tabela original para espelhar essa alteração em uma outra tabela (trabalha de forma Síncrona), podendo causar uma série de problemas para o sistema transacional (entre eles block/lock, overhead dentre outros). 

Neste ponto o Change Data Capture atua de maneira a não prejudicar o sistema transacional, realizando a captura das alterações da tabela através dos registros salvos dentro do arquivo de LOG do SQL Server após a transação original ser concluída (trabalha de maneira Assíncrona).

arquitetura_cdc

O CDC, conforme representado através da imagem que demonstra a arquitetura da feature, é geralmente utilizado para captura de dados históricos a serem usados para ambiente de Data Warehouse e/ou Operational Data Store (ODS)

Para conseguir exemplificar a sua utilização, imagine um sistema onde ocorrem várias alterações em um mesmo registro durante o dia, porém a carga de dados do DW e/ou ODS ocorre uma vez ao dia. O que ocorreria é que somente a ultima alteração desse registro seria levada para o Sistema histórico. 

O CDC atuaria, nesse caso, como um armazém de dados voláteis e momentâneos transacional utilizado para carga do armazém de dados não voláteis dimensional.


Antes de iniciarmos os testes com o Change Data Capture, será necessário que criemos o ambiente de teste.

Como base de dados relacional, usaremos dentro do SQL Server 2014 o banco de dados AdventureWorks2014

Como stage de dados (passo anterior à carga de um ODS ou DW) usaremos uma base de dados que deverá ser construída com o script abaixo:

-- =========================================
-- ------ Create Stage Enviromment ---------
-- =========================================

USE master
GO

CREATE DATABASE AdventureWorks_Stage
GO

USE AdventureWorks_Stage
GO

CREATE TABLE [dbo].[Person](
 [BusinessEntityID] INT NOT NULL,
 [PersonType] NCHAR(2) NOT NULL,
 [NameStyle] BIT NOT NULL CONSTRAINT [DF_Person_NameStyle] DEFAULT ((0)),
 [Title] NVARCHAR(8) NULL,
 [FirstName] NVARCHAR (50) NOT NULL,
 [MiddleName] NVARCHAR (50) NULL,
 [LastName] NVARCHAR (50) NOT NULL,
 [Suffix] NVARCHAR (10) NULL,
 [EmailPromotion] INT NOT NULL CONSTRAINT [DF_Person_EmailPromotion] DEFAULT ((0)),
 [rowguid] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL CONSTRAINT [DF_Person_rowguid] DEFAULT (newid()),
 [ModifiedDate] DATETIME NOT NULL CONSTRAINT [DF_Person_ModifiedDate] DEFAULT (getdate()),
 [ModifiedType] CHAR(1) NOT NULL

) ON [PRIMARY]
GO

No próximo post da série você aprenderá a criar, habilitar e/ou verificar sua existência em tabelas localizadas dentro de uma base de dados específica.  

2 comentários sobre “CDC – Parte 01

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s