Skip to main content

Introduction

Cette bibliothèque fournit des extensions PostgreSQL permettant d’exécuter des requêtes chDB dans Postgres, ainsi que de copier des données depuis et vers divers formats et stockage d’objet.

Extension chdb

L’extension chdb exécute des requêtes chDB. La fonction chdb_query() exécute une seule requête. Par exemple, cette requête :
Sorties :
Consultez la documentation chdb pour plus de détails.

Module chdb_hook

Le module chdb_hook se greffe sur la commande COPY afin de copier des données vers ou depuis S3, GCS, Azure Blob, un fichier ou une URL http. Cet exemple charge des enregistrements issus de plusieurs fichiers CSV sur S3 en une seule commande COPY :
Après quoi la table times contient les enregistrements de chaque fichier chargé :
Un CREATE TABLE peut également déduire ses colonnes, et charger ses lignes, à partir d’une telle URL :
Voir la documentation de chdb_hook pour plus de détails.

Benchmarking des formats

Un benchmark compare les performances de COPY avec [chdb_hook] à celles d’[aws_s3], [pg_duckdb] et [pg_lake] pour environ 1 million de rows du jeu de données des taxis de NYC dans divers formats. Benchmark des données des taxis de NYC Parmi les quatre extensions, chdb offre les performances les plus constantes. [pg_duckdb] et [pg_lake], tous deux reposant sur DuckDB, mettent environ 2 à 3 fois plus de temps à importer des données au format CSV, JSON et Parquet. Seul [aws_s3] se rapproche des performances de [chdb_hook], mais il prend en charge un éventail de formats de données bien plus restreint : D’autres mesures de benchmarking montrent des performances relativement constantes lors de l’import du jeu de données des taxis de NYC dans divers formats : Benchmark d'import Le benchmark utilise le format JSONCompact par souci de compatibilité avec les autres extensions ; d’autres formats JSON, tels que JSONCompactEachRow, se rapprocheront davantage des performances des autres formats.

Architecture

Les extensions chdb et chdb_hook s’appuient sur un processus chdb_helper pour exécuter les requêtes chDB. Ce processus auxiliaire maintient la consommation de ressources de chDB séparée de celle du processus Postgres principal, un avantage pour un workflow utilisé occasionnellement, comme le chargement de données depuis un data lake.
Contrairement à un background worker, le processus auxiliaire ne détient aucune mémoire partagée Postgres et n’est pas géré par le postmaster. Les crashs sont ainsi isolés et n’affectent pas Postgres. Si un processus auxiliaire meurt, cela déclenche une error uniquement dans le backend qui l’a démarré, sans incidence sur les autres sessions.

Dépendances

L’extension chdb nécessite PostgreSQL 15 ou une version supérieure ainsi que la bibliothèque chDB v26.7.0 ou ultérieure (actuellement disponible uniquement pour Linux et macOS). Le plus simple est de l’installer via le script shell lib.chdb.io :
Pour compiler statiquement chDB dans l’application auxiliaire, définissez les variables suivantes avant d’exécuter les commandes make de l’Installation.
Le Makefile télécharge la bibliothèque statique libchdb et la compile dans l’application. Sur Linux, vous pouvez également faire en sorte que le processus d’installation télécharge et installe la bibliothèque dynamique libchdb en définissant export BUNDLE_LIBCHDB=1 avant d’exécuter les commandes make de l’Installation.

Compiler depuis les sources

Pour compiler chdb, il suffit de faire ceci :
Si vous rencontrez une erreur telle que :
Vous devez utiliser GNU make, qui est peut-être déjà installé sur votre système sous le nom gmake :
Si vous rencontrez une erreur telle que :
Assurez-vous que pg_config est installé et accessible dans votre path. Si vous avez installé PostgreSQL à l’aide d’un système de gestion de paquets tel que RPM, vérifiez que le paquet -devel est également installé. Si nécessaire, indiquez au processus de build où le trouver :
Si vous rencontrez une erreur telle que :
Vous devez soit installer chDB, soit indiquer au compilateur où le trouver. Si, par exemple, vous l’avez installé via le script shell lib.chdb.io, indiquez /usr/local :
Si vous rencontrez une erreur telle que :
Vous devez exécuter la test suite avec un super user, tel que le super user “postgres” par défaut :
Pour installer l’extension dans un prefix personnalisé sur PostgreSQL 18 ou version ultérieure, passez l’argument prefix à install (mais à aucune autre cible make) :
Assurez-vous ensuite que le prefix est inclus dans les [paramètres postgresql.conf][paramètres `postgresql.conf`] suivants :

Auteurs

Copyright (c) 2026, ClickHouse
Dernière modification le 26 septembre 2026