O Change Data Capture do SQL Server é um recurso que lê dados históricos dos logs de transações do SQL Server e os armazena em uma tabela especial.
Com o uso de funções especiais de valor de tabela (TVF), ele permite que o usuário consulte esses dados, possibilitando obter todas as alterações em uma tabela específica ou apenas as alterações líquidas resultantes das alterações em um período específico.
CDC tem certas vantagens
- Ele pode ser configurado para rastrear apenas determinadas tabelas ou colunas.
- É capaz de lidar com alterações de modelo até um certo grau.
- Ele não afeta o desempenho tanto quanto os gatilhos, porque trabalha com os logs de transações.
- É facilmente ativado / desativado e não requer colunas adicionais na tabela que devem ser rastreadas.
Também tem algumas desvantagens:
- A quantidade de dados do histórico pode se tornar enorme rapidamente.
- Você não pode rastrear quem fez as alterações (pelo menos não para exclusões).
- Os dados do histórico levam algum tempo para serem atualizados, porque são baseados nos logs de transações.
- Depende do SQL Server Agent. Se o agente não estiver em execução ou travar, nenhum histórico será rastreado.
Eu li bastante sobre o CDC e, embora agora saiba como usá-lo, ainda não tenho certeza se é a ferramenta certa para mim.
- Para quais tarefas / cenários o CDC é a ferramenta certa? (por exemplo, permitir que os usuários restaurem um objeto de dados em um determinado momento? Auditoria? Mostrando o histórico completo dos dados?)
- Quando você prefere não usar o CDC, mas recorrer a uma solução personalizada baseada em acionador?
- É bom usar o CDC em um banco de dados operacional e usar os dados do CDC em um aplicativo operacional? (por exemplo, mostrá-lo ao usuário final) Ou isso é claramente um mau uso desse recurso?
Normalmente, ouço dizer que o CDC é uma ferramenta de auditoria, mas não é para isso que serve a Auditoria do SQL Server ? Ambas são ferramentas diferentes para a mesma tarefa? Ou o CDC pode ser usado para outras coisas?
Meu cenário atual é que me pedem para criar uma estrutura de dados confiável, que supostamente seja a base para vários aplicativos futuros. Os requisitos exatos são embaçados, mas um é que ele deve ser capaz de rastrear o histórico de dados e restaurar entradas mais antigas, juntamente com todos os dados relacionados de outras tabelas. Estou avaliando o CDC agora como uma opção, mas não tenho certeza se esse é o caminho a seguir, porque não consigo encontrar nenhum caso de uso recomendado.
Embora eu aprecie conselhos para o meu cenário específico, as respostas devem fornecer conselhos gerais sobre quando ou quando não usar o Change Data Capture.