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

MaterializedPostgreSQL

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

ClickHouse Cloudユーザーは、PostgreSQLをClickHouseにレプリケーションするためにClickPipesの使用を推奨します。これはPostgreSQLの高性能なChange Data Capture (CDC)をネイティブにサポートします。

PostgreSQLテーブルの初期データダンプを使用してClickHouseテーブルを作成し、レプリケーションプロセスを開始します。つまり、リモート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テーブルエンジンは、PostgreSQLバージョン>= 11でのみ動作します。これは実装がpg_replication_slot_advance PostgreSQL関数を必要とするためです。

仮想カラム

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

  • _sign — 削除マーク。タイプ: Int8。可能な値:

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

これらのカラムはテーブル作成時に追加する必要はありません。常にSELECTクエリでアクセスできます。 _versionカラムはWAL内のLSN位置と等しく、レプリケーションの最新状態を確認するために使用できます。

注記

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