Introdução
pg_clickhouse, uma extensão de código aberto do PostgreSQL, executa consultas analíticas no ClickHouse diretamente do PostgreSQL, sem reescrever nenhum SQL. Ela é compatível com PostgreSQL 13 e versões posteriores e ClickHouse v23 e versões posteriores.
Assim que ClickPipes começar a sincronizar dados para o ClickHouse, use o pg_clickhouse para [importar tabelas estrangeiras] de forma rápida e fácil para um schema do PostgreSQL. Em seguida, execute suas consultas existentes do PostgreSQL nessas tabelas, preservando sua base de código atual enquanto delega a execução ao ClickHouse.
Primeiros passos
A forma mais simples de experimentar o pg_clickhouse é a [imagem Docker], que contém a imagem Docker padrão do PostgreSQL com as extensões pg_clickhouse e re2:
docker run --name pg_clickhouse -e POSTGRES_PASSWORD=my_pass \
-d ghcr.io/clickhouse/pg_clickhouse:19
docker exec -it pg_clickhouse psql -U postgres -c 'CREATE EXTENSION pg_clickhouse'Consulte o tutorial para começar a importar tabelas do ClickHouse e fazer pushdown de consultas.
Caso de teste: TPC-H
Esta tabela compara o desempenho das consultas TPC-H entre tabelas PostgreSQL convencionais e o pg_clickhouse conectado ao ClickHouse, ambos carregados com fator de escala 1; ✔︎ indica pushdown completo em uma única varredura externa, e ✼ indica pushdown completo em várias varreduras externas. Todos os testes foram executados em um MacBook Pro M4 Max com 36 GB de memória.
| Consulta | PostgreSQL | pg_clickhouse | Pushdown |
|---|---|---|---|
| [Query 1] | 4483 ms | 59 ms | ✔ |
| [Query 2] | 588 ms | 24 ms | ✔ |
| [Query 3] | 786 ms | 62 ms | ✔ |
| [Query 4] | 550 ms | 38 ms | ✔ |
| [Query 5] | 721 ms | 1439 ms | ✔ |
| [Query 6] | 592 ms | 17 ms | ✔ |
| [Query 7] | 639 ms | 29 ms | ✔ |
| [Query 8] | 398 ms | 383 ms | ✔ |
| [Query 9] | 2842 ms | 162 ms | ✔ |
| [Query 10] | 860 ms | 125 ms | ✔ |
| [Query 11] | 276 ms | 21 ms | ✼ |
| [Query 12] | 963 ms | 26 ms | ✔ |
| [Query 13] | 1037 ms | 1354 ms | |
| [Query 14] | 675 ms | 30 ms | ✔ |
| [Query 15] | 2520 ms | 387 ms | |
| [Query 16] | 539 ms | 823 ms | |
| [Query 17] | 2107 ms | 37 ms | ✔ |
| [Query 18] | 5230 ms | 7228 ms | |
| [Query 19] | 68 ms | 47 ms | ✔ |
| [Query 20] | 473 ms | 28 ms | |
| [Query 21] | 1145 ms | 4470 ms | |
| [Query 22] | 270 ms | 45 ms | ✼ |
Compilar a partir do código-fonte
Unix em geral
Os pacotes de desenvolvimento do PostgreSQL e do curl incluem pg_config e
curl-config no path, então você deve conseguir simplesmente executar make (ou
gmake), depois make install e, em seguida, no seu banco de dados,
CREATE EXTENSION pg_clickhouse.
Debian / Ubuntu / APT
Consulte PostgreSQL Apt para ver detalhes sobre como obter pacotes do repositório PostgreSQL Apt.
sudo apt install \
postgresql-server-19 \
libcurl4-openssl-dev \
uuid-dev \
libssl-dev \
make \
cmake \
g++RedHat / CentOS / Yum
sudo yum install \
postgresql-server \
libcurl-devel \
libuuid-devel \
openssl-libs \
automake \
cmake \
gccConsulte PostgreSQL Yum para obter detalhes sobre como baixar pacotes do repositório PostgreSQL Yum.
Instalar via PGXN
Com as dependências acima atendidas, use o PGXN client (disponível como
pacotes Homebrew, Apt e Yum chamados pgxnclient) para baixar, compilar
e instalar pg_clickhouse:
pgxn install pg_clickhouseCompilar e instalar
Para compilar e instalar a biblioteca ClickHouse e pg_clickhouse, execute:
make
sudo make installSe o host tiver várias instalações do PostgreSQL, talvez seja necessário especificar
a versão correta do pg_config:
export PG_CONFIG=/usr/lib/postgresql/18/bin/pg_config
make
sudo make installSe curl-config não estiver no path do seu host, você pode especificar o path
explicitamente:
export CURL_CONFIG=/opt/homebrew/opt/curl/bin/curl-config
make
sudo make installSe você se deparar com um erro como:
"Makefile", line 8: Need an operatorVocê precisa usar o GNU make, que pode estar instalado no seu sistema como
gmake:
gmake
gmake install
gmake installcheckSe você se deparar com um erro como:
make: pg_config: Command not foundCertifique-se de que o pg_config esteja instalado e no seu path. Se você usou um
sistema de gerenciamento de pacotes, como RPM, para instalar o PostgreSQL, certifique-se de que o
pacote -devel também esteja instalado. Se necessário, informe ao processo de build onde
encontrá-lo:
export PG_CONFIG=/path/to/pg_config
make
sudo make installPara instalar a extensão em um prefixo personalizado no PostgreSQL 18 ou superior, passe
o argumento prefix para install (mas não para outros alvos de make):
sudo make install prefix=/usr/local/extrasEm seguida, certifique-se de que o prefixo esteja incluído nos seguintes [parâmetros do
postgresql.conf]:
extension_control_path = '/usr/local/extras/postgresql/share:$system'
dynamic_library_path = '/usr/local/extras/postgresql/lib:$libdir'Testes
Para executar a suíte de testes, após instalar a extensão, execute
make installcheckSe você encontrar um erro como:
ERROR: must be owner of database regressionVocê precisa executar a suíte de testes com um superusuário, como o superusuário padrão "postgres":
make installcheck PGUSER=postgresCarregando
Depois que pg_clickhouse estiver instalado, você poderá adicioná-lo a um banco de dados conectando-se
como superusuário e executando:
CREATE EXTENSION pg_clickhouse;Se você quiser instalar o pg_clickhouse e todos os seus objetos auxiliares em
um schema específico, use a cláusula SCHEMA para especificar o schema, assim:
CREATE SCHEMA env;
CREATE EXTENSION pg_clickhouse SCHEMA env;Dependências
A extensão pg_clickhouse requer PostgreSQL 13 ou superior, libcurl
e libuuid. A compilação da extensão requer compiladores C e C++, libSSL, GNU
make e CMake.
Roadmap
Nosso principal foco é concluir a cobertura de pushdown para cargas de trabalho analíticas antes de adicionar recursos de DML. Nosso roadmap:
- Planejar de forma ideal as 10 consultas TPC-H restantes que ainda não têm pushdown
- Testar e corrigir o pushdown das consultas do ClickBench
- Oferecer suporte ao pushdown transparente de todas as funções de agregação do PostgreSQL
- Oferecer suporte ao pushdown transparente de todas as funções do PostgreSQL
- Permitir configurações do ClickHouse no nível do servidor e da sessão via CREATE SERVER e GUCs
- Oferecer suporte a todos os tipos de dados do ClickHouse
- Oferecer suporte a DELETEs leves e UPDATEs
- Oferecer suporte à inserção em lote via COPY
- Adicionar uma função para executar uma consulta arbitrária do ClickHouse e retornar seus resultados como uma tabela
- Adicionar suporte ao pushdown de consultas UNION quando todas forem executadas no banco de dados remoto
Direitos autorais
- Copyright (c) 2025-2026, ClickHouse
- Partes com Copyright (c) 2023-2025, Ildus Kurbangaliev
- Partes com Copyright (c) 2019-2023, Adjust GmbH
- Partes com Copyright (c) 2012-2019, PostgreSQL Global Development Group
[Consulta 1] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/1.sql [Consulta 2] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/2.sql [Consulta 3] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/3.sql [Consulta 4] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/4.sql [Consulta 5] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/5.sql [Consulta 6] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/6.sql [Consulta 7] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/7.sql [Consulta 8] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/8.sql [Consulta 9] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/9.sql [Consulta 10] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/10.sql [Consulta 11] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/11.sql [Consulta 12] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/12.sql [Consulta 13] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/13.sql [Consulta 14] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/14.sql [Consulta 15] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/15.sql [Consulta 16] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/16.sql [Consulta 17] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/17.sql [Consulta 18] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/18.sql [Consulta 19] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/19.sql [Consulta 20] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/20.sql [Consulta 21] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/21.sql [Consulta 22] https://github.com/ClickHouse/pg_clickhouse/blob/main/dev/tpch/queries/22.sql