PostgreSQL
Полное руководство по миграции с PostgreSQL на ClickHouse, включая советы по моделированию данных и эквивалентным концепциям, можно найти здесь. В следующем разделе описывается, как подключить ClickHouse к PostgreSQL.
Подключение ClickHouse к PostgreSQL
На этой странице описаны следующие варианты интеграции PostgreSQL с ClickHouse:
- использование движка таблиц
PostgreSQL
для чтения из таблицы PostgreSQL - использование экспериментального движка базы данных
MaterializedPostgreSQL
для синхронизации базы данных в PostgreSQL с базой данных в ClickHouse
Рекомендуем использовать ClickPipes, управляемый сервис интеграции для ClickHouse Cloud на базе PeerDB. В качестве альтернативы доступен PeerDB как инструмент 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
(отрегулируйте эту команду в зависимости от вашей версии):
- Проверьте, может ли новый пользователь
clickhouse_user
войти в систему:
Если вы используете эту функцию в ClickHouse Cloud, вам может понадобиться разрешить IP-адреса ClickHouse Cloud для доступа к вашему экземпляру PostgreSQL. Проверьте API конечных точек Cloud ClickHouse для получения информации о выходящем трафике.
2. Определение таблицы в ClickHouse
- Войдите в
clickhouse-client
:
- Создадим новую базу данных:
- Создайте таблицу, которая использует
PostgreSQL
:
Минимальные требуемые параметры:
параметр | Описание | пример |
---|---|---|
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 для создания реплики базы данных со всеми или частью схем и таблиц. Эта статья иллюстрирует основные методы интеграции с использованием одной базы данных, одной схемы и одной таблицы.
В следующих процедурах используются CLI PostgreSQL (psql) и CLI 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
- Войдите в CLI ClickHouse:
- Включите экспериментальную функцию PostgreSQL для движка базы данных:
- Создайте новую базу данных для репликации и определите начальную таблицу:
минимальные параметры:
параметр | Описание | пример |
---|---|---|
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 не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц при внесении структурных изменений.
Для получения информации о дополнительных функциях, доступных для продвинутых опций, пожалуйста, смотрите справочную документацию.