Passer au contenu principal

Introduction

[pg_clickhouse], une extension PostgreSQL open source, exécute des requêtes analytiques sur ClickHouse directement depuis PostgreSQL, sans réécrire le moindre SQL. Elle prend en charge PostgreSQL 13 et versions ultérieures, ainsi que ClickHouse v23 et versions ultérieures. Une fois que ClickPipes commence à synchroniser les données vers ClickHouse, utilisez pg_clickhouse pour import foreign tables rapidement et facilement dans un schéma PostgreSQL. Exécutez ensuite vos requêtes PostgreSQL existantes sur ces tables, sans modifier votre base de code existante, tout en déléguant l’exécution à ClickHouse.

Premiers pas

Le moyen le plus simple d’essayer pg_clickhouse est d’utiliser l’[image Docker], qui contient l’image Docker PostgreSQL standard avec les extensions pg_clickhouse et re2 :
Consultez le [tutoriel] pour commencer à importer des tables ClickHouse et à déléguer l’exécution des requêtes.

Cas de test : TPC-H

Ce tableau compare les performances des requêtes TPC-H entre des tables PostgreSQL classiques et pg_clickhouse connecté à ClickHouse, tous deux chargés avec un facteur d’échelle de 1 ; ✔︎ indique un pushdown complet, tandis qu’un tiret indique l’annulation d’une requête après 1 min. Tous les tests ont été exécutés sur un MacBook Pro M4 Max avec 36 Go de mémoire.

Compiler à partir des sources

Unix général

Les paquets de développement de PostgreSQL et de curl incluent pg_config et curl-config dans le PATH, vous devriez donc pouvoir simplement exécuter make (ou gmake), puis make install, puis dans votre base de données CREATE EXTENSION pg_clickhouse.

Debian / Ubuntu / APT

Voir PostgreSQL Apt pour plus de détails sur la récupération depuis le dépôt APT de PostgreSQL.

RedHat / CentOS / Yum

Voir PostgreSQL Yum pour plus de détails sur la récupération des paquets depuis le dépôt Yum de PostgreSQL.

Installer depuis PGXN

Une fois les dépendances ci-dessus remplies, utilisez le PGXN client (disponible sous forme de paquets Homebrew, Apt et Yum nommés pgxnclient) pour télécharger, compiler et installer pg_clickhouse :

Compiler et installer

Pour compiler et installer la bibliothèque ClickHouse et pg_clickhouse, exécutez :
Si votre machine comporte plusieurs installations de PostgreSQL, vous devrez peut-être préciser la version appropriée de pg_config :
Si curl-config n’est pas dans le PATH de votre hôte, vous pouvez spécifier le chemin explicitement :
Si vous rencontrez une erreur telle que :
Vous devez utiliser GNU make, qui peut être installé sur votre système sous le nom de gmake :
Si vous obtenez une erreur du type :
Assurez-vous que pg_config est installé et présent dans votre path. Si vous avez utilisé un gestionnaire de paquets tel que RPM pour installer PostgreSQL, assurez-vous que le paquet -devel est également installé. Si nécessaire, indiquez au processus de compilation où le trouver :
Pour installer l’extension avec un préfixe personnalisé sur PostgreSQL 18 ou version ultérieure, spécifiez l’argument prefix pour install (mais pour aucune autre cible make) :
Assurez-vous ensuite que le préfixe figure dans les [postgresql.conf paramètres] suivants :

Tests

Pour exécuter la suite de tests, une fois l’extension installée, lancez
Si vous rencontrez une erreur du type :
Vous devez exécuter la suite de tests avec un superutilisateur, par exemple le superutilisateur “postgres” par défaut :

Activation

Une fois pg_clickhouse installé, vous pouvez l’ajouter à une base de données en vous connectant en tant que superutilisateur et en exécutant :
Si vous souhaitez installer pg_clickhouse et tous les objets associés dans un schéma spécifique, utilisez la clause SCHEMA pour le préciser, comme suit :

Dépendances

L’extension pg_clickhouse nécessite PostgreSQL 13 ou une version supérieure, ainsi que libcurl et libuuid. La compilation de l’extension requiert un compilateur C et C++, libSSL, GNU make et CMake.

Feuille de route

Notre priorité absolue est de finaliser la couverture du pushdown pour les charges de travail analytiques avant d’ajouter des fonctionnalités DML. Notre feuille de route :
  • Obtenir une planification optimale pour les 10 requêtes TPC-H restantes sans pushdown
  • Tester et corriger le pushdown pour les requêtes ClickBench
  • Prendre en charge le pushdown transparent de toutes les fonctions d’agrégation PostgreSQL
  • Prendre en charge le pushdown transparent de toutes les fonctions PostgreSQL
  • Autoriser les paramètres ClickHouse au niveau du serveur et de la session via CREATE SERVER et les GUC
  • Prendre en charge tous les types de données ClickHouse
  • Prendre en charge les opérations lightweight DELETE et UPDATE
  • Prendre en charge l’insertion par lot via COPY
  • Ajouter une fonction pour exécuter une requête ClickHouse arbitraire et renvoyer ses résultats sous forme de tables
  • Ajouter la prise en charge du pushdown des requêtes UNION lorsqu’elles interrogent toutes la base de données distante

Auteurs

  • Copyright (c) 2025-2026, ClickHouse
  • Portions Copyright (c) 2023-2025, Ildus Kurbangaliev
  • Portions Copyright (c) 2019-2023, Adjust GmbH
  • Portions Copyright (c) 2012-2019, PostgreSQL Global Development Group
[Requête 1] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/1.sql [Requête 2] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/2.sql [Requête 3] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/3.sql [Requête 4] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/4.sql [Requête 5] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/5.sql [Requête 6] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/6.sql [Requête 7] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/7.sql [Requête 8] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/8.sql [Requête 9] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/9.sql [Requête 10] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/10.sql [Requête 11] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/11.sql [Requête 12] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/12.sql [Requête 13] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/13.sql [Requête 14] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/14.sql [Requête 15] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/15.sql [Requête 16] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/16.sql [Requête 17] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/17.sql [Requête 18] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/18.sql [Requête 19] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/19.sql [Requête 20] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/20.sql [Requête 21] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/21.sql [Requête 22] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/22.sql
Dernière modification le 25 juin 2026