# Change data capture

> Copiar cada alta, cambio y baja de una base de datos a otros sistemas en el momento.

- Nivel: Avanzado
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/change-data-capture/
- En inglés: [Change data capture](https://tidbit.legios.com.ar/change-data-capture/)

El **change data capture**, o **CDC** (captura de cambios de datos), es una técnica para detectar cada cambio que se hace en una base de datos y mandarlo a otro lado casi en tiempo real. En lugar de copiar una tabla entera todas las noches, el CDC manda solo lo que cambió: un pedido nuevo, un precio actualizado, un cliente borrado, cada uno como un evento chiquito.

El método más común lee el log de transacciones de la propia base. Bases como PostgreSQL y MySQL ya escriben cada cambio en un log antes de aplicarlo, para recuperarse de caídas y para replicar. Una herramienta de CDC como **Debezium** o AWS Database Migration Service va leyendo ese log y convierte cada entrada en un evento, que en general se publica en un stream. Los enfoques más viejos usan triggers o buscan cada tanto filas con un `updated_at` reciente, pero cargan más a la base y se les pueden escapar los borrados.

El CDC es lo que permite que un data warehouse esté a minutos de la base de producción en vez de a un día, que un índice de búsqueda o una caché queden sincronizados con la fuente de verdad, y que una base se migre casi sin cortes. Lo delicado es el orden, porque los eventos se tienen que aplicar en la secuencia en que pasaron, los cambios de estructura en el origen, y la primera copia completa que hay que hacer antes de empezar a transmitir cambios encima.

## Una analogía

Como seguir el historial de cambios de un documento compartido en vez de bajarte el documento entero cada hora: recibís solo las líneas que cambiaron, en orden, apenas cambian.

## Para quedarse

- Manda cada alta, cambio y baja como un evento, no tablas enteras.
- En general lee el log de transacciones de la base, así que la carga poco.
- Mantiene warehouses, cachés e índices de búsqueda casi en tiempo real.
- El orden, los cambios de estructura y la copia inicial piden cuidado.

## Para seguir leyendo

- [¿Qué es la captura de datos de cambios? (AWS)](https://aws.amazon.com/es/what-is/change-data-capture/)
- [Debezium (plataforma open source de CDC, en inglés)](https://debezium.io/)
- [Change data capture en Wikipedia (en inglés)](https://en.wikipedia.org/wiki/Change_data_capture)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [PostgreSQL](https://tidbit.legios.com.ar/es/postgresql/): Una base de datos relacional gratuita y de código abierto detrás de muchísimas apps.
- [MySQL](https://tidbit.legios.com.ar/es/mysql/): La base de datos relacional open source que movió la web temprana y sigue en todos lados.
- [Data warehouse](https://tidbit.legios.com.ar/es/data-warehouse/): Una base hecha para analizar: años de historia, de muchas fuentes, en un solo lugar.
- [Índice de base de datos](https://tidbit.legios.com.ar/es/database-index/): Un atajo ordenado para que la base encuentre filas sin leer toda la tabla.
- [Caché](https://tidbit.legios.com.ar/es/caching/): Guardar una copia de una respuesta a mano para no tener que calcularla de nuevo.
