データモデリングや対応する概念に関するアドバイスを含む、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を使用するテーブルを作成します:
| パラメータ | 説明 | 例 |
|---|---|---|
| host:port | ホスト名または IP アドレスとポート | postgres-host.domain.com:5432 |
| database | PostgreSQL のデータベース名 | db_in_psg |
| user | Postgres に接続するためのユーザー名 | clickhouse_user |
| password | Postgres に接続するためのパスワード | ClickHouse_123 |
パラメータの完全な一覧については、PostgreSQL テーブルエンジン のドキュメントページを参照してください。
3 インテグレーションをテストする
- ClickHouse で、初期状態の行を表示します:
- PostgreSQL に戻り、テーブルに2行ほど追加します:
- その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 データベースエンジンの実験的機能を有効にします:
- レプリケーション対象の新しいデータベースを作成し、初期テーブルを定義します。
| パラメータ | 説明 | 例 |
|---|---|---|
| host:port | ホスト名または IP アドレスとポート | postgres-host.domain.com:5432 |
| database | PostgreSQL のデータベース名 | db1 |
| user | Postgres に接続するためのユーザー名 | clickhouse_user |
| password | Postgres に接続するためのパスワード | ClickHouse_123 |
| settings | エンジンの追加設定 | materialized_postgresql_tables_list = ‘table1’ |
PostgreSQL データベースエンジンの完全なガイドについては、https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings を参照してください。
- 初期テーブルにデータがあることを確認します:
3. 基本レプリケーションをテストする
- PostgreSQL で新しい行を追加します:
- ClickHouse で、新しい行が表示されることを確認します:
4. まとめ
高度なオプションで利用できるその他の機能については、参照ドキュメントを参照してください。