¿Por qué transmitir datos de SQL Server a ClickHouse?
- Informes internos sin ralentizar las aplicaciones de producción
- Dashboards de cara al cliente que deben ser rápidos y estar siempre actualizados
- Streaming de eventos, como mantener al día los logs de actividad de los usuarios para analítica
Lo que necesitarás para empezar
Requisitos previos
- Una instancia de SQL Server en funcionamiento
- Para este tutorial, usamos AWS RDS para SQL Server, pero cualquier instancia moderna de SQL Server sirve.Configurar AWS SQL Server desde cero.
- Una instancia de ClickHouse
- Autogestionada o en la nube.Configurar ClickHouse desde cero.
- Streamkap
- Esta herramienta será la base de tu pipeline de streaming de datos.
Información de la conexión
- La dirección del servidor, el puerto, el nombre de usuario y la contraseña de SQL Server. Se recomienda crear un usuario y un rol independientes para que Streamkap pueda acceder a tu base de datos de SQL Server.Consulta nuestra documentación sobre la configuración.
- La dirección del servidor, el puerto, el nombre de usuario y la contraseña de ClickHouse. Las listas de acceso IP de ClickHouse determinan qué servicios pueden conectarse a tu base de datos de ClickHouse.Sigue las instrucciones aquí.
- Las tablas que quieres sincronizar; por ahora, empieza con una sola
Configurar SQL Server como origen
Paso 1: Crear un origen de SQL Server en Streamkap
- Abre Streamkap y ve a la sección de fuentes.
- Crea una fuente nueva.
- Asignále un nombre fácil de reconocer (p. ej., sqlserver-demo-source).
- Completa los datos de conexión de SQL Server:
- Host (p. ej., your-db-instance.rds.amazonaws.com)
- Puerto (el puerto predeterminado de SQL Server es 3306)
- Nombre de usuario y contraseña
- Nombre de la base de datos
Qué ocurre en segundo plano
Crear un destino de ClickHouse
Paso 2: Agregar un destino de ClickHouse en Streamkap
Pasos:
- Ve a la sección de destinos de Streamkap.
- Añade un nuevo destino y elige ClickHouse como tipo de destino.
- Introduce los datos de ClickHouse:
- Host
- Puerto (el valor predeterminado es 9000)
- Nombre de usuario y contraseña
- Nombre de la base de datos
Modo upsert: ¿Qué es esto?
- Esto garantiza que la tabla de destino no se llene de duplicados cuando haya cambios en SQL Server.
Gestión de la evolución del esquema
- La buena noticia es que Streamkap puede gestionar la evolución básica del esquema. Esto significa que, si añades una nueva columna en SQL Server, también aparecerá en ClickHouse.
Creación del pipeline de streaming
Paso 3: Configura el pipeline en Streamkap
Configuración del pipeline
- Ve a la pestaña Pipelines en Streamkap.
- Crea un pipeline nuevo.
-
Selecciona tu origen de SQL Server (
sqlserver-demo-source). -
Selecciona tu destino de ClickHouse (
clickhouse-tutorial-destination). -
Elige la tabla cuyos datos quieres transmitir; supongamos que es
events. - Configura la captura de cambios de datos (CDC).
- Para esta ejecución, transmitiremos datos nuevos (si quieres, puedes omitir la carga histórica al principio y centrarte en los eventos de CDC).
¿Deberías hacer una carga retroactiva?
Streaming en acción: qué esperar
Paso 4: Observa el flujo de datos
- A medida que llegan nuevos datos a la tabla de origen en SQL Server, el pipeline de Streamkap captura el cambio y lo envía a ClickHouse.
- ClickHouse (gracias a ReplacingMergeTree y a la combinación de partes) ingiere estas filas y fusiona las actualizaciones.
- El esquema se mantiene al día: añade columnas en SQL Server y también aparecerán en ClickHouse.
Entre bastidores: ¿qué hace realmente Streamkap?
- Streamkap supervisa el registro binario de SQL Server (el mismo registro que se usa para la replicación).
- En cuanto insertas, actualizas o eliminas una fila en tu tabla, Streamkap captura el evento.
- Convierte el evento en algo que ClickHouse puede entender y lo envía, aplicando los cambios al instante en tu base de datos analítica.
Opciones avanzadas
Modos Upsert vs. Insert
- Insert Mode: Cada fila nueva se añade; incluso si es una actualización, obtendrás duplicados.
- Upsert Mode: Las actualizaciones de las filas existentes sobrescriben los datos ya presentes, mucho mejor para mantener los análisis actualizados y limpios.
Gestión de cambios de esquema
- ¿Añadir una columna nueva a tu tabla operativa? Streamkap la detectará y la añadirá también en ClickHouse.
- ¿Eliminar una columna? Según la configuración, puede que necesites una migración, pero la mayoría de las incorporaciones se realizan sin problemas.
Supervisión en producción: seguimiento del pipeline
Comprobación del estado del pipeline
- Ver el retraso del pipeline (¿qué tan actualizados están tus datos?)
- Supervisar el recuento de filas y el rendimiento
- Recibir alertas si algo no va bien
Métricas comunes que conviene vigilar
- Retraso: ¿Cuánto se ha rezagado ClickHouse respecto a SQL Server?
- Rendimiento: Filas por segundo
- Tasa de errores: Debería ser cercana a cero
Pasar a producción: consultar ClickHouse
Próximos pasos y profundizaciones
- Configurar flujos filtrados (sincronizar solo algunas tablas/columnas)
- Hacer streaming desde múltiples orígenes hacia una única base de datos analítica
- Combinar esto con S3/lagos de datos para almacenamiento en frío
- Automatizar las migraciones de esquema cuando cambies las tablas
- Proteger tu pipeline con SSL y reglas de firewall
FAQ y solución de problemas
Para terminar
- Upsert vs. Insert y los pormenores de ambos
- Latencia de extremo a extremo: ¿qué tan rápido puedes obtener tu vista analítica final?
- Optimización del rendimiento y throughput
- Dashboards reales sobre esta stack