diff --git a/docs/en/engines/database-engines/materialized-postgresql.md b/docs/en/engines/database-engines/materialized-postgresql.md index ec34d5fbd34..a5e83140651 100644 --- a/docs/en/engines/database-engines/materialized-postgresql.md +++ b/docs/en/engines/database-engines/materialized-postgresql.md @@ -9,7 +9,6 @@ Creates ClickHouse database with all the tables existing in PostgreSQL, and all ClickHouse server works as PostgreSQL replica. It reads WAL and performs DML queries. DDL is not replicated, but can be handled (described below). - ## Creating a Database {#creating-a-database} ``` sql diff --git a/docs/en/engines/table-engines/integrations/materialized-postgresql.md b/docs/en/engines/table-engines/integrations/materialized-postgresql.md index 1639be791e9..c5dc807e95b 100644 --- a/docs/en/engines/table-engines/integrations/materialized-postgresql.md +++ b/docs/en/engines/table-engines/integrations/materialized-postgresql.md @@ -5,6 +5,10 @@ toc_title: MaterializedPostgreSQL # MaterializedPostgreSQL {#materialize-postgresql} +Creates ClickHouse table with an initial data dump of PostgreSQL table and starts replication process, i.e. executes background job to apply new changes as they happen on PostgreSQL table in the remote PostgreSQL database. + +If more than one table is required, it is highly recommended to use the [MaterializedPostgreSQL](../../engines/database-engines/materialized-postgresql.md) database engine instead of the table engine and use the [materialized_postgresql_tables_list](../../operations/settings/settings.md#materialized-postgresql-tables-list) setting, which specifies the tables to be replicated. It will be much better in terms of CPU, fewer connections and fewer replication slots inside the remote PostgreSQL database. + ## Creating a Table {#creating-a-table} ``` sql @@ -13,19 +17,29 @@ ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres PRIMARY KEY key; ``` +**Engine Parameters** + +- `host:port` — PostgreSQL server address. +- `database` — Remote database name. +- `table` — Remote table name. +- `user` — PostgreSQL user. +- `password` — User password. + ## Requirements {#requirements} 1. The [wal_level](https://www.postgresql.org/docs/current/runtime-config-wal.html) setting must have a value `logical` and `max_replication_slots` parameter must have a value at least `2` in the PostgreSQL config file. -2. A table with `MaterializedPostgreSQL` engine must have a primary key — the same as a replica identity index (by default: primary key) of a PostgreSQL table (see [details on replica identity index](../../database-engines/materialized-postgresql.md#requirements)). +2. A table with `MaterializedPostgreSQL` engine must have a primary key — the same as a replica identity index (by default: primary key) of a PostgreSQL table (see [details on replica identity index](../../engines/database-engines/materialized-postgresql.md#requirements)). 3. Only database [Atomic](https://en.wikipedia.org/wiki/Atomicity_(database_systems)) is allowed. ## Virtual columns {#virtual-columns} -- `_version` (type: UInt64) +- `_version` — Transaction counter. Type: [UInt64](../../sql-reference/data-types/int-uint.md). -- `_sign` (type: Int8) +- `_sign` — Deletion mark. Type: [Int8](../../sql-reference/data-types/int-uint.md). Possible values: + - `1` — Row is not deleted, + - `-1` — Row is deleted. These columns do not need to be added when a table is created. They are always accessible in `SELECT` query. `_version` column equals `LSN` position in `WAL`, so it might be used to check how up-to-date replication is. diff --git a/docs/ru/engines/database-engines/materialized-postgresql.md b/docs/ru/engines/database-engines/materialized-postgresql.md index 064b231c2f1..8ac4c9d3e38 100644 --- a/docs/ru/engines/database-engines/materialized-postgresql.md +++ b/docs/ru/engines/database-engines/materialized-postgresql.md @@ -9,7 +9,6 @@ toc_title: MaterializedPostgreSQL Сервер ClickHouse работает как реплика PostgreSQL. Он читает файл `binlog` и выполняет DDL и DML-запросы. - ## Создание базы данных {#creating-a-database} ``` sql diff --git a/docs/ru/engines/table-engines/integrations/materialized-postgresql.md b/docs/ru/engines/table-engines/integrations/materialized-postgresql.md index aaa0a7af1d8..e5fb4dcb213 100644 --- a/docs/ru/engines/table-engines/integrations/materialized-postgresql.md +++ b/docs/ru/engines/table-engines/integrations/materialized-postgresql.md @@ -5,6 +5,10 @@ toc_title: MaterializedPostgreSQL # MaterializedPostgreSQL {#materialize-postgresql} +Создает таблицу ClickHouse с исходным дампом данных таблицы PostgreSQL и запускает процесс репликации, т.е. выполняется применение новых изменений в фоне, как эти изменения происходят в таблице PostgreSQL в удаленной базе данных PostgreSQL. + +Если требуется более одной таблицы, то очень рекомендуется использовать движок баз данных [MaterializedPostgreSQL](../../engines/database-engines/materialized-postgresql.md) вместо движка таблиц и использовать настройку [materialized_postgresql_tables_list](../../operations/settings/settings.md#materialized-postgresql-tables-list), с помощью которой указать таблицы, которые нужно реплицировать. Это будет намного лучше с точки зрения нагрузки на процессор, меньшего количества подключений и меньшего количества слотов репликации внутри удаленной базы данных PostgreSQL. + ## Создание таблицы {#creating-a-table} ``` sql @@ -13,6 +17,14 @@ ENGINE = MaterializedPostgreSQL('postgres1:5432', 'postgres_database', 'postgres PRIMARY KEY key; ``` +**Параметры движка** + +- `host:port` — адрес сервера PostgreSQL. +- `database` — имя базы данных на удалённом сервере. +- `table` — имя таблицы на удалённом сервере. +- `user` — пользователь PostgreSQL. +- `password` — пароль пользователя. + ## Требования {#requirements} 1. Настройка [wal_level](https://postgrespro.ru/docs/postgrespro/10/runtime-config-wal) должна иметь значение `logical`, параметр `max_replication_slots` должен быть равен по меньшей мере `2` в конфигурационном файле в PostgreSQL. @@ -23,9 +35,10 @@ PRIMARY KEY key; ## Виртуальные столбцы {#virtual-columns} -- `_version` (тип: UInt64) - -- `_sign` (тип: Int8) +- `_version` — счетчик транзакций. Тип: [UInt64](../../sql-reference/data-types/int-uint.md). +- `_sign` — метка удаления. Тип: [Int8](../../sql-reference/data-types/int-uint.md). Возможные значения: + - `1` — строка не удалена, + - `-1` — строка удалена. Эти столбцы не нужно добавлять при создании таблицы. Они всегда доступны в `SELECT` запросе. Столбец `_version` равен позиции `LSN` в `WAL`, поэтому его можно использовать для проверки актуальности репликации.