Change data capture
Copiar cada alta, cambio y baja de una base de datos a otros sistemas en el momento.
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.
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)
- Debezium (plataforma open source de CDC, en inglés)
- Change data capture en Wikipedia (en inglés)