- PostgreSQL のテーブルから読み取るために
PostgreSQLテーブルエンジンを使用する方法 - PostgreSQL のデータベースを ClickHouse のデータベースと同期するために、実験的な
MaterializedPostgreSQLデータベースエンジンを使用する方法
PostgreSQL テーブルエンジンを使用する
PostgreSQL table engineを使用すると、ClickHouse からリモートの PostgreSQL server に保存されているデータに対して、SELECT および INSERT 操作を実行できます。
この記事では、1 つのテーブルを使ったインテグレーションの基本的な方法を説明します。
1. PostgreSQL の設定
postgresql.confに、PostgreSQL がネットワークインターフェイスで待ち受けるよう、次の設定項目を追加します:
- ClickHouse から接続するためのユーザーを作成します。ここではデモ用に、この例では superuser の全権限を付与します。
- 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を使用するテーブルを作成します:
| parameter | Description | example |
|---|---|---|
| host:port | ホスト名または IP アドレスとポート | postgres-host.domain.com:5432 |
| database | PostgreSQL のデータベース名 | db_in_psg |
| user | PostgreSQL に接続するユーザー名 | clickhouse_user |
| password | PostgreSQL に接続するパスワード | ClickHouse_123 |
パラメータの完全な一覧については、PostgreSQL テーブルエンジン のドキュメントページを参照してください。
3 インテグレーションをテストする
- ClickHouse で初期状態の行を確認します:
- PostgreSQL に戻り、テーブルに数行追加します。
- この 2 行の新しい行が ClickHouse のテーブルに表示されるはずです。
- ClickHouseのテーブルに行を追加すると何が起こるか見てみましょう:
- ClickHouse で追加した行が、PostgreSQL のテーブルに表示されるはずです:
PostrgeSQL テーブルエンジンを使用して、PostgreSQL と ClickHouse の基本的なインテグレーションを紹介しました。
スキーマの指定、一部のカラムだけを返す方法、複数のレプリカへの接続など、さらに多くの機能については、PostgreSQL テーブルエンジンのドキュメントページを参照してください。あわせて、ClickHouse and PostgreSQL - a match made in data heaven - part 1 のブログもご覧ください。
MaterializedPostgreSQL データベースエンジンを使用する
psql) と ClickHouse CLI (clickhouse-client) を使用します。PostgreSQL サーバーは Linux にインストールされているものとします。以下は、PostgreSQL データベースが新規のテストインストールである場合の最小構成です
1. PostgreSQL で
postgresql.confで、最小の listen レベル、レプリケーション用の wal level、および replication slots を設定します。
wal level が少なくとも logical であり、レプリケーションスロットが少なくとも 2 つ必要です
- 管理者アカウントを使用して、ClickHouse から接続するユーザーを作成します:
- 新しいデータベースを作成します:
psqlで新しいデータベースに接続します:
- 新しいテーブルを作成します:
- 初期の行を追加します:
- 新しいユーザーが新しいデータベースにレプリケーション用で接続できるよう、PostgreSQL を設定します。以下は、
pg_hba.confファイルに追加する最小限のエントリです。
- 次のように
pg_hba.confの設定を再読み込みします (使用しているバージョンに合わせて調整してください) :
- 新しい
clickhouse_userでのログインをテストします:
2. ClickHouse で
- ClickHouse CLI にログインします
- データベースエンジン用の PostgreSQL 実験的機能を有効にします:
- レプリケーション対象の新しいデータベースを作成し、初期テーブルを定義します:
| parameter | Description | example |
|---|---|---|
| host:port | ホスト名または IP アドレスとポート | postgres-host.domain.com:5432 |
| database | PostgreSQL データベース名 | db1 |
| user | PostgreSQL に接続するユーザー名 | clickhouse_user |
| password | PostgreSQL に接続するパスワード | ClickHouse_123 |
| settings | エンジンの追加設定 | materialized_postgresql_tables_list = ‘table1’ |
PostgreSQL データベースエンジンの詳細なガイドについては、https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings を参照してください。
- 初期テーブルにデータがあることを確認します:
3. 基本的なレプリケーションをテストする
- PostgreSQL で新しい行を追加します:
- ClickHouse で、新しい行が表示されていることを確認します:
4. まとめ
高度なオプションで利用できる機能の詳細については、リファレンスドキュメントを参照してください。