Passer au contenu principal

Contexte

TimescaleDB est une extension open-source de Postgres développée par Timescale Inc qui vise à améliorer les performances des requêtes analytiques sans avoir à quitter Postgres. Cela repose sur la création d’« hypertables » gérées par l’extension et prenant en charge le partitionnement automatique en « chunks ». Les hypertables prennent également en charge la compression transparente et le stockage hybride ligne-colonne (appelé « hypercore »), bien que ces fonctionnalités nécessitent une version de l’extension sous licence propriétaire. Timescale Inc propose également deux services managés pour TimescaleDB :
  • Managed Service for Timescale
  • Timescale Cloud.
Des fournisseurs tiers proposent également des services managés permettant d’utiliser l’extension TimescaleDB, mais pour des raisons de licence, ces fournisseurs ne prennent en charge que la version open-source de l’extension. Les hypertables Timescale se comportent différemment des tables Postgres classiques à plusieurs égards. Cela complique quelque peu leur réplication, c’est pourquoi la possibilité de répliquer les hypertables Timescale doit être considérée comme relevant du best effort.

Versions de Postgres prises en charge

ClickPipes prend en charge Postgres version 12 et versions ultérieures.

Activer la réplication logique

Les étapes à suivre dépendent du mode de déploiement de votre instance Postgres avec TimescaleDB.
  • Si vous utilisez un service managé et que votre fournisseur figure dans la barre latérale, veuillez suivre le guide correspondant.
  • Si vous déployez TimescaleDB vous-même, suivez le guide générique.
Pour les autres services managés, veuillez ouvrir un ticket d’assistance auprès de votre fournisseur afin de vous faire aider pour activer la réplication logique si elle ne l’est pas déjà.
Timescale Cloud ne permet pas d’activer la réplication logique, pourtant nécessaire pour les pipes Postgres en mode CDC. Par conséquent, les utilisateurs de Timescale Cloud peuvent uniquement effectuer un chargement unique de leurs données (Initial Load Only) avec le Postgres ClickPipe.

Configuration

Les hypertables Timescale ne stockent aucune des données qui y sont insérées. À la place, les données sont stockées dans plusieurs tables « chunk » correspondantes, situées dans le schéma _timescaledb_internal. Pour exécuter des requêtes sur les hypertables, cela ne pose aucun problème. En revanche, lors de la réplication logique, au lieu de détecter les modifications dans l’hypertable, nous les détectons dans la table chunk sous-jacente. Le Postgres ClickPipe inclut une logique qui remappe automatiquement les modifications des tables chunk vers l’hypertable parente, mais cela nécessite des étapes supplémentaires.
Si vous souhaitez uniquement effectuer un chargement unique de vos données (Initial Load Only), veuillez ignorer l’étape 2 et les suivantes.
  1. Créez un utilisateur dédié pour ClickPipes :
    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. Accordez à l’utilisateur créé à l’étape précédente un accès en lecture seule au niveau du schéma. L’exemple suivant montre les autorisations pour le schéma public. Répétez ces commandes pour chaque schéma contenant des tables que vous souhaitez répliquer :
    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. Accordez à l’utilisateur les privilèges de réplication :
    ALTER USER clickpipes_user WITH REPLICATION;
    
  4. En tant que superutilisateur/administrateur Postgres, créez une publication avec les hypertables que vous souhaitez répliquer. La publication doit également inclure l’intégralité du schéma _timescaledb_internal afin que le pipe puisse recevoir les modifications provenant des chunks sous-jacents. Nous vous recommandons vivement de n’inclure dans la publication que les tables dont vous avez besoin afin d’éviter toute surcharge de performance.
Toute table incluse dans la publication doit soit avoir une clé primaire définie, soit avoir son replica identity configuré sur FULL. Consultez la FAQ Postgres pour obtenir des conseils sur le périmètre à couvrir.
   -- 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 publication clickpipes contiendra l’ensemble des événements de changement générés par les tables spécifiées, puis servira à ingérer le flux de réplication.
Certains services managés n’accordent pas à leurs administrateurs les autorisations nécessaires pour créer une publication sur l’ensemble d’un schéma. Si c’est le cas, ouvrez un ticket d’assistance auprès de votre fournisseur. Vous pouvez également ignorer cette étape (ainsi que les suivantes) et effectuer à la place un chargement unique de vos données.
Après ces étapes, vous devriez pouvoir poursuivre en créant un ClickPipe.

Configurer l’accès réseau

Si vous souhaitez restreindre le trafic vers votre instance Timescale, veuillez autoriser les adresses IP NAT statiques documentées. Les instructions varient selon les fournisseurs. Veuillez consulter la barre latérale si le vôtre y figure, ou ouvrir un ticket auprès de celui-ci.
Dernière modification le 29 juin 2026