Skip to main content

Введение

[pg_clickhouse] — это PostgreSQL-расширение с открытым исходным кодом, которое позволяет выполнять аналитические запросы в ClickHouse прямо из PostgreSQL без переписывания SQL. Оно поддерживает PostgreSQL 13 и более поздних версий, а также ClickHouse v23 и более поздних версий. Когда ClickPipes начнет синхронизировать данные с ClickHouse, используйте pg_clickhouse, чтобы быстро и просто import foreign tables в схему PostgreSQL. Затем выполняйте существующие PostgreSQL-запросы к этим таблицам, сохраняя текущую кодовую базу и при этом перенося выполнение в ClickHouse.

Начало работы

Самый простой способ опробовать pg_clickhouse — воспользоваться [Docker-образом], который включает стандартный Docker-образ PostgreSQL с расширениями pg_clickhouse и re2:
См. [руководство], чтобы начать импорт таблиц ClickHouse и выполнять запросы с pushdown.

Тестовый сценарий: TPC-H

В этой таблице сравнивается производительность запросов TPC-H для обычных таблиц PostgreSQL и pg_clickhouse, подключённого к ClickHouse; в обоих случаях данные загружены с коэффициентом масштабирования 1. ✔︎ означает полный pushdown, а тире обозначает отмену запроса через 1 мин. Все тесты выполнялись на MacBook Pro M4 Max с 36 ГБ памяти.

Сборка из исходного кода

Unix (общий случай)

Пакеты разработки для PostgreSQL и curl включают pg_config и curl-config в path, поэтому достаточно просто выполнить make (или gmake), затем make install, а затем в своей базе данных CREATE EXTENSION pg_clickhouse.

Debian / Ubuntu / APT

Подробности о получении пакетов из репозитория PostgreSQL Apt см. в PostgreSQL Apt.

RedHat / CentOS / Yum

Подробнее о получении пакетов из репозитория PostgreSQL Yum см. в PostgreSQL Yum.

Установка из PGXN

После установки указанных выше зависимостей используйте PGXN client (доступный в виде пакетов Homebrew, Apt и Yum под именем pgxnclient) для загрузки, компиляции и установки pg_clickhouse:

Сборка и установка

Чтобы собрать и установить библиотеку ClickHouse и pg_clickhouse, выполните:
Если на вашем хосте установлено несколько версий PostgreSQL, может потребоваться указать подходящую версию pg_config:
Если curl-config отсутствует в переменной PATH на вашем хосте, вы можете указать путь явно:
Если вы столкнулись, например, со следующей ошибкой:
Вам нужно использовать GNU make, который может быть установлен в вашей системе под именем gmake:
Если вы столкнулись, например, со следующей ошибкой:
Убедитесь, что pg_config установлен и доступен в вашем path. Если вы устанавливали PostgreSQL с помощью системы управления пакетами, например RPM, убедитесь, что пакет -devel тоже установлен. При необходимости укажите процессу сборки, где его искать:
Чтобы установить расширение в пользовательский префикс в PostgreSQL 18 и более поздних версиях, передайте аргумент prefix для install (но не для других целей make):
Затем убедитесь, что префикс указан в следующих параметрах [postgresql.conf]:

Тестирование

Чтобы запустить набор тестов после установки расширения, выполните
Если вы столкнулись с такой ошибкой:
Вам нужно запустить набор тестов от имени суперпользователя, например суперпользователя “postgres”, используемого по умолчанию:

Подключение

После установки pg_clickhouse вы можете подключить его к базе данных, войдя под суперпользователем и выполнив:
Если вы хотите установить pg_clickhouse и все связанные с ним объекты в определённую схему, используйте конструкцию SCHEMA, чтобы указать эту схему, например:

Зависимости

Для расширения pg_clickhouse требуются PostgreSQL версии 13 или выше, libcurl и libuuid. Для сборки расширения требуются компиляторы C и C++, libSSL, GNU make и CMake.

План развития

Наш главный приоритет — завершить поддержку pushdown для аналитических рабочих нагрузок, прежде чем добавлять возможности DML. Наш план развития:
  • Обеспечить оптимальное планирование для оставшихся 10 запросов TPC-H без pushdown
  • Протестировать и исправить pushdown для запросов ClickBench
  • Поддержать прозрачный pushdown всех агрегатных функций PostgreSQL
  • Поддержать прозрачный pushdown всех функций PostgreSQL
  • Разрешить настройки ClickHouse на уровне сервера и сеанса через CREATE SERVER и GUC
  • Поддержать все типы данных ClickHouse
  • Поддержать легковесные DELETE и UPDATE
  • Поддержать батч-вставку через COPY
  • Добавить функцию для выполнения произвольного запроса к ClickHouse и возврата его результатов в виде таблиц
  • Добавить поддержку pushdown для запросов UNION, когда все они обращаются к удалённой базе данных

Авторы

  • Авторские права (c) 2025-2026, ClickHouse
  • Авторские права на отдельные части (c) 2023-2025, Ildus Kurbangaliev
  • Авторские права на отдельные части (c) 2019-2023, Adjust GmbH
  • Авторские права на отдельные части (c) 2012-2019, PostgreSQL Global Development Group
[Запрос 1] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/1.sql [Запрос 2] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/2.sql [Запрос 3] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/3.sql [Запрос 4] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/4.sql [Запрос 5] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/5.sql [Запрос 6] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/6.sql [Запрос 7] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/7.sql [Запрос 8] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/8.sql [Запрос 9] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/9.sql [Запрос 10] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/10.sql [Запрос 11] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/11.sql [Запрос 12] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/12.sql [Запрос 13] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/13.sql [Запрос 14] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/14.sql [Запрос 15] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/15.sql [Запрос 16] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/16.sql [Запрос 17] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/17.sql [Запрос 18] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/18.sql [Запрос 19] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/19.sql [Запрос 20] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/20.sql [Запрос 21] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/21.sql [Запрос 22] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/22.sql
Последнее изменение 12 июня 2026 г.