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