Puede consultar aquí una guía completa de migración de PostgreSQL a ClickHouse, que incluye recomendaciones sobre el modelado de datos y conceptos equivalentes. A continuación, se describe cómo conectar ClickHouse con PostgreSQL.Esta página cubre las siguientes opciones para integrar PostgreSQL con ClickHouse:
- usar el motor de tabla
PostgreSQLpara leer desde una tabla de PostgreSQL - usar el motor de base de datos experimental
MaterializedPostgreSQLpara sincronizar una base de datos de PostgreSQL con una base de datos de ClickHouse
Uso del motor de tabla PostgreSQL
PostgreSQL permite realizar operaciones SELECT y INSERT sobre datos almacenados en un servidor PostgreSQL remoto desde ClickHouse.
Este artículo ilustra métodos básicos de integración utilizando una sola tabla.
1. Configurar PostgreSQL
- En
postgresql.conf, agregue la siguiente entrada para que PostgreSQL escuche en las interfaces de red:
- Cree un usuario para que ClickHouse se conecte. A modo de demostración, este ejemplo concede privilegios completos de superusuario.
- Cree una nueva base de datos en PostgreSQL:
- Cree una nueva tabla:
- Añadamos unas cuantas filas para probar:
- Para configurar PostgreSQL de modo que permita conexiones para la replicación a la nueva base de datos con el nuevo usuario, agregue la siguiente entrada al archivo
pg_hba.conf. Actualice la línea de dirección con la subred o la dirección IP de su servidor PostgreSQL:
- Recargue la configuración de
pg_hba.conf(ajuste este comando según su versión):
- Comprueba que el nuevo
clickhouse_userpueda iniciar sesión:
Si estás usando esta función en ClickHouse Cloud, es posible que tengas que permitir que las direcciones IP de ClickHouse Cloud accedan a tu instancia de PostgreSQL.
Consulta la API de endpoints de Cloud de ClickHouse para ver los detalles del tráfico de salida.
2. Defina una tabla en ClickHouse
- Acceda a
clickhouse-client:
- Vamos a crear una nueva base de datos:
- Cree una tabla que use
PostgreSQL:
| parameter | Description | example |
|---|---|---|
| host:port | nombre de host o dirección IP y puerto | postgres-host.domain.com:5432 |
| database | nombre de la base de datos de PostgreSQL | db_in_psg |
| user | nombre de usuario para conectarse a Postgres | clickhouse_user |
| password | contraseña para conectarse a Postgres | ClickHouse_123 |
Consulta la página de documentación del motor de tabla PostgreSQL para ver la lista completa de parámetros.
3 Pruebe la integración
- En ClickHouse, consulte las filas iniciales:
- De nuevo en PostgreSQL, agrega un par de filas a la tabla:
- Esas dos filas nuevas deberían aparecer en su tabla de ClickHouse:
- Veamos qué sucede cuando añades filas a la tabla de ClickHouse:
- Las filas agregadas en ClickHouse deberían aparecer en la tabla de PostgreSQL:
PostrgeSQL.
Consulta la página de documentación del motor de tabla PostgreSQL para conocer más funciones, como especificar esquemas, devolver solo un subconjunto de columnas y conectarse a múltiples réplicas. Consulta también la entrada del blog ClickHouse and PostgreSQL - a match made in data heaven - part 1.
Uso del motor de base de datos MaterializedPostgreSQL
1. En PostgreSQL
- En
postgresql.conf, configure los niveles mínimos de escucha, el wal level de replicación y los slots de replicación:
logical y al menos 2 slots de replicación
- Con una cuenta de administrador, cree un usuario para conectarse desde ClickHouse:
- cree una nueva base de datos:
- conéctese a la nueva base de datos desde
psql:
- cree una nueva tabla:
- añadir las filas iniciales:
- Configure PostgreSQL para permitir las conexiones a la nueva base de datos con el nuevo usuario para la replicación. A continuación se muestra la entrada mínima que debe añadirse al archivo
pg_hba.conf:
- Vuelva a cargar la configuración de
pg_hba.confcon algo como esto (ajústelo según su versión):
- Pruebe a iniciar sesión con el nuevo
clickhouse_user:
2. En ClickHouse
- acceda a ClickHouse CLI
- Habilite la funcionalidad experimental de PostgreSQL para el motor de base de datos:
- Cree la nueva base de datos que se va a replicar y defina la tabla inicial:
| parámetro | Descripción | ejemplo |
|---|---|---|
| host:port | nombre de host o IP y puerto | postgres-host.domain.com:5432 |
| database | nombre de la base de datos de PostgreSQL | db1 |
| user | nombre de usuario para conectarse a Postgres | clickhouse_user |
| password | contraseña para conectarse a Postgres | ClickHouse_123 |
| settings | configuración adicional para el motor | materialized_postgresql_tables_list = ‘table1’ |
Para consultar la guía completa sobre el motor de base de datos PostgreSQL, visita https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Verifica que la tabla inicial tenga datos:
3. Probar la replicación básica
- En PostgreSQL, añada nuevas filas:
- En ClickHouse, verifica que las nuevas filas estén visibles:
4. Resumen
Para conocer más funcionalidades disponibles en las opciones avanzadas, consulta la documentación de referencia.