Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Guía de configuración de Postgres con TimescaleDB como fuente

Funcionalidad beta

Antecedentes

TimescaleDB es una extensión de Postgres de código abierto desarrollada por Timescale Inc que busca mejorar el rendimiento de las consultas analíticas sin tener que dejar Postgres. Esto se logra mediante la creación de "hypertables", que son administradas por la extensión y admiten el particionado automático en "fragmentos". Las hypertables también admiten compresión transparente y almacenamiento híbrido fila-columnar (conocido como "hypercore"), aunque estas características requieren una versión de la extensión con licencia propietaria.

Timescale Inc también ofrece dos servicios gestionados para TimescaleDB:

  • Managed Service for Timescale
  • Timescale Cloud.

Existen proveedores externos que ofrecen servicios gestionados que le permiten usar la extensión TimescaleDB, pero debido a las restricciones de licencia, estos proveedores solo admiten la versión de código abierto de la extensión.

Las hypertables de Timescale se comportan de manera diferente a las tablas normales de Postgres en varios aspectos. Esto plantea algunas complicaciones para el proceso de replicación, por lo que la capacidad de replicar hypertables de Timescale debe considerarse best effort.

Versiones de Postgres compatibles

ClickPipes es compatible con Postgres 12 y versiones posteriores.

Habilitar la replicación lógica

Los pasos que deben seguirse dependen de cómo esté desplegada su instancia de Postgres con TimescaleDB.

  • Si usa un servicio gestionado y su proveedor aparece en la barra lateral, siga la guía correspondiente a ese proveedor.
  • Si despliega TimescaleDB por su cuenta, siga la guía genérica.

Para otros servicios gestionados, abra un ticket de soporte con su proveedor para que le ayude a habilitar la replicación lógica si aún no está habilitada.

Configuración

Las hypertables de Timescale no almacenan directamente los datos insertados en ellas. En su lugar, los datos se almacenan en varias tablas "fragmento" correspondientes que se encuentran en el esquema _timescaledb_internal. Para ejecutar consultas sobre las hypertables, esto no supone ningún problema. Pero durante la replicación lógica, en lugar de detectar los cambios en la hypertable, los detectamos en la tabla "fragmento" correspondiente. El ClickPipe de Postgres incluye la lógica necesaria para reasignar automáticamente los cambios de las tablas "fragmento" a la hypertable principal, pero esto requiere pasos adicionales.

  1. Crea un usuario dedicado para ClickPipes:

    CREATE USER clickpipes_user PASSWORD 'some-password';
  2. Otorga acceso de solo lectura a nivel de esquema al usuario que creaste en el paso anterior. El siguiente ejemplo muestra los permisos para el esquema public. Repite estos comandos para cada esquema que contenga tablas que quieras replicar:

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
  3. Otorga privilegios de replicación al usuario:

    ALTER USER clickpipes_user WITH REPLICATION;
  4. Como superusuario o administrador de Postgres, crea una publicación con las hypertables que quieras replicar. La publicación también debe incluir todo el esquema _timescaledb_internal para que el pipe pueda recibir cambios de los fragmentos subyacentes. Recomendamos encarecidamente incluir solo las tablas que necesites en la publicación para evitar sobrecarga de rendimiento.

   -- When adding new tables to the ClickPipe, you'll need to add them to the publication manually as well.
   CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;

La publicación clickpipes define el conjunto de tablas cuyos eventos de cambio se transmitirán a ClickPipes. Desaconsejamos usar FOR ALL TABLES a menos que tengas la intención de replicar todas las tablas, ya que incluir tablas innecesarias incrementa el tráfico de WAL desde Postgres hacia ClickPipes y reduce la eficiencia general de la replicación.

Después de estos pasos, deberías poder continuar con la creación de un ClickPipe.

Configurar el acceso de red

Si desea restringir el tráfico hacia su instancia de Timescale, añada las IP NAT estáticas documentadas a la lista de permitidos. Las instrucciones para hacerlo varían según el proveedor; consulte la barra lateral si su proveedor figura allí o abra un ticket con su equipo de soporte.

Navigation