View a markdown version of this page

Flujos de captura de datos de cambio - Amazon Aurora DSQL

Flujos de captura de datos de cambio

Para obtener información sobre los precios, consulte la página de precios de Aurora DSQL.

La captura de datos modificados (CDC) de Amazon Aurora DSQL transmite los cambios confirmados en la base de datos casi en tiempo real directamente a Amazon Kinesis Data Streams. Aurora DSQL envía el estado final confirmado de cada fila modificada, en forma de registro JSON estructurado, a un flujo de datos de Kinesis que usted configure.

La CDC resulta útil cuando desea:

  • Mantener sincronizados los sistemas descendentes: replicar los cambios en un índice de búsqueda, una caché, un almacenamiento de datos o un sistema de análisis sin necesidad de trabajos por lotes.

  • Crear arquitecturas basadas en eventos: activar flujos de trabajo, notificaciones o acciones de microservicios en respuesta a los cambios en la base de datos.

  • Mantener un registro de auditoría: capturar el efecto neto confirmado de cada transacción con fines de conformidad, depuración o análisis histórico.

  • Desacoplar a los productores de los consumidores: permitir que la base de datos se centre en las transacciones mientras los sistemas posteriores procesan los cambios a su propio ritmo.

Funcionamiento

Aurora DSQL lee las transacciones confirmadas, formatea el cambio de nivel de fila como un registro JSON estructurado y lo envía a un flujo de datos de Kinesis que usted configure. CDC captura automáticamente el efecto confirmado de cada INSERT, UPDATE y DELETE en todas las tablas de usuario del clúster. Aplique lógica de filtrado en sus aplicaciones posteriores utilizando los campos source.schema y source.table en cada registro de CDC para centrarse en las tablas o los cambios que necesita su aplicación.

Aurora DSQL compacta el conjunto de escritura de cada transacción antes de publicar los registros de CDC y emite un registro único para cada fila con un cambio neto, que refleja el estado final. Para obtener más información, consulte Compactación de conjuntos de escritura.

Los flujos de CDC están totalmente administrados. Aurora DSQL administra toda la infraestructura necesaria para capturar los eventos de cambio, supervisa el estado del flujo e informa del estado a través de la operación de la API GetStream y las métricas de CloudWatch.

Los flujos de CDC utilizan el modelo Traiga su propio destino. Usted crea y administra el flujo de datos de Kinesis en su cuenta y Aurora DSQL asume un rol de IAM que usted configura para que escriba registros de CDC en su nombre. Usted es responsable de la configuración de capacidad, cifrado y retención del destino. Para conocer los destinos compatibles más recientes, consulte el parámetro TargetDefinition en CreateStream en la Referencia de la API de Amazon Aurora DSQL. Para ver una lista completa de las operaciones de la API de flujos de CDC, consulte la Referencia de la API de Amazon Aurora DSQL.

Temas en esta página

Semántica de ordenación y entrega

Garantías de entrega

Aurora DSQL produce un registro de CDC para cada fila con un cambio neto en el momento de la confirmación. Para obtener más información sobre cómo Aurora DSQL compacta varias operaciones en la misma fila, consulte Compactación de conjuntos de escritura.

Aurora DSQL garantiza la entrega al menos una vez de cada registro que produce. Aurora DSQL puede entregar el mismo registro más de una vez, así que diseñe su aplicación para gestionar los duplicados. Puede identificar un duplicado comparando source.ts_ns con los valores de la clave principal: un duplicado tiene los mismos valores que la entrega original.

Ordenación

Los flujos de CDC utilizan el modo UNORDERED. En la práctica, los registros llegan en un orden de confirmación aproximado, ya que Aurora DSQL lee y publica los cambios de forma secuencial. Sin embargo, Aurora DSQL no garantiza un orden estricto. En concreto:

  • Aurora DSQL puede entregar registros de diferentes transacciones en cualquier orden.

  • Los registros de la misma clave principal procedentes de diferentes transacciones pueden llegar en un orden diferente al de confirmación.

  • Los registros de una sola transacción pueden intercalarse con registros de otras transacciones. Utilice el campo source.txId para agrupar registros por transacción cuando su flujo de trabajo lo requiera.

Cada registro de CDC incluye un campo source.ts_ns que contiene la marca de tiempo de confirmación de la transacción en nanosegundos. Utilice este campo para establecer el orden de confirmación en el lado receptor.

Estrategias de consumidor

Dado que los registros pueden llegar en un orden diferente al de confirmación y aparecer más de una vez, su aplicación debe tener en cuenta ambas situaciones.

importante

Defina una clave principal en todas las tablas que participen en la CDC. Sin una clave principal, su aplicación no podrá desduplicar registros ni correlacionar las eliminaciones con la fila afectada.

El último escritor gana (vistas materializadas, cachés)

Realice un seguimiento del valor más alto de source.ts_ns por clave principal. Deseche cualquier registro con un source.ts_ns inferior o igual al valor del que se ha realizado un seguimiento. De esta forma, se filtran tanto los duplicados como los registros desordenados y se conserva el estado más reciente para cada clave. Cuando procese una eliminación (op: "d"), almacene un registro de eliminación para la clave principal que conserve el valor de source.ts_ns en lugar de eliminar la entrada. El registro de eliminación garantiza que una inserción o actualización con un source.ts_ns anterior que llegue después de la eliminación no restaure incorrectamente la fila.

Procesamiento de todos los cambios (registro de auditorías y abastecimiento de eventos)

Elimine los duplicados comparando source.ts_ns junto con los valores de la clave principal. Almacene en búfer los registros entrantes y ordénelos por source.ts_ns antes de procesarlos para reconstruir el orden de confirmación. CDC solo entrega el estado final de cada fila por transacción confirmada (después de Compactación de conjuntos de escritura). Si su flujo de trabajo de auditoría requiere un registro para cada instrucción SQL, ejecute cada instrucción en su propia transacción.

Configuración de flujos de CDC multirregionales

Un flujo de CDC es un recurso regional. Cada flujo pertenece a una única región de AWS y envía los cambios a un flujo de datos de Kinesis en la misma región. En un clúster multirregional, un flujo de CDC en cualquier región captura las escrituras confirmadas de todas las regiones del clúster. Esto significa que solo necesita un flujo para capturar todos los cambios, independientemente del origen de la escritura. Para enviar registros de CDC a más de una región, cree un flujo independiente en cada región. Cada flujo captura de forma independiente el conjunto completo de cambios confirmados en todo el clúster.

Todos los recursos —el clúster de Aurora DSQL, el flujo de datos de Kinesis, el rol de servicio de IAM y la entidad principal de llamada— deben estar en la misma cuenta de AWS y en la misma región.

Procesamiento descendente de los registros de CDC

Una vez que los registros de CDC llegan a su flujo de datos de Kinesis, puede procesarlos directamente o enrutarlos a otros destinos mediante los servicios de integración de AWS. En la siguiente tabla se resumen los patrones de procesamiento más comunes.

Patrones de procesamiento más comunes de los registros de CDC
Pattern Funcionamiento
Consumo directo Read records from Kinesis by using the Amazon Kinesis Client Library (KCL), the AWS SDK, or a Kinesis Data Streams consumer. See Desarrollo de consumidores de KCL in the Guía para desarrolladores de Amazon Kinesis Data Streams.
AWS Lambda Configure a Lambda function as an event source for your Kinesis data stream to process each batch of CDC records as they arrive. See Uso de AWS Lambda con Amazon Kinesis in the AWSGuía para desarrolladores de Lambda.
Amazon Data Firehose Deliver CDC records from Kinesis to Amazon S3, Amazon Redshift, Amazon OpenSearch Service, or other destinations for analytics and archival. See Envío de datos a un flujo de entrega in the Guía para desarrolladores de Amazon Data Firehose.
Consumidores autoadministrados Run Apache Kafka Connect with the Kinesis source connector, Apache Flink, or other stream processing frameworks to transform and route records. For Apache Flink on AWS, see Configuración de la entrada en la aplicación in the Guía del desarrollador de Amazon Managed Service para Apache Flink.

Cada registro de CDC incluye campos como source.schema, source.table y op que puede usar para enrutar y filtrar los registros en su lógica de procesamiento. Para ver el esquema de registros completo, consulte Descripción de los registros de CDC.