Um guia completo de migração do PostgreSQL para o ClickHouse, incluindo orientações sobre modelagem de dados e conceitos equivalentes, pode ser encontrado aqui. A seguir, descrevemos como conectar o ClickHouse ao PostgreSQL.Esta página aborda as seguintes opções para integrar o PostgreSQL ao ClickHouse:
- usar o mecanismo de tabela
PostgreSQLpara ler dados de uma tabela do PostgreSQL - usar o mecanismo de banco de dados experimental
MaterializedPostgreSQLpara sincronizar um banco de dados do PostgreSQL com um banco de dados no ClickHouse
Usando o mecanismo de tabela PostgreSQL
PostgreSQL permite realizar operações SELECT e INSERT em dados armazenados no servidor PostgreSQL remoto a partir do ClickHouse.
Este artigo ilustra métodos básicos de integração usando uma única tabela.
1
Configurando o PostgreSQL
- Em
postgresql.conf, adicione a seguinte entrada para permitir que o PostgreSQL aceite conexões nas interfaces de rede:
- Crie um usuário para se conectar no ClickHouse. Para fins de demonstração, este exemplo concede privilégios totais de superusuário.
- Crie um novo banco de dados no PostgreSQL:
- Crie uma nova tabela:
- Vamos adicionar algumas linhas para teste:
- Para configurar o PostgreSQL para permitir conexões com o novo banco de dados usando o novo usuário de replicação, adicione a seguinte entrada ao arquivo
pg_hba.conf. Atualize a linha de endereço com a sub-rede ou o endereço IP do seu servidor PostgreSQL:
- Recarregue o arquivo de configuração
pg_hba.conf(ajuste este comando de acordo com a sua versão):
- Verifique se o novo
clickhouse_userconsegue se conectar:
Se você estiver usando este recurso no ClickHouse Cloud, talvez seja necessário permitir que os endereços IP do ClickHouse Cloud acessem sua instância do PostgreSQL.
Consulte a API de Endpoints do ClickHouse Cloud para ver os detalhes do tráfego de saída.
2
Defina uma tabela no ClickHouse
- Faça login no
clickhouse-client:
- Vamos criar um novo banco de dados:
- Crie uma tabela que use o mecanismo de tabela
PostgreSQL:
Consulte a página de documentação do PostgreSQL table engine para ver a lista completa de parâmetros.
3
Teste a integração
- No ClickHouse, visualize as primeiras linhas:
- De volta ao PostgreSQL, adicione algumas linhas à tabela:
- Essas duas novas linhas devem aparecer na tabela do ClickHouse:
- Vamos ver o que acontece quando você adiciona linhas à tabela do ClickHouse:
- As linhas adicionadas no ClickHouse devem aparecer na tabela no PostgreSQL:
PostrgeSQL.
Consulte a página de documentação do mecanismo de tabela PostgreSQL para conhecer mais recursos, como especificar esquemas, retornar apenas um subconjunto de colunas e conectar-se a várias réplicas. Consulte também o blog ClickHouse and PostgreSQL - a match made in data heaven - part 1.
Usando a mecanismo de banco de dados MaterializedPostgreSQL
1
No PostgreSQL
- Em
postgresql.conf, defina os níveis mínimos de escuta, o nível de WAL para replicação e os slots de replicação:
logical e de 2 slots de replicação- Usando uma conta de administrador, crie um usuário para conexão a partir do ClickHouse:
- crie um novo banco de dados:
- conecte-se ao novo banco de dados no
psql:
- crie uma nova tabela:
- insira as linhas iniciais:
- Configure o PostgreSQL para permitir conexões com o novo banco de dados usando o novo usuário para replicação. Abaixo está a entrada mínima a ser adicionada ao arquivo
pg_hba.conf:
- recarregue a configuração do
pg_hba.confcom algo como isto (ajuste conforme a sua versão):
- Teste o acesso com o novo
clickhouse_user:
2
No ClickHouse
- acesse a CLI do ClickHouse
- Habilite o recurso experimental do PostgreSQL para o mecanismo de banco de dados:
- Crie o novo banco de dados a ser replicado e defina a tabela inicial:
Para obter o guia completo sobre o mecanismo de banco de dados PostgreSQL, consulte https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Verifique se a tabela inicial contém dados:
3
Testar a replicação básica
- No PostgreSQL, adicione novas linhas:
- No ClickHouse, verifique se as novas linhas estão visíveis:
4
Resumo
Este guia de integração apresentou um exemplo simples de como replicar um banco de dados com uma tabela. No entanto, há opções mais avançadas, incluindo replicar todo o banco de dados ou adicionar novas tabelas e schemas às replicações existentes. Embora os comandos DDL não sejam compatíveis com essa replicação, o motor pode ser configurado para detectar alterações e recarregar as tabelas quando forem feitas alterações estruturais.
Para conhecer mais recursos disponíveis nas opções avançadas, consulte a documentação de referência.