Skip to main content
データモデリングや対応する概念に関するアドバイスを含む、PostgreSQL から ClickHouse への完全な移行ガイドは、こちらを参照してください。以下では、ClickHouse と PostgreSQL を接続する方法について説明します。
このページでは、PostgreSQL を ClickHouse と統合するための次の方法について説明します。
  • PostgreSQL のテーブルから読み取るために PostgreSQL テーブルエンジンを使用する
  • PostgreSQL 内のデータベースを ClickHouse 内のデータベースと同期するために、実験的な MaterializedPostgreSQL データベースエンジンを使用する
ClickHouse Managed Postgres サービスもぜひご覧ください。コンピュートと物理的に同じ場所に配置された NVMe ストレージを基盤としており、EBS のようなネットワーク接続型ストレージを使用する代替手段と比べて、ディスク I/O がボトルネックとなるワークロードで最大 10 倍のパフォーマンスを実現します。また、ClickPipes の Postgres CDC (変更データキャプチャ) コネクタを使用して、Postgres のデータを ClickHouse にレプリケートできます。

PostgreSQL テーブルエンジン を使う

PostgreSQL テーブルエンジンを使用すると、ClickHouse からリモートの PostgreSQL サーバーに保存されているデータに対して SELECT および INSERT 操作を実行できます。 この記事では、1 つのテーブルを使った基本的なインテグレーション方法を紹介します。
1

PostgreSQL の設定

  1. PostgreSQL がネットワークインターフェイスで待ち受けるよう、postgresql.conf に次のエントリを追加します:
  1. ClickHouse から接続するためのユーザーを作成します。説明用として、この例ではスーパーユーザー権限をすべて付与します。
  1. PostgreSQL で新しいデータベースを作成します:
  1. 新しいテーブルを作成します:
  1. テスト用に数行追加しましょう:
  1. レプリケーションのために、新しいユーザーによる新しいデータベースへの接続を許可するよう PostgreSQL を設定するには、次のエントリを pg_hba.conf ファイルに追加します。アドレス行は、PostgreSQL サーバーのサブネットまたは IP アドレスに合わせて更新してください。
  1. pg_hba.conf の設定を再読み込みします (このコマンドは、使用しているバージョンに応じて調整してください) :
  1. 新しい clickhouse_user でログインできることを確認します:
この機能を ClickHouse Cloud で使用する場合は、ClickHouse Cloud の IP アドレスから PostgreSQL インスタンスへアクセスできるよう許可が必要になることがあります。 外向きトラフィックの詳細については、ClickHouse の Cloud Endpoints API を確認してください。
2

ClickHouse でテーブルを定義する

  1. clickhouse-client にログインします:
  1. 新しいデータベースを作成します:
  1. PostgreSQL を使用するテーブルを作成します:
必要な最小限のパラメータは次のとおりです:
パラメータの完全な一覧については、PostgreSQL table engine のドキュメントを参照してください。
3

インテグレーションをテストする

  1. ClickHouse で最初の行を表示します:
ClickHouse テーブルには、PostgreSQL のテーブルにすでに存在していた2行が自動的に取り込まれます:
  1. PostgreSQL に戻り、テーブルに数行を追加します:
  1. 新しい 2 行が ClickHouse テーブルに表示されるはずです:
応答は次のようになります:
  1. ClickHouse テーブルに行を追加するとどうなるか見てみましょう:
  1. ClickHouse で追加した行が PostgreSQL のテーブルに表示されます:
この例では、PostrgeSQL テーブルエンジン を使用した、PostgreSQL と ClickHouse の基本的なインテグレーションを紹介しました。 スキーマの指定、一部のカラムのみを返す設定、複数のレプリカへの接続など、さらに多くの機能については、PostgreSQL テーブルエンジン のドキュメントページをご覧ください。あわせて、ブログ記事 ClickHouse and PostgreSQL - a match made in data heaven - part 1 もご覧ください。

MaterializedPostgreSQL データベースエンジンを使用する

PostgreSQL データベースエンジンは、PostgreSQL のレプリケーション機能を使用して、データベース全体、またはその一部のスキーマやテーブルを含むデータベースのレプリカを作成します。 この記事では、1 つのデータベース、1 つのスキーマ、1 つのテーブルを使った基本的なインテグレーション方法を説明します。 以下の手順では、PostgreSQL CLI (psql) と ClickHouse CLI (clickhouse-client) を使用します。PostgreSQL サーバーは Linux にインストールされています。以下は、PostgreSQL データベースが新規のテストインストールである場合の最小構成です。
1

PostgreSQL で

  1. postgresql.conf で、最小の listen レベル、レプリケーション用の WAL レベル、およびレプリケーションスロットを設定します。
次のエントリを追加します。
*ClickHouse には、最低でも logical の WAL レベルと、2 つ以上のレプリケーションスロットが必要です
  1. 管理者アカウントを使用して、ClickHouse から接続するためのユーザーを作成します:
*説明のため、完全なスーパーユーザー権限を付与しています。
  1. 新しいデータベースを作成します:
  1. psql で新しいデータベースに接続します:
  1. 新しいテーブルを作成します:
  1. 初期データを追加します:
  1. レプリケーション用の新しいユーザーによる新しいデータベースへの接続を許可するように、PostgreSQL を設定します。以下は、pg_hba.conf ファイルに追加する最小限のエントリです。
*説明用の例として、ここでは平文パスワードによる認証方式を使用しています。PostgreSQL のドキュメントに従って、address 行はサブネットまたはサーバーのアドレスに更新してください
  1. 次のように pg_hba.conf の設定を再読み込みします (お使いのバージョンに応じて調整してください) :
  1. 新しいclickhouse_userでログインを確認します:
2

ClickHouse で

  1. ClickHouse CLI にログインします
  1. データベースエンジン向けの PostgreSQL 実験的機能を有効にします:
  1. レプリケートする新しいデータベースを作成し、初期テーブルを定義します:
最小オプション:
PostgreSQL データベースエンジンの完全なガイドについては、https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings を参照してください
  1. 初期テーブルにデータがあることを確認します:
3

基本的なレプリケーションをテストする

  1. PostgreSQL で、新しい行を追加します:
  1. ClickHouse で、新しい行が表示されていることを確認します:
4

まとめ

このインテグレーションガイドでは、テーブルを含むデータベースをレプリケートする簡単な例を紹介しましたが、データベース全体をレプリケートしたり、既存のレプリケーションに新しいテーブルやスキーマを追加したりする、より高度なオプションもあります。このレプリケーションでは DDL コマンドはサポートされていませんが、構造変更を検出してテーブルを再読み込みするようにエンジンを設定できます。
高度なオプションで利用できるその他の機能については、リファレンスドキュメントを参照してください。
最終更新日 2026年7月3日