MaterializedPostgreSQL
Пользователям ClickHouse Cloud рекомендуется использовать ClickPipes для репликации PostgreSQL в ClickHouse. Это нативно поддерживает высокопроизводительное захватывание изменений данных (CDC) для PostgreSQL.
Создает таблицу 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
— пароль пользователя.
Требования
-
Настройка wal_level должна иметь значение
logical
, а параметрmax_replication_slots
должен иметь значение не менее2
в файле конфигурации PostgreSQL. -
Таблица с движком
MaterializedPostgreSQL
должна иметь первичный ключ — тот же, что индекс реплики идентичности (по умолчанию: первичный ключ) таблицы PostgreSQL (см. подробности о индексе реплики идентичности). -
Допускается только база данных Atomic.
-
Движок таблицы
MaterializedPostgreSQL
работает только для версий PostgreSQL >= 11, поскольку реализация требует функции PostgreSQL pg_replication_slot_advance.
Виртуальные столбцы
-
_version
— счетчик транзакций. Тип: UInt64. -
_sign
— маркер удаления. Тип: Int8. Возможные значения:1
— Строка не удалена,-1
— Строка удалена.
Эти столбцы не нужно добавлять при создании таблицы. Они всегда доступны в запросе SELECT
.
Столбец _version
соответствует позиции LSN
в WAL
, поэтому его можно использовать для проверки актуальности репликации.
Репликация значений TOAST не поддерживается. Будет использоваться значение по умолчанию для типа данных.