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 TimescaleTimescale 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à.
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.
-
Créez un utilisateur dédié pour ClickPipes :
CREATE USER clickpipes_user PASSWORD 'some-password'; -
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; -
Accordez à l’utilisateur les privilèges de réplication :
ALTER USER clickpipes_user WITH REPLICATION; -
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_internalafin 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.
-- 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 définit l’ensemble des tables dont les événements de modification seront transmis à ClickPipes. Nous déconseillons d’utiliser FOR ALL TABLES sauf si vous avez l’intention de répliquer toutes les tables, car l’inclusion de tables inutiles augmente le trafic WAL de Postgres vers ClickPipes et réduit l’efficacité globale de la réplication.
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.