Перейти к основному содержимому
Перейти к основному содержимому

Соединение ClickHouse с PostgreSQL

Эта страница покрывает следующие варианты интеграции PostgreSQL с ClickHouse:

  • использование ClickPipes, управляемого сервиса интеграции для ClickHouse Cloud - сейчас на публичной бета-версии. Пожалуйста, зарегистрируйтесь здесь
  • использование PeerDB by ClickHouse, инструмента CDC, специально разработанного для репликации баз данных PostgreSQL как для самоуправляемого ClickHouse, так и для ClickHouse Cloud
  • использование движка таблицы PostgreSQL для чтения данных из таблицы PostgreSQL
  • использование экспериментального движка базы данных MaterializedPostgreSQL для синхронизации базы данных в PostgreSQL с базой данных в ClickHouse

Использование ClickPipes (на базе PeerDB)

PeerDB теперь доступен нативно в ClickHouse Cloud - Молниеносная репликация Postgres в ClickHouse с нашим новым соединителем ClickPipe - сейчас на публичной бета-версии. Пожалуйста, зарегистрируйтесь здесь

Использование движка таблицы PostgreSQL

Движок таблицы PostgreSQL позволяет выполнять операции SELECT и INSERT на данных, хранящихся на удаленном сервере PostgreSQL из ClickHouse. Эта статья иллюстрирует основные методы интеграции с использованием одной таблицы.

1. Настройка PostgreSQL

  1. В postgresql.conf добавьте следующую запись, чтобы разрешить PostgreSQL слушать на сетевых интерфейсах:
  1. Создайте пользователя для подключения из ClickHouse. В этом примере для демонстрационных целей предоставляются полные права суперпользователя.
  1. Создайте новую базу данных в PostgreSQL:
  1. Создайте новую таблицу:
  1. Добавим несколько строк для тестирования:
  1. Чтобы настроить PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации, добавьте следующую запись в файл pg_hba.conf. Обновите адресное значение, указав подсеть или IP-адрес вашего сервера PostgreSQL:
  1. Перезагрузите конфигурацию pg_hba.conf (откорректируйте эту команду в зависимости от вашей версии):
  1. Убедитесь, что новый clickhouse_user может войти в систему:
примечание

Если вы используете эту функцию в ClickHouse Cloud, вы можете разрешить IP-адресам ClickHouse Cloud доступ к вашему экземпляру PostgreSQL. Проверьте API конечных точек ClickHouse для получения данных о выходном трафике.

2. Определение таблицы в ClickHouse

  1. Войдите в clickhouse-client:
  1. Создадим новую базу данных:
  1. Создайте таблицу, использующую PostgreSQL:

Минимальные необходимые параметры:

parameterОписаниепример
host:portимя хоста или IP и портpostgres-host.domain.com:5432
databaseимя базы данных PostgreSQLdb_in_psg
userимя пользователя для подключения к postgresclickhouse_user
passwordпароль для подключения к postgresClickHouse_123
примечание

Посмотрите страницу документации о движке таблицы PostgreSQL для полного списка параметров.

3. Тестирование интеграции

  1. В ClickHouse просмотрите начальные строки:

Таблица ClickHouse должна автоматически заполняться двумя строками, которые уже существовали в таблице PostgreSQL:

  1. Вернитесь в PostgreSQL и добавьте пару строк в таблицу:
  1. Эти две новые строки должны появиться в вашей таблице ClickHouse:

Ответ должен быть:

  1. Давайте посмотрим, что произойдет, когда вы добавите строки в таблицу ClickHouse:
  1. Строки, добавленные в ClickHouse, должны появиться в таблице PostgreSQL:

Этот пример продемонстрировал основную интеграцию между PostgreSQL и ClickHouse с использованием движка таблицы PostgreSQL. Ознакомьтесь со страницей документации о движке таблицы PostgreSQL для получения дополнительных функций, таких как указание схем, возврат только подмножества столбцов и подключение к нескольким репликам. Также посмотрите ClickHouse и PostgreSQL - идеальная пара в мире данных - часть 1 в блоге.

Использование движка базы данных MaterializedPostgreSQL

Not supported in ClickHouse Cloud
Experimental feature. Learn more.

Движок базы данных PostgreSQL использует функции репликации PostgreSQL для создания реплики базы данных со всеми или отдельными схемами и таблицами. Эта статья иллюстрирует основные методы интеграции с использованием одной базы данных, одной схемы и одной таблицы.

В следующих процедурах используются командные строки PostgreSQL (psql) и ClickHouse (clickhouse-client). Сервер PostgreSQL установлен на Linux. У него минимальные настройки, если база данных PostgreSQL - это новая тестовая установка

1. В PostgreSQL

  1. В postgresql.conf установите минимальные уровни прослушивания, уровень репликации wal и слоты репликации:

добавьте следующие записи:

*ClickHouse требует минимум уровень wal logical и минимум 2 слота репликации

  1. Используя учетную запись администратора, создайте пользователя для подключения из ClickHouse:

*для демонстрационных целей предоставлены полные права суперпользователя.

  1. создайте новую базу данных:
  1. подключитесь к новой базе данных в psql:
  1. создайте новую таблицу:
  1. добавьте начальные строки:
  1. Настройте PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации. Ниже приведена минимальная запись для добавления в файл pg_hba.conf:

*для демонстрационных целей используется метод аутентификации с открытым паролем. обновите адресную строку, указав подсеть или адрес сервера в соответствии с документацией PostgreSQL

  1. перезагрузите конфигурацию pg_hba.conf с помощью чего-то вроде этого (корректируйте в зависимости от вашей версии):
  1. Проверьте вход с новым clickhouse_user:

2. В ClickHouse

  1. Войдите в ClickHouse CLI
  1. Включите экспериментальную функцию PostgreSQL для движка базы данных:
  1. Создайте новую базу данных для репликации и определите начальную таблицу:

Минимальные параметры:

parameterОписаниепример
host:portимя хоста или IP и портpostgres-host.domain.com:5432
databaseимя базы данных PostgreSQLdb1
userимя пользователя для подключения к postgresclickhouse_user
passwordпароль для подключения к postgresClickHouse_123
settingsдополнительные настройки для движкаmaterialized_postgresql_tables_list = 'table1'
к сведению

Для полного руководства по движку базы данных PostgreSQL обращайтесь к https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings

  1. Убедитесь, что начальная таблица содержит данные:

3. Тест базовой репликации

  1. В PostgreSQL добавьте новые строки:
  1. В ClickHouse проверьте, что новые строки видны:

4. Резюме

Этот руководствовал по интеграции сосредоточился на простом примере репликации базы данных с таблицей, однако существуют более продвинутые опции, включая репликацию всей базы данных или добавление новых таблиц и схем к существующим репликациям. Хотя команды DDL не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц, когда вносятся структурные изменения.

к сведению

Для получения дополнительной информации о функциях доступных для продвинутых опций, смотрите документацию по ссылке.