データモデリングや対応する概念に関するアドバイスを含む、PostgreSQL から ClickHouse への完全な移行ガイドは、こちらを参照してください。以下では、ClickHouse と PostgreSQL を接続する方法について説明します。このページでは、PostgreSQL を ClickHouse と統合するための次の方法について説明します。
- PostgreSQL のテーブルから読み取るために
PostgreSQLテーブルエンジンを使用する - PostgreSQL 内のデータベースを ClickHouse 内のデータベースと同期するために、実験的な
MaterializedPostgreSQLデータベースエンジンを使用する
PostgreSQL テーブルエンジン を使う
PostgreSQL テーブルエンジンを使用すると、ClickHouse からリモートの PostgreSQL サーバーに保存されているデータに対して SELECT および INSERT 操作を実行できます。
この記事では、1 つのテーブルを使った基本的なインテグレーション方法を紹介します。
1
PostgreSQL の設定
- PostgreSQL がネットワークインターフェイスで待ち受けるよう、
postgresql.confに次のエントリを追加します:
- ClickHouse から接続するためのユーザーを作成します。説明用として、この例ではスーパーユーザー権限をすべて付与します。
- PostgreSQL で新しいデータベースを作成します:
- 新しいテーブルを作成します:
- テスト用に数行追加しましょう:
- レプリケーションのために、新しいユーザーによる新しいデータベースへの接続を許可するよう PostgreSQL を設定するには、次のエントリを
pg_hba.confファイルに追加します。アドレス行は、PostgreSQL サーバーのサブネットまたは IP アドレスに合わせて更新してください。
pg_hba.confの設定を再読み込みします (このコマンドは、使用しているバージョンに応じて調整してください) :
- 新しい
clickhouse_userでログインできることを確認します:
この機能を ClickHouse Cloud で使用する場合は、ClickHouse Cloud の IP アドレスから PostgreSQL インスタンスへアクセスできるよう許可が必要になることがあります。
外向きトラフィックの詳細については、ClickHouse の Cloud Endpoints API を確認してください。
2
ClickHouse でテーブルを定義する
clickhouse-clientにログインします:
- 新しいデータベースを作成します:
PostgreSQLを使用するテーブルを作成します:
パラメータの完全な一覧については、PostgreSQL table engine のドキュメントを参照してください。
3
インテグレーションをテストする
- ClickHouse で最初の行を表示します:
- PostgreSQL に戻り、テーブルに数行を追加します:
- 新しい 2 行が ClickHouse テーブルに表示されるはずです:
- ClickHouse テーブルに行を追加するとどうなるか見てみましょう:
- ClickHouse で追加した行が PostgreSQL のテーブルに表示されます:
PostrgeSQL テーブルエンジン を使用した、PostgreSQL と ClickHouse の基本的なインテグレーションを紹介しました。
スキーマの指定、一部のカラムのみを返す設定、複数のレプリカへの接続など、さらに多くの機能については、PostgreSQL テーブルエンジン のドキュメントページをご覧ください。あわせて、ブログ記事 ClickHouse and PostgreSQL - a match made in data heaven - part 1 もご覧ください。
MaterializedPostgreSQL データベースエンジンを使用する
1
PostgreSQL で
postgresql.confで、最小の listen レベル、レプリケーション用の WAL レベル、およびレプリケーションスロットを設定します。
logical の WAL レベルと、2 つ以上のレプリケーションスロットが必要です- 管理者アカウントを使用して、ClickHouse から接続するためのユーザーを作成します:
- 新しいデータベースを作成します:
psqlで新しいデータベースに接続します:
- 新しいテーブルを作成します:
- 初期データを追加します:
- レプリケーション用の新しいユーザーによる新しいデータベースへの接続を許可するように、PostgreSQL を設定します。以下は、
pg_hba.confファイルに追加する最小限のエントリです。
- 次のように
pg_hba.confの設定を再読み込みします (お使いのバージョンに応じて調整してください) :
- 新しい
clickhouse_userでログインを確認します:
2
ClickHouse で
- ClickHouse CLI にログインします
- データベースエンジン向けの PostgreSQL 実験的機能を有効にします:
- レプリケートする新しいデータベースを作成し、初期テーブルを定義します:
PostgreSQL データベースエンジンの完全なガイドについては、https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings を参照してください
- 初期テーブルにデータがあることを確認します:
3
基本的なレプリケーションをテストする
- PostgreSQL で、新しい行を追加します:
- ClickHouse で、新しい行が表示されていることを確認します:
4
まとめ
このインテグレーションガイドでは、テーブルを含むデータベースをレプリケートする簡単な例を紹介しましたが、データベース全体をレプリケートしたり、既存のレプリケーションに新しいテーブルやスキーマを追加したりする、より高度なオプションもあります。このレプリケーションでは DDL コマンドはサポートされていませんが、構造変更を検出してテーブルを再読み込みするようにエンジンを設定できます。
高度なオプションで利用できるその他の機能については、リファレンスドキュメントを参照してください。