Introdução
- enviar enviar dados para o ClickHouse usando uma ferramenta ou serviço de ETL/ELT de terceiros
- extrair extrair dados do Redshift com a ajuda da ClickHouse JDBC Bridge
- pivotar usar armazenamento de objetos S3 com uma lógica de “descarregar e depois carregar”
Usamos o Redshift como fonte de dados neste tutorial. No entanto, as abordagens de migração apresentadas aqui não se limitam ao Redshift, e etapas semelhantes podem ser adaptadas para qualquer fonte de dados compatível.
Enviar dados do Redshift para o ClickHouse
Vantagens
- Pode aproveitar o catálogo existente de conectores do software de ETL/ELT.
- Recursos nativos para manter os dados em sincronia (lógica de append/overwrite/increment).
- Permite cenários de transformação de dados (por exemplo, consulte nosso guia de integração para dbt).
Desvantagens
- Você precisa configurar e manter uma infraestrutura de ETL/ELT.
- Introduz um componente de terceiros na arquitetura, que pode se tornar um gargalo de escalabilidade.
Extrair dados do Redshift para o ClickHouse
INSERT INTO ... SELECT:
Prós
- Genérico para todas as ferramentas compatíveis com JDBC
- Solução elegante para permitir consultas a várias fontes de dados externas a partir do ClickHouse
Desvantagens
- Requer uma instância do ClickHouse JDBC Bridge, o que pode se tornar um gargalo de escalabilidade
Embora o Redshift seja baseado em PostgreSQL, não é possível usar a table function PostgreSQL do ClickHouse nem o table engine, pois o ClickHouse exige PostgreSQL versão 9 ou superior, e a API do Redshift é baseada em uma versão anterior (8.x).
Tutorial
1
Implante a ClickHouse JDBC Bridge
Implante a ClickHouse JDBC Bridge. Para mais detalhes, consulte nosso guia do usuário sobre JDBC para fontes de dados externasSe você estiver usando o ClickHouse Cloud, precisará executar sua ClickHouse JDBC Bridge em um ambiente separado e se conectar ao ClickHouse Cloud usando a função remoteSecure
2
Configure sua fonte de dados do Redshift
Configure sua fonte de dados do Redshift para a ClickHouse JDBC Bridge. Por exemplo,/etc/clickhouse-jdbc-bridge/config/datasources/redshift.json 3
Consulte sua instância do Redshift no ClickHouse
Depois que a ClickHouse JDBC Bridge estiver implantada e em execução, você poderá começar a consultar sua instância do Redshift no ClickHouse4
Importe dados do Redshift para o ClickHouse
A seguir, mostramos como importar dados usando uma instruçãoINSERT INTO ... SELECTPivotar dados do Redshift para o ClickHouse usando S3
Prós
- Tanto o Redshift quanto o ClickHouse têm recursos poderosos de integração com S3.
- Aproveita recursos já existentes, como o comando
UNLOADdo Redshift e a função de tabela S3 / table engine do ClickHouse. - Escala com facilidade graças às leituras paralelas e ao alto throughput de/para o S3 no ClickHouse.
- Pode aproveitar formatos avançados e compactados, como o Apache Parquet.
Desvantagens
- Duas etapas no processo (exportar do Redshift e depois carregar no ClickHouse).
Tutorial
1
2
Crie a tabela no ClickHouse
Crie a tabela no ClickHouse:CREATE TABLE ... EMPTY AS SELECT:3
Carregue os arquivos do S3 no ClickHouse
Carregue os arquivos do S3 no ClickHouse usando uma instruçãoINSERT INTO ... SELECT:Este exemplo usou CSV como formato de pivot. No entanto, para cargas de trabalho de produção, recomendamos Apache Parquet como a melhor opção para grandes migrações, já que ele oferece compressão e pode reduzir custos de armazenamento, além de diminuir os tempos de transferência. (Por padrão, cada row group é comprimido com SNAPPY.) O ClickHouse também aproveita a organização colunar do Parquet para acelerar a ingestão de dados.