MaterializedPostgreSQL テーブルエンジン
ClickHouse Cloud のユーザーには、PostgreSQL から ClickHouse へのレプリケーションには ClickPipes の利用を推奨します。これは PostgreSQL 向けの高性能な Change Data Capture(CDC)をネイティブにサポートします。
PostgreSQL テーブルの初期データダンプを用いて ClickHouse テーブルを作成し、その後レプリケーション処理を開始します。具体的には、リモートの PostgreSQL データベース上の PostgreSQL テーブルで発生する新しい変更を適用するためのバックグラウンドジョブを実行します。
このテーブルエンジンは実験的機能です。使用するには、設定ファイル内、または SET コマンドを使用して allow_experimental_materialized_postgresql_table を 1 に設定します。
:::
複数のテーブルが必要な場合は、テーブルエンジンではなく MaterializedPostgreSQL データベースエンジンを使用し、レプリケートするテーブルを指定する materialized_postgresql_tables_list 設定(将来的にはデータベースの schema も追加可能になる予定)を利用することを強く推奨します。これにより、CPU 使用量を抑えつつ、接続数およびリモート PostgreSQL データベース内のレプリケーションスロット数を減らすことができ、はるかに効率的になります。
テーブルを作成する
エンジンパラメーター
host:port— PostgreSQL サーバーのアドレス。database— リモートデータベース名。table— リモートテーブル名。user— PostgreSQL ユーザー。password— ユーザーのパスワード。
要件
-
PostgreSQL の設定ファイルにおいて、wal_level は値
logicalに設定されており、max_replication_slotsパラメータは少なくとも2に設定されている必要があります。 -
MaterializedPostgreSQLエンジンを使用するテーブルには、PostgreSQL テーブルのレプリカ識別インデックス(デフォルトではプライマリキー)と同一のプライマリキーが必要です(レプリカ識別インデックスの詳細を参照してください)。 -
Atomic データベースエンジンのみ使用できます。
-
MaterializedPostgreSQLテーブルエンジンは、その実装で pg_replication_slot_advance PostgreSQL 関数を必要とするため、PostgreSQL バージョン 11 以上でのみ動作します。
仮想カラム
これらのカラムはテーブル作成時に明示的に追加する必要はありません。SELECT クエリで常に参照可能です。
_version カラムは WAL 内の LSN 位置に対応するため、レプリケーションがどの程度最新かを確認するために使用できます。
TOAST 値のレプリケーションはサポートされておらず、データ型のデフォルト値が使用されます。