PostgreSQL
Полное руководство по миграции с PostgreSQL на ClickHouse, включая рекомендации по моделированию данных и эквивалентным понятиям, доступно здесь. Ниже описано, как настроить подключение между ClickHouse и PostgreSQL.
Подключение ClickHouse к PostgreSQL
На этой странице рассматриваются следующие варианты интеграции PostgreSQL с ClickHouse:
- использование движка таблиц
PostgreSQLдля чтения данных из таблицы PostgreSQL - использование экспериментального движка баз данных
MaterializedPostgreSQLдля синхронизации базы данных в PostgreSQL с базой данных в ClickHouse
Мы рекомендуем использовать ClickPipes — управляемый сервис интеграции для ClickHouse Cloud на базе PeerDB. В качестве альтернативы PeerDB доступен как open-source CDC‑инструмент, специально разработанный для репликации базы данных PostgreSQL как в самостоятельно развернутый ClickHouse, так и в ClickHouse Cloud.
Использование табличного движка PostgreSQL
Табличный движок PostgreSQL позволяет выполнять операции SELECT и INSERT над данными, хранящимися на удалённом сервере PostgreSQL, из ClickHouse.
В этой статье иллюстрируются базовые способы интеграции на примере одной таблицы.
1. Настройка PostgreSQL
- В
postgresql.confдобавьте следующую запись, чтобы разрешить PostgreSQL прослушивать сетевые интерфейсы:
- Создайте пользователя для подключения из ClickHouse. Для демонстрации в этом примере ему назначаются полные права суперпользователя.
- Создайте новую базу данных в PostgreSQL:
- Создайте новую таблицу:
- Добавим несколько строк для тестирования:
- Чтобы настроить PostgreSQL на разрешение подключений к новой базе данных от нового пользователя для репликации, добавьте следующую запись в файл
pg_hba.conf. Обновите строку с адресом, указав подсеть или IP-адрес вашего сервера PostgreSQL:
- Перезагрузите конфигурацию
pg_hba.conf(скорректируйте эту команду в соответствии с используемой версией PostgreSQL):
- Убедитесь, что новый пользователь
clickhouse_userможет подключиться:
Если вы используете эту возможность в ClickHouse Cloud, возможно, вам потребуется разрешить IP-адресам ClickHouse Cloud доступ к вашему экземпляру PostgreSQL. Обратитесь к ClickHouse Cloud Endpoints API, чтобы получить сведения об исходящем трафике.
2. Определите таблицу в ClickHouse
- Подключитесь к
clickhouse-client:
- Создайте новую базу данных:
- Создайте таблицу, использующую
PostgreSQL:
Минимально необходимые параметры:
| parameter | Description | example |
|---|---|---|
| host:port | имя хоста или IP и порт | postgres-host.domain.com:5432 |
| database | имя базы данных PostgreSQL | db_in_psg |
| user | имя пользователя для подключения к PostgreSQL | clickhouse_user |
| password | пароль для подключения к PostgreSQL | ClickHouse_123 |
См. страницу документации PostgreSQL table engine для полного списка параметров.
3 Тестирование интеграции
- В ClickHouse просмотрите несколько первых строк:
Таблица ClickHouse должна автоматически заполниться двумя строками, которые уже существовали в таблице PostgreSQL:
- Вернитесь в PostgreSQL и добавьте несколько записей в таблицу:
- Эти две новые строки должны появиться в вашей таблице ClickHouse:
Ответ должен выглядеть следующим образом:
- Давайте посмотрим, что произойдёт при добавлении строк в таблицу ClickHouse:
- Строки, добавленные в ClickHouse, должны появиться в таблице PostgreSQL:
В этом примере была продемонстрирована базовая интеграция между PostgreSQL и ClickHouse с использованием движка таблицы PostrgeSQL.
Ознакомьтесь с документацией по движку таблицы PostgreSQL, чтобы узнать о дополнительных возможностях, таких как указание схем, возврат только подмножества столбцов и подключение к нескольким репликам. Также рекомендуем ознакомиться с записью в блоге ClickHouse and PostgreSQL - a match made in data heaven - part 1.
Использование движка базы данных MaterializedPostgreSQL
Движок базы данных PostgreSQL использует возможности репликации PostgreSQL для создания реплики базы данных со всеми или частью схем и таблиц. В этой статье показаны базовые методы интеграции на примере одной базы данных, одной схемы и одной таблицы.
В описанных ниже процедурах используются PostgreSQL CLI (psql) и ClickHouse CLI (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
- подключитесь к CLI ClickHouse
- Включите экспериментальную поддержку PostgreSQL в движке базы данных:
- Создайте новую базу данных для репликации и создайте в ней начальную таблицу:
минимальные параметры:
| parameter | Описание | пример |
|---|---|---|
| host:port | имя хоста или IP и порт | postgres-host.domain.com:5432 |
| database | имя базы данных PostgreSQL | db1 |
| user | имя пользователя для подключения к PostgreSQL | clickhouse_user |
| password | пароль для подключения к PostgreSQL | ClickHouse_123 |
| settings | дополнительные настройки для движка | materialized_postgresql_tables_list = 'table1' |
Полное руководство по движку базы данных PostgreSQL см. в разделе https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Убедитесь, что в исходной таблице есть данные:
3. Проверьте базовую репликацию
- В PostgreSQL добавьте новые строки:
- В ClickHouse проверьте, что новые строки видны:
4. Итоги
В данном руководстве по интеграции был рассмотрен простой пример репликации базы данных с одной таблицей, однако существуют и более продвинутые варианты, включая репликацию всей базы данных или добавление новых таблиц и схем к уже настроенным репликациям. Хотя DDL-команды не поддерживаются в этой схеме репликации, движок можно настроить на обнаружение изменений и перезагрузку таблиц при внесении структурных изменений.
Для получения информации о расширенных возможностях см. справочную документацию.