Cuando se trabaja en un proyecto de Big Data, a menudo es necesario rastrear y capturar los cambios realizados en las tablas de la base de datos. Esto permite cargar eficientemente los datos en un almacén de datos, ya que solo se cargan los datos modificados. En SQL Server, hay dos opciones disponibles para rastrear cambios: Captura de Datos de Cambio (CDC) y Seguimiento de Cambios (CT).
Captura de Datos de Cambio (CDC)
CDC es una característica introducida en la edición Enterprise de SQL Server 2008. Realiza un seguimiento de cualquier operación de inserción, actualización o eliminación aplicada a las tablas de usuario y captura los cambios junto con metadatos como qué, cuándo y dónde se aplicaron los cambios. CDC utiliza el registro de transacciones de SQL Server como fuente de los datos modificados y los almacena en tablas del sistema que se pueden acceder fácilmente mediante consultas normales.
Para habilitar CDC, es necesario crear un grupo de archivos y un archivo de base de datos separados para alojar las tablas de cambio de CDC. Una vez habilitado, se creará un nuevo esquema y tablas del sistema en la base de datos para almacenar los cambios capturados. CDC se puede habilitar por tabla, lo que le permite rastrear y capturar cambios solo en las tablas que necesita.
Cuando se realiza un cambio en una tabla rastreada, CDC escribe el cambio en una tabla de captura. La columna _$operation en la tabla de captura indica el tipo de operación DML realizada (1 para DELETE, 2 para INSERT, 3 para el valor antes de una actualización y 4 para el valor después de una actualización). Al consultar la tabla de captura, puede recuperar fácilmente los datos modificados.
Seguimiento de Cambios (CT)
CT es una solución de seguimiento ligera introducida en SQL Server 2008. Captura que una fila en una tabla ha cambiado sin capturar los datos reales que se cambiaron o mantener datos históricos. CT funciona en todas las ediciones de SQL Server y utiliza un mecanismo de seguimiento síncrono para rastrear cambios en las tablas.
A diferencia de CDC, CT solo proporciona información sobre la clave principal del registro modificado. Para obtener los nuevos datos después de un cambio, es necesario unir la tabla de origen con la tabla de seguimiento utilizando el valor de la clave principal. CT se habilita a nivel de base de datos y se puede habilitar por tabla.
CT es útil cuando solo necesita saber que se ha producido un cambio y no requiere los datos modificados reales. Tiene un mínimo sobrecarga de almacenamiento y es adecuado para escenarios donde no es necesario tener datos históricos.
Conclusión
Tanto CDC como CT ofrecen opciones para rastrear y capturar cambios en las bases de datos de SQL Server. La elección entre los dos depende de sus requisitos específicos y consideraciones como el rendimiento del sistema, la carga de E/S y el almacenamiento disponible. Se recomienda probar estos métodos en un entorno de desarrollo con una carga pesada para determinar su idoneidad para su situación.
Enlaces útiles: