Skip to main content
このページでは、PostgreSQL を ClickHouse と統合するための以下のオプションについて説明します。
  • PostgreSQL のテーブルから読み取るために PostgreSQL テーブルエンジンを使用する方法
  • PostgreSQL のデータベースを ClickHouse のデータベースと同期するために、実験的な MaterializedPostgreSQL データベースエンジンを使用する方法
Managed Postgres サービスもご覧ください。コンピュートと物理的に同一配置された NVMe storage を採用しており、EBS のようなネットワーク接続型ストレージを使用する代替手段と比べて、ディスク I/O がボトルネックになるワークロードで最大 10 倍高速なパフォーマンスを実現します。さらに、ClickPipes の Postgres CDC (変更データキャプチャ) コネクタを使用して、Postgres のデータを ClickHouse にレプリケートできます。

PostgreSQL テーブルエンジンを使用する

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

PostgreSQL のセットアップ

  1. postgresql.conf に次のエントリを追加して、PostgreSQL がネットワークインターフェイスで接続を受け付けるようにします:
  1. ClickHouse から接続するためのユーザーを作成します。デモンストレーション用として、この例では完全なスーパーユーザー権限を付与します。
  1. PostgreSQL で新しいデータベースを作成します:
  1. 新しいテーブルを作成します:
  1. テスト用に数行追加してみましょう:
  1. レプリケーション用に、新しいユーザーによる新しいデータベースへの接続を許可するよう PostgreSQL を設定するには、次のエントリを pg_hba.conf ファイルに追加します。アドレス行は、お使いの PostgreSQL server のサブネットまたは 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 テーブルエンジンのドキュメントページを参照してください。
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 level、および replication slots を設定します。
次のエントリを追加します:
*ClickHouse では、wal level が少なくとも logical であり、レプリケーションスロットが少なくとも 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月24日