PostgreSQL
PostgreSQLからClickHouseへの完全な移行ガイド、データモデリングや同等の概念に関するアドバイスを含む内容は、こちらにあります。以下はClickHouseとPostgreSQLを接続する方法について説明します。
ClickHouseとPostgreSQLの接続
このページでは、PostgreSQLとClickHouseを統合するための以下のオプションをカバーしています。
- PostgreSQLテーブルエンジンを使用して、PostgreSQLテーブルから読み取る
- 実験的なMaterializedPostgreSQLデータベースエンジンを使用して、PostgreSQLのデータベースをClickHouseのデータベースと同期する
ClickPipesを使用することをお勧めします。これは、PeerDBによって支援されたClickHouse Cloud向けの管理統合サービスです。別の選択肢として、PostgreSQLデータベースのレプリケーションに特化したオープンソースのCDCツールであるPeerDBも利用可能です。
PostgreSQLテーブルエンジンを使用する
PostgreSQL
テーブルエンジンは、ClickHouseからリモートのPostgreSQLサーバーに保存されたデータに対してSELECTおよびINSERT操作を可能にします。この文書では、1つのテーブルを使用して基本的な統合方法を示します。
1. PostgreSQLの設定
postgresql.conf
に、PostgreSQLがネットワークインターフェースをリッスンできるようにするためのエントリを追加します:
- 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
を使用するテーブルを作成します:
必要な最小パラメーターは次のとおりです:
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で初期行を表示します:
ClickHouseテーブルは、PostgreSQLのテーブルに既に存在していた2行で自動的に埋められるはずです:
- PostgreSQLに戻り、テーブルにいくつかの行を追加します:
- その2つの新しい行がClickHouseテーブルに表示されるはずです:
レスポンスは次のようになります:
- ClickHouseテーブルに行を追加するとどうなるか見てみましょう:
- ClickHouseに追加された行がPostgreSQLのテーブルに表示されるはずです:
この例は、PostgreSQL
テーブルエンジンを使用したPostgreSQLとClickHouse間の基本的な統合を示しました。スキーマの指定、一部のカラムのみを返すこと、複数のレプリカへの接続などの機能については、PostgreSQLテーブルエンジンのドキュメントページを参照してください。また、ClickHouseとPostgreSQL - データの天国での出会い - パート1のブログもご覧ください。
MaterializedPostgreSQLデータベースエンジンを使用する
PostgreSQLデータベースエンジンは、PostgreSQLのレプリケーション機能を使用して、全てまたはサブセットのスキーマとテーブルを持つデータベースのレプリカを作成します。この文書では、1つのデータベース、1つのスキーマ、1つのテーブルを使用して基本的な統合方法を示します。
以下の操作では、PostgreSQL CLI (psql)とClickHouse CLI (clickhouse-client)を使用します。PostgreSQLサーバーはLinuxにインストールされています。以下は新しいテストインストールの最小設定です
1. PostgreSQLで
postgresql.conf
で、最小リッスンレベル、レプリケーションWALレベル、およびレプリケーションスロットを設定します:
次のエントリを追加します:
*ClickHouseはlogical
WALレベルと最低2
のレプリケーションスロットが必要です
- 管理アカウントを使用して、ClickHouseから接続するためのユーザーを作成します:
*デモンストレーション目的で、フルスーパーユーザー権限が付与されています。
- 新しいデータベースを作成します:
psql
で新しいデータベースに接続します:
- 新しいテーブルを作成します:
- 初期行を追加します:
- 新しいユーザーがレプリケーションのために新しいデータベースへの接続を許可するようにPostgreSQLを構成します。以下は
pg_hba.conf
ファイルに追加する最小エントリです:
*デモンストレーション目的で、これは平文パスワード認証方式を使用しています。アドレス行は、PostgreSQLのドキュメントに従ってサーバーのサブネットまたはアドレスで更新してください。
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. まとめ
この統合ガイドでは、テーブルを持つデータベースの複製方法についてのシンプルな例に焦点を当てましたが、実際には全データベースを複製したり、既存のレプリケーションに新しいテーブルやスキーマを追加したりするなどのより高度なオプションも存在します。このレプリケーションではDDLコマンドはサポートされていませんが、エンジンを変更を検出し、構造的な変更が行われた場合にテーブルを再読み込みするように設定できます。
高度なオプションで利用可能なより多くの機能については、リファレンスドキュメントを参照してください。