Skip to main content

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. Ele oferece suporte ao PostgreSQL 13 e posteriores e ao ClickHouse v23 e posteriores. Assim que o ClickPipes começar a sincronizar dados com o ClickHouse, use o pg_clickhouse para [importar tabelas estrangeiras] com rapidez e facilidade para um schema do PostgreSQL. Em seguida, execute suas consultas PostgreSQL existentes nessas tabelas, preservando sua base de código atual e fazendo pushdown da execução para o ClickHouse.

Primeiros passos

A forma mais simples de testar o pg_clickhouse é a [imagem Docker], que contém a imagem Docker padrão do PostgreSQL com as extensões pg_clickhouse e re2:
Consulte o tutorial para começar a importar tabelas do ClickHouse e usar pushdown de consultas.

Caso de teste: TPC-H

Esta tabela compara o desempenho das consultas TPC-H entre tabelas PostgreSQL comuns e o pg_clickhouse conectado ao ClickHouse, ambos carregados com fator de escala 1; ✔︎ indica pushdown completo, enquanto um traço indica o cancelamento de uma consulta após 1 min. Todos os testes foram executados em um MacBook Pro M4 Max com 36 GB de memória.

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, portanto 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 extrair do repositório Apt do PostgreSQL.

RedHat / CentOS / Yum

Consulte PostgreSQL Yum para obter detalhes sobre como baixar a partir do repositório Yum do PostgreSQL.

Instale pelo PGXN

Com as dependências acima atendidas, use o PGXN client (disponível nos pacotes Homebrew, Apt e Yum com o nome pgxnclient) para baixar, compilar e instalar pg_clickhouse:

Compilar e instalar

Para compilar e instalar a biblioteca ClickHouse e o pg_clickhouse, execute:
Se o host tiver várias instalações do PostgreSQL, talvez seja necessário especificar a versão correta do pg_config:
Se curl-config não estiver no path do host, você pode especificar o path explicitamente:
Se você encontrar um erro como:
Você precisa usar o GNU make, que pode estar instalado no seu sistema como gmake:
Se ocorrer um erro como o seguinte:
Certifique-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, verifique se o pacote -devel também está instalado. Se necessário, informe ao processo de compilação onde encontrá-lo:
Para instalar a extensão em um prefixo personalizado no PostgreSQL 18 ou posterior, passe o argumento prefix para install (mas não para nenhum outro alvo do make):
Em seguida, certifique-se de que o prefixo esteja incluído nos seguintes [postgresql.conf parâmetros]:

Testes

Para executar a suíte de testes, depois que a extensão estiver instalada, execute
Se você encontrar um erro como:
Você precisa executar a suíte de testes usando um superusuário, como o superusuário padrão “postgres”:

Carregando

Depois que pg_clickhouse estiver instalado, você poderá adicioná-lo a um banco de dados conectando-se como superusuário e executando:
Se você quiser instalar o pg_clickhouse e todos os objetos de suporte em um schema específico, use a cláusula SCHEMA para especificar o schema, assim:

Dependências

A extensão pg_clickhouse requer PostgreSQL 13 ou posterior, libcurl, libuuid. Para compilar a extensão, é necessário um compilador C e C++, libSSL, GNU make e CMake.

Roteiro

Nosso foco principal é concluir a cobertura de pushdown para workloads analíticas antes de adicionar recursos de DML. Nosso roteiro:
  • Fazer com que as 10 consultas TPC-H restantes sem pushdown sejam planejadas de forma ideal
  • Testar e corrigir o pushdown para as 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 em nível de servidor e de 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 tabelas
  • Adicionar suporte ao pushdown de consultas UNION quando todas consultarem o banco de dados remoto

Autores

  • 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
Última modificação em 12 de junho de 2026