はじめに
オープンソースの PostgreSQL 拡張機能である[pg_clickhouse]を使うと、SQL を書き換えることなく、 PostgreSQL から直接 ClickHouse に分析クエリを実行できます。PostgreSQL 14 以降と ClickHouse v23 以降をサポートしています。 ClickPipes による ClickHouse へのデータ同期が開始されたら、 pg_clickhouse を使用して [外部テーブルをインポート] し、 それらを PostgreSQL スキーマにすばやく簡単に取り込めます。続いて、それらの テーブルに対して既存の PostgreSQL クエリを実行すれば、既存のコードベースを維持したまま、 実行処理を ClickHouse 側にプッシュダウンできます。はじめに
pg_clickhouse を試す最も簡単な方法は Docker image を使うことです。これには、 pg_clickhouse と re2 拡張機能を含む標準の PostgreSQL 用 Docker image が含まれています。テストケース: TPC-H
この表は、通常の PostgreSQL テーブルと ClickHouse に接続した pg_clickhouse について、スケーリング係数 1 でデータをロードした場合の TPC-H クエリパフォーマンスを比較したものです。✔︎ は単一の foreign scan として完全にプッシュダウンされることを、✼ は複数の foreign scan として完全にプッシュダウンされることを示します。すべてのテストは、メモリ 36 GB を搭載した MacBook Pro M4 Max で実行しました。ソースからコンパイル
General Unix
PostgreSQL と curl の開発パッケージでは、pg_config と
curl-config が PATH に含まれるため、make (または
gmake) を実行し、続けて make install を実行すれば、
データベースで
CREATE EXTENSION pg_clickhouse を実行できるはずです。
Debian / Ubuntu / APT
PostgreSQL Apt リポジトリからの取得方法の詳細は、PostgreSQL Aptを参照してください。RedHat / CentOS / Yum
PGXN からインストール
上記の依存関係を満たしたら、PGXN client (Homebrew、Apt、およびpgxnclient という名前の Yum パッケージで提供) を使用して、pg_clickhouse をダウンロード、コンパイル、インストールします:
コンパイルとインストール
ClickHouseライブラリとpg_clickhouseをビルドしてインストールするには、以下を実行します。
pg_config を
指定する必要がある場合があります:
curl-config がパスに含まれていない場合は、パスを明示的に指定できます:
gmake としてインストールされている場合があります:
pg_config がインストールされており、パスが通っていることを確認してください。RPM などの
パッケージ管理システムを使って PostgreSQL をインストールした場合は、
-devel パッケージもインストールされていることを確認してください。必要に応じて、
ビルドプロセスにその場所を指定してください:
install に prefix 引数を渡します (ほかの make ターゲットには渡しません) :
postgresql.conf
パラメータ]にプレフィックスが含まれていることを確認します。
テスト
テストスイートを実行するには、拡張機能のインストール後に次を実行します読み込み
pg_clickhouse をインストールしたら、スーパーユーザーとして接続し、次を実行することで
データベースに追加できます:
pg_clickhouse と、それに関連するすべてのオブジェクトを特定の
スキーマにインストールする場合は、SCHEMA 句を使用してスキーマを指定します。以下のように指定します。
依存関係
pg_clickhouse 拡張機能には、PostgreSQL 14 以降、libcurl、
libuuid が必要です。拡張機能をビルドするには、C および C++ コンパイラ、libSSL、GNU
make、CMake が必要です。
ロードマップ
現在最も注力しているのは、DML 機能を追加する前に、分析ワークロード向けのプッシュダウン対応を完成させることです。 ロードマップは次のとおりです。- 残る 10 件の未対応の TPC-H クエリについて、最適な実行計画を実現する
- ClickBench クエリに対するプッシュダウンをテストし、修正する
- PostgreSQL のすべての集約関数の透過的なプッシュダウンをサポートする
- PostgreSQL のすべての関数の透過的なプッシュダウンをサポートする
- CREATE SERVER および GUCs を通じて、サーバーレベルおよびセッションレベルの ClickHouse 設定を許可する
- ClickHouse のすべてのデータ型をサポートする
- 論理削除 と UPDATE をサポートする
- COPY によるバッチ挿入をサポートする
- 任意の ClickHouse クエリを実行し、その 結果をテーブルとして返す関数を追加する
- すべてがリモート データベースをクエリする場合の UNION クエリのプッシュダウン対応を追加する
著者
著作権
- Copyright (c) 2025-2026, ClickHouse
- 一部 Copyright (c) 2023-2025, Ildus Kurbangaliev
- 一部 Copyright (c) 2019-2023, Adjust GmbH
- 一部 Copyright (c) 2012-2019, PostgreSQL Global Development Group