ClickHouse
O ClickHouse é um sistema de gerenciamento de banco de dados (SGBD) analítico columnar (OLAP) de código aberto, desenvolvido pela Yandex. É otimizado especificamente para consultas analíticas em tempo real sobre grandes volumes de dados.
Info
O ClickHouse é conhecido por sua excepcional velocidade em consultas analíticas.
Utiliza armazenamento columnar e processamento paralelo massivo (MPP) para alta performance.
Características principais
- Columnar storage: Armazena dados por colunas, otimizando consultas analíticas
- Compressão avançada: Algoritmos de compressão específicos para cada tipo de dado
- SQL completo: Suporte robusto ao SQL com extensões para análise avançada
- Distribuído: Escalabilidade horizontal nativa com clusters
- Real-time: Inserções e consultas em tempo real
- Formatos diversos: Suporte nativo a Parquet, CSV, JSON e outros formatos
Preparando o ambiente
Vamos configurar um ambiente com ClickHouse utilizando Docker e trabalhar com os mesmos dados da aula de DuckDB.
Exercise
Answer
O ulimits está configurando o número máximo de arquivos abertos que o ClickHouse pode ter, aumentando o limite padrão para 262144.
Exercise
Exercise
Exercise
Interface de acesso
O ClickHouse oferece múltiplas interfaces de acesso: HTTP, cliente nativo, e diversas linguagens de programação (Java, Python, Go, etc.).
Cliente HTTP
Exercise
Cliente CLI
Exercise
Exercise
Obtendo os dados
Vamos utilizar os mesmos dados de bicicletas de São Francisco que usamos na aula do DuckDB.
Criando databases e tabelas
Database
Exercise
Importando dados CSV
Vamos começar criando tabelas e importando os dados CSV.
Exercise
Exercise
Exercise
Exercise
Particionamento
O ClickHouse permite particionamento eficiente dos dados. Aqui particionamos por mês da data de início.
Exercise
Exercise
Consultas básicas
Análise exploratória
Exercise
Funções de data e tempo
O ClickHouse possui funções avançadas para manipulação de datas e tempo.
Exercise
Consultas analíticas avançadas
Window Functions
O ClickHouse suporta window functions para análises sofisticadas.
Exercise
Exercise
Agregações complexas
Exercise
Importando dados Parquet
O ClickHouse tem suporte nativo ao formato Parquet.
Exercise
Exercise
Exercise
Análises geoespaciais
O ClickHouse possui funções geoespaciais avançadas.
Exercise
Exercise
Monitoramento e métricas
System tables
O ClickHouse oferece tabelas de sistema para monitoramento.
Exercise
Exercise
Exercise
Exercise
Exercise
Exercise
Exercícios finais
Exercise
Answer
O ClickHouse é otimizado para consultas analíticas em grandes volumes de dados, enquanto o DuckDB é mais adequado para análises em ambientes locais e em menor escala.
Usaria o ClickHouse para análises em tempo real e grandes conjuntos de dados, enquanto o DuckDB seria ideal para protótipos rápidos e análises ad-hoc.
Exercise
Exercise
Substituindo PostgreSQL por ClickHouse no Data Warehouse
Agora que você domina os conceitos básicos do ClickHouse, vamos aplicá-lo em um cenário prático: substituir o PostgreSQL do Data Warehouse da aula anterior (DW Parte I) pelo ClickHouse.
Preparando o ambiente
Exercise
Modificando a arquitetura
Exercise
Criando o schema ClickHouse
Exercise
Exercise
Answer
Otimizações que poderiam ser aplicadas (pesquise como fazer):
- LowCardinality: Para campos com poucos valores únicos (nome, categoria, uf, status)
- Particionamento: Tabelas particionadas por mês usando
toYYYYMM()
- Tipos específicos: UInt32/UInt64 para IDs, Decimal para valores monetários
- Ordenação otimizada: ORDER BY considera padrões de consulta (data, categoria, etc.)
- Remoção de constraints: Sem chaves estrangeiras ou checks para melhor performance de inserção
Adaptando o script de inicialização
Exercise
Modificando o pipeline ETL
Exercise
Exercise
Testando a nova arquitetura
Exercise
Exercise
Exercise
Validação e análises
Exercise
Exercise
Exercícios de comparação
Exercise
Exercise
Exercise
Exercise
Exercise
Limpeza
Exercise