En bases de datos, las CDC (Change Data Capture) son patrones de diseño software que se emplean para capturar cambios que se producen en los datos y propagarlos a clientes intermedios. Normalmente se emplean en entornos de data-warehouse, para preservar el estado de los datos a lo largo del tiempo, o se emplean también en soluciones en las que hay que mantener un conjunto de bases de datos heterogéneo, ya que las CDC producen el mismo formato de salida independientemente de cuál sea la base de datos origen del registro.
Descarga este nuevo paper gratuito
Existen varias soluciones de CDC: Maxwell, SpinalTap, Yelp’s MySQL Streamer, Debezium, DBLog…
Nos centraremos en una de estas soluciones, que a nuestro punto de vista es la más simple de utilizar: Debezium
Debezium es una herramienta que realiza funciones de CDC (Change Data Capture) proporcionando una plataforma de streaming de datos de baja latencia para capturar cambios en los datos. Reutiliza las herramientas Kafka y Kafka Connect, con lo que consigue agregar varias conexiones de bases de datos y que todos los eventos queden bien ordenados para que varios clientes puedan consumirlos sin afectar demasiado la captura de los eventos. Posee las características comunes de una herramienta CDC. Entre ellas, destaca:
· Puede monitorizar un conjunto heterogéneo de bases de datos, produciendo una salida estandarizada independientemente de la base de datos en la que se produjo el cambio, lo que facilita bastante la administración y manejo de los cambios.
· Debezium es tolerante a fallos: si por algún motivo Debezium se detuviera, al reiniciarse registrará los cambios que se produjeron mientras estaba apagado para asegurar que todos los eventos se registran y procesan adecuadamente. Adicionalmente, agrega esta característica pero para el lado del cliente, es decir, si un cliente se desconecta del servicio, cuando se vuelva a conectar recibirá todos los eventos que sucedieron mientras estaba desconectado.
Debezium proporciona multitud de módulos para conexión con bases de datos. Algunos de ellos son genéricos, para soportar cualquier base de datos, con la desventaja de que son algo limitados; y otros son específicos de algunas bases de datos. En concreto, Debezium proporciona conectores con bases de datos MySQL, PostgreSQL, MongoDB y SQL Server. Además, se está desarrollando conectores para Oracle, Cassandra y Db2. Estos tres últimos se pueden emplear pero al estar en desarrollo, podrían estar sujetos a cambios.