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
- Acesse o
clickhouse-client:
- Vamos criar um novo banco de dados:
- Crie uma tabela que utilize o
PostgreSQL:
| parâmetro | Descrição | exemplo |
|---|---|---|
| host:port | nome do host ou IP e porta | postgres-host.domain.com:5432 |
| database | nome do banco de dados PostgreSQL | db_in_psg |
| user | nome de usuário para se conectar ao Postgres | clickhouse_user |
| password | senha para se conectar ao Postgres | ClickHouse_123 |
Consulte a página de documentação do mecanismo de tabela PostgreSQL para ver a lista completa de parâmetros.
3 Teste a integração
- No ClickHouse, veja as linhas iniciais:
- De volta ao PostgreSQL, adicione algumas linhas à tabela:
- Essas duas novas linhas devem aparecer na sua tabela no ClickHouse:
- Vamos ver o que acontece quando você adiciona linhas à tabela do ClickHouse:
- As linhas adicionadas no ClickHouse devem aparecer na tabela do 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
- faça login na ClickHouse CLI
- Ative 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:
| parâmetro | Descrição | exemplo |
|---|---|---|
| host:port | nome do host ou IP e porta | postgres-host.domain.com:5432 |
| database | nome do banco de dados PostgreSQL | db1 |
| user | nome de usuário para se conectar ao Postgres | clickhouse_user |
| password | senha para se conectar ao Postgres | ClickHouse_123 |
| settings | configurações adicionais para o mecanismo | materialized_postgresql_tables_list = ‘table1’ |
Para ver o guia completo do mecanismo de banco de dados PostgreSQL, consulte https://clickhouse.com/docs/engines/database-engines/materialized-postgresql/#settings
- Verifique se a tabela inicial tem dados:
3. Teste a replicação básica
- No PostgreSQL, adicione novas linhas:
- No ClickHouse, verifique se as novas linhas estão visíveis:
4. Resumo
Para conhecer mais recursos disponíveis nas opções avançadas, consulte a documentação de referência.