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

PostgreSQL

Полное руководство по миграции с PostgreSQL на ClickHouse, включая рекомендации по моделированию данных и эквивалентным концепциям, можно найти здесь. В следующем разделе описывается, как подключить ClickHouse и PostgreSQL.

Подключение 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 CDC с нашим новым 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. Проверьте ClickHouse API конечных точек Cloud для получения сведений о выходном трафике.

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

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

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

parameterDescriptionexample
host:porthostname or IP and portpostgres-host.domain.com:5432
databasePostgreSQL database namedb_in_psg
userusername to connect to postgresclickhouse_user
passwordpassword to connect to 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 для создания реплики базы данных со всеми или подмножеством схем и таблиц. Эта статья иллюстрирует основные методы интеграции, используя одну базу данных, одну схему и одну таблицу.

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

1. В PostgreSQL

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

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

*ClickHouse требует минимум логического уровня wal и минимум 2 слота репликации.

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

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

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

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

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

2. В ClickHouse

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

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

parameterDescriptionexample
host:porthostname or IP and portpostgres-host.domain.com:5432
databasePostgreSQL database namedb1
userusername to connect to postgresclickhouse_user
passwordpassword to connect to postgresClickHouse_123
settingsadditional settings for the enginematerialized_postgresql_tables_list = 'table1'
к сведению

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

  1. Убедитесь, что в начальной таблице есть данные:

3. Протестируйте основную репликацию

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

4. Резюме

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

к сведению

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