メインコンテンツまでスキップ
メインコンテンツまでスキップ

MaterializedPostgreSQL

Experimental feature. Learn more.
Not supported in ClickHouse Cloud
注記

ClickHouse Cloud のユーザーは、PostgreSQL から ClickHouse へのレプリケーションには ClickPipes の使用を推奨します。これは PostgreSQL に対する高性能なデータ変更キャプチャ (CDC) をネイティブにサポートしています。

ClickHouse テーブルを PostgreSQL テーブルの初期データダンプで作成し、レプリケーションプロセスを開始します。つまり、リモートの PostgreSQL データベース内の PostgreSQL テーブルで新しい変更が行われるたびに適用するバックグラウンドジョブを実行します。

注記

このテーブルエンジンは実験的です。使用するには、設定ファイルで allow_experimental_materialized_postgresql_table を 1 に設定するか、SET コマンドを使用してください:

複数のテーブルが必要な場合は、テーブルエンジンの代わりに MaterializedPostgreSQL データベースエンジンを使用し、レプリケーションするテーブルを指定する materialized_postgresql_tables_list 設定を使用することを強く推奨します(データベースの schema を追加することも可能です)。これにより CPU 使用率が改善され、接続数やリモート PostgreSQL データベース内のレプリケーションスロット数が減少します。

テーブルの作成

エンジンのパラメータ

  • host:port — PostgreSQL サーバーのアドレス。
  • database — リモートデータベース名。
  • table — リモートテーブル名。
  • user — PostgreSQL ユーザー。
  • password — ユーザーパスワード。

要件

  1. wal_level 設定は logical に設定されている必要があり、max_replication_slots パラメータは PostgreSQL 設定ファイル内で少なくとも 2 に設定されている必要があります。

  2. MaterializedPostgreSQL エンジンを持つテーブルは、PostgreSQL テーブルのレプリカアイデンティティインデックス(デフォルトでは:主キー)と同じ主キーを持たなければなりません(レプリカアイデンティティインデックスの詳細はこちら)。

  3. データベースは Atomic のみが許可されています。

  4. MaterializedPostgreSQL テーブルエンジンは、pg_replication_slot_advance PostgreSQL 関数を必要とするため、PostgreSQL バージョン >= 11 のみで動作します。

仮想カラム

  • _version — トランザクションカウンター。型: UInt64

  • _sign — 削除マーク。型: Int8。可能な値:

    • 1 — 行は削除されていない、
    • -1 — 行は削除されている。

これらのカラムはテーブル作成時に追加する必要はありません。常に SELECT クエリでアクセス可能です。 _version カラムは WAL 内の LSN ポジションと等しいため、レプリケーションがどれほど最新かをチェックするために使用できます。

注記

TOAST 値のレプリケーションはサポートされていません。データ型のデフォルト値が使用されます。