PostgreSQL
Полное руководство по миграции с PostgreSQL на ClickHouse, включая рекомендации по моделированию данных и эквивалентным концепциям, можно найти здесь. В следующем разделе описывается, как подключить ClickHouse и PostgreSQL.
Подключение ClickHouse к PostgreSQL
Эта страница охватывает следующие варианты интеграции PostgreSQL с ClickHouse:
- использование ClickPipes, управляемого интеграционного сервиса для ClickHouse Cloud - сейчас в Частном Предварительном Просмотре. Пожалуйста, зарегистрируйтесь здесь
- использование
PeerDB by ClickHouse
, инструмента CDC, специально разработанного для репликации баз данных PostgreSQL как на самоуправляемом ClickHouse, так и на ClickHouse Cloud- PeerDB теперь доступен нативно в ClickHouse Cloud - молниеносный Postgres к ClickHouse CDC с нашим новым ClickPipe коннектором - сейчас в Частном Предварительном Просмотре. Пожалуйста, зарегистрируйтесь здесь
- использование
PostgreSQL
движка таблиц для чтения из таблицы PostgreSQL - использование экспериментального
MaterializedPostgreSQL
движка базы данных для синхронизации базы данных в PostgreSQL с базой данных в ClickHouse
Использование ClickPipes (на базе PeerDB)
PeerDB теперь доступен нативно в ClickHouse Cloud - молниеносный Postgres к ClickHouse CDC с нашим новым 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. Проверьте ClickHouse API конечных точек Cloud для получения сведений о выходном трафике.
2. Определите таблицу в ClickHouse
- Войдите в
clickhouse-client
:
- Давайте создадим новую базу данных:
- Создайте таблицу, которая использует
PostgreSQL
:
Минимальные необходимые параметры:
parameter | Description | example |
---|---|---|
host:port | hostname or IP and port | postgres-host.domain.com:5432 |
database | PostgreSQL database name | db_in_psg |
user | username to connect to postgres | clickhouse_user |
password | password to connect to 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 и минимум 2
слота репликации.
- Используя учетную запись администратора, создайте пользователя для подключения из ClickHouse:
*для демонстрационных целей предоставлены полные права суперпользователя.
- Создайте новую базу данных:
- Подключитесь к новой базе данных в
psql
:
- Создайте новую таблицу:
- Добавьте начальные строки:
- Настройте PostgreSQL для разрешения подключений к новой базе данных с новым пользователем для репликации. Ниже представлена минимальная запись для добавления в файл
pg_hba.conf
:
*для демонстрационных целей используется метод аутентификации с открытым текстом. обновите строку адреса, указав либо подсеть, либо адрес сервера согласно документации PostgreSQL.
- Перезагрузите конфигурацию
pg_hba.conf
чем-то вроде этого (откорректируйте для вашей версии):
- Проверьте вход с новым
clickhouse_user
:
2. В ClickHouse
- Войдите в CLI ClickHouse
- Включите экспериментальную функцию PostgreSQL для движка базы данных:
- Создайте новую базу данных для репликации и определите начальную таблицу:
минимальные параметры:
parameter | Description | example |
---|---|---|
host:port | hostname or IP and port | postgres-host.domain.com:5432 |
database | PostgreSQL database name | db1 |
user | username to connect to postgres | clickhouse_user |
password | password to connect to postgres | ClickHouse_123 |
settings | additional settings for the engine | materialized_postgresql_tables_list = 'table1' |
Для полного руководства по движку базы данных PostgreSQL, обратитесь к https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Убедитесь, что в начальной таблице есть данные:
3. Протестируйте основную репликацию
- В PostgreSQL добавьте новые строки:
- В ClickHouse убедитесь, что новые строки видны:
4. Резюме
Данный руководства по интеграции сосредоточено на простом примере репликации базы данных с таблицей, однако существуют более сложные варианты, которые включают репликацию всей базы данных или добавление новых таблиц и схем в существующие репликации. Хотя DDL команды не поддерживаются для этой репликации, движок может быть настроен для обнаружения изменений и перезагрузки таблиц, когда происходят структурные изменения.
Для получения дополнительных функций доступных для более сложных опций, пожалуйста, смотрите документацию ссылающуюся.