- La instantánea inicial mediante S3 ClickPipes
- Las actualizaciones en tiempo real mediante Kinesis ClickPipes
ReplacingMergeTree. Este motor de tabla se usa habitualmente en escenarios de CDC para permitir aplicar operaciones de actualización. Puede encontrar más información sobre este patrón en los siguientes artículos del blog:
- Captura de datos de cambios (CDC) con PostgreSQL y ClickHouse - Parte 1
- Captura de datos de cambios (CDC) con PostgreSQL y ClickHouse - Parte 2
1
Configurar el flujo de Kinesis
Primero, querrá habilitar un Kinesis Stream en su tabla de DynamoDB para capturar los cambios en tiempo real. Queremos hacerlo antes de crear la instantánea para evitar perder datos.
Puede consultar la guía de AWS aquí.
2
Crear la instantánea
A continuación, crearemos una instantánea de la tabla de DynamoDB. Esto puede hacerse mediante una exportación de AWS a S3. Consulte la guía de AWS disponible aquí.
Deberá realizar una “exportación completa” en el formato JSON de DynamoDB.
3
Cargar la instantánea en ClickHouse
Crear las tablas necesarias
Los datos de la instantánea de DynamoDB tendrán este aspecto:JSONExtract de ClickHouse en una vista materializada.Querremos crear tres tablas:- Una tabla para almacenar los datos sin procesar de DynamoDB
- Una tabla para almacenar los datos finales aplanados (tabla de destino)
- Una vista materializada para aplanar los datos
- Esta tabla debe ser de tipo
ReplacingMergeTree - La tabla debe tener una columna
version- En pasos posteriores, asignaremos el campo
ApproximateCreationDateTimedel flujo de Kinesis a la columnaversion.
- En pasos posteriores, asignaremos el campo
- La tabla debe usar la clave de partición como clave de ordenación (especificada por
ORDER BY)- Las filas con la misma clave de ordenación se deduplicarán según la columna
version.
- Las filas con la misma clave de ordenación se deduplicarán según la columna
Crear el ClickPipe de instantánea
Ahora puede crear un ClickPipe para cargar los datos de la instantánea desde S3 en ClickHouse. Siga la guía de S3 ClickPipe aquí, pero use la siguiente configuración:- Ruta de ingesta: Tendrá que localizar la ruta de los archivos JSON exportados en S3. La ruta tendrá un aspecto similar a este:
- Formato: JSONEachRow
- Tabla: Su tabla de instantánea (p. ej.
default.snapshoten el ejemplo anterior)
4
Crear el ClickPipe para Kinesis
Ahora podemos configurar el ClickPipe de Kinesis para capturar cambios en tiempo real del stream de Kinesis. Siga la guía de Kinesis ClickPipe aquí, pero use la siguiente configuración:
- Stream: El stream de Kinesis usado en el paso 1
- Table: Su tabla de destino (por ejemplo,
default.destinationen el ejemplo anterior) - Flatten object: true
- Column mappings:
ApproximateCreationDateTime:version- Asigne los demás campos a las columnas de destino correspondientes, como se muestra a continuación
5
Limpieza (opcional)
Una vez que haya finalizado el ClickPipe de instantánea, puede eliminar la tabla de instantánea y la vista materializada.