Соединение ClickHouse с PostgreSQL
Эта страница покрывает следующие варианты интеграции PostgreSQL с ClickHouse:
- использование ClickPipes, управляемого сервиса интеграции для ClickHouse Cloud - сейчас на публичной бета-версии. Пожалуйста, зарегистрируйтесь здесь
 - использование 
PeerDB by ClickHouse, инструмента CDC, специально разработанного для репликации баз данных PostgreSQL как для самоуправляемого ClickHouse, так и для ClickHouse Cloud- PeerDB теперь доступен нативно в ClickHouse Cloud - Молниеносная репликация Postgres в ClickHouse с нашим новым соединителем ClickPipe - сейчас на публичной бета-версии. Пожалуйста, зарегистрируйтесь здесь
 
 - использование движка таблицы 
PostgreSQLдля чтения данных из таблицы PostgreSQL - использование экспериментального движка базы данных 
MaterializedPostgreSQLдля синхронизации базы данных в PostgreSQL с базой данных в ClickHouse 
Использование ClickPipes (на базе PeerDB)
PeerDB теперь доступен нативно в ClickHouse Cloud - Молниеносная репликация Postgres в ClickHouse с нашим новым соединителем ClickPipe - сейчас на публичной бета-версии. Пожалуйста, зарегистрируйтесь здесь
Использование движка таблицы PostgreSQL
Движок таблицы PostgreSQL позволяет выполнять операции SELECT и INSERT на данных, хранящихся на удаленном сервере PostgreSQL из ClickHouse. Эта статья иллюстрирует основные методы интеграции с использованием одной таблицы.
1. Настройка PostgreSQL
- В 
postgresql.confдобавьте следующую запись, чтобы разрешить PostgreSQL слушать на сетевых интерфейсах: 
- Создайте пользователя для подключения из ClickHouse. В этом примере для демонстрационных целей предоставляются полные права суперпользователя.
 
- Создайте новую базу данных в PostgreSQL:
 
- Создайте новую таблицу:
 
- Добавим несколько строк для тестирования:
 
- Чтобы настроить PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации, добавьте следующую запись в файл 
pg_hba.conf. Обновите адресное значение, указав подсеть или IP-адрес вашего сервера PostgreSQL: 
- Перезагрузите конфигурацию 
pg_hba.conf(откорректируйте эту команду в зависимости от вашей версии): 
- Убедитесь, что новый 
clickhouse_userможет войти в систему: 
Если вы используете эту функцию в ClickHouse Cloud, вы можете разрешить IP-адресам ClickHouse Cloud доступ к вашему экземпляру PostgreSQL. Проверьте API конечных точек ClickHouse для получения данных о выходном трафике.
2. Определение таблицы в ClickHouse
- Войдите в 
clickhouse-client: 
- Создадим новую базу данных:
 
- Создайте таблицу, использующую 
PostgreSQL: 
Минимальные необходимые параметры:
| parameter | Описание | пример | 
|---|---|---|
| host:port | имя хоста или IP и порт | postgres-host.domain.com:5432 | 
| database | имя базы данных PostgreSQL | db_in_psg | 
| user | имя пользователя для подключения к postgres | clickhouse_user | 
| password | пароль для подключения к postgres | ClickHouse_123 | 
Посмотрите страницу документации о движке таблицы PostgreSQL для полного списка параметров.
3. Тестирование интеграции
- В ClickHouse просмотрите начальные строки:
 
Таблица ClickHouse должна автоматически заполняться двумя строками, которые уже существовали в таблице PostgreSQL:
- Вернитесь в PostgreSQL и добавьте пару строк в таблицу:
 
- Эти две новые строки должны появиться в вашей таблице ClickHouse:
 
Ответ должен быть:
- Давайте посмотрим, что произойдет, когда вы добавите строки в таблицу ClickHouse:
 
- Строки, добавленные в ClickHouse, должны появиться в таблице PostgreSQL:
 
Этот пример продемонстрировал основную интеграцию между PostgreSQL и ClickHouse с использованием движка таблицы PostgreSQL. Ознакомьтесь со страницей документации о движке таблицы PostgreSQL для получения дополнительных функций, таких как указание схем, возврат только подмножества столбцов и подключение к нескольким репликам. Также посмотрите ClickHouse и PostgreSQL - идеальная пара в мире данных - часть 1 в блоге.
Использование движка базы данных MaterializedPostgreSQL
Движок базы данных PostgreSQL использует функции репликации PostgreSQL для создания реплики базы данных со всеми или отдельными схемами и таблицами. Эта статья иллюстрирует основные методы интеграции с использованием одной базы данных, одной схемы и одной таблицы.
В следующих процедурах используются командные строки PostgreSQL (psql) и ClickHouse (clickhouse-client). Сервер PostgreSQL установлен на Linux. У него минимальные настройки, если база данных PostgreSQL - это новая тестовая установка
1. В PostgreSQL
- В 
postgresql.confустановите минимальные уровни прослушивания, уровень репликации wal и слоты репликации: 
добавьте следующие записи:
*ClickHouse требует минимум уровень wal logical и минимум 2 слота репликации
- Используя учетную запись администратора, создайте пользователя для подключения из ClickHouse:
 
*для демонстрационных целей предоставлены полные права суперпользователя.
- создайте новую базу данных:
 
- подключитесь к новой базе данных в 
psql: 
- создайте новую таблицу:
 
- добавьте начальные строки:
 
- Настройте PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации. Ниже приведена минимальная запись для добавления в файл 
pg_hba.conf: 
*для демонстрационных целей используется метод аутентификации с открытым паролем. обновите адресную строку, указав подсеть или адрес сервера в соответствии с документацией PostgreSQL
- перезагрузите конфигурацию 
pg_hba.confс помощью чего-то вроде этого (корректируйте в зависимости от вашей версии): 
- Проверьте вход с новым 
clickhouse_user: 
2. В ClickHouse
- Войдите в ClickHouse CLI
 
- Включите экспериментальную функцию PostgreSQL для движка базы данных:
 
- Создайте новую базу данных для репликации и определите начальную таблицу:
 
Минимальные параметры:
| parameter | Описание | пример | 
|---|---|---|
| host:port | имя хоста или IP и порт | postgres-host.domain.com:5432 | 
| database | имя базы данных PostgreSQL | db1 | 
| user | имя пользователя для подключения к postgres | clickhouse_user | 
| password | пароль для подключения к postgres | ClickHouse_123 | 
| settings | дополнительные настройки для движка | materialized_postgresql_tables_list = 'table1' | 
Для полного руководства по движку базы данных PostgreSQL обращайтесь к https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Убедитесь, что начальная таблица содержит данные:
 
3. Тест базовой репликации
- В PostgreSQL добавьте новые строки:
 
- В ClickHouse проверьте, что новые строки видны:
 
4. Резюме
Этот руководствовал по интеграции сосредоточился на простом примере репликации базы данных с таблицей, однако существуют более продвинутые опции, включая репликацию всей базы данных или добавление новых таблиц и схем к существующим репликациям. Хотя команды DDL не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц, когда вносятся структурные изменения.
Для получения дополнительной информации о функциях доступных для продвинутых опций, смотрите документацию по ссылке.