Flujos de captura de datos de cambio (versión preliminar)
importante
Esta característica se ofrece como versión preliminar de AWS y está sujeta a cambios. Para obtener más información, consulte la sección 2, Betas y versiones preliminares, del documento Términos de servicio de AWS
Antes de la disponibilidad general, añadiremos nuevos tipos de operaciones ("op": "u" para actualizaciones) a la carga útil de su flujo. Para garantizar que su aplicación gestione estos cambios sin necesidad de modificaciones, trate cualquier valor op no reconocido como una operación upsert aplicando la carga útil after. Para obtener más información, consulte Descripción de los registros de CDC.
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 cada cambio confirmado en las filas como un registro JSON estructurado a un flujo de datos de Kinesis que se 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 cada cambio confirmado para 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 cada cambio de fila como un registro JSON estructurado y lo envía a un flujo de datos de Kinesis que se configure. La CDC captura automáticamente 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.
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
Temas relacionados
Semántica de ordenación y entrega
Garantías de entrega
La CDC de Aurora DSQL garantiza que cada cambio confirmado llegue al destino al menos una vez. Aurora DSQL puede entregar un registro más de una vez. Diseñe la 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.txIdpara 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.
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.
| 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.