Motores disponíveis
| Motor | Descrição | Ideal para |
|---|---|---|
auto | Seleciona automaticamente o melhor motor para cada operação | Uso geral (padrão) |
chdb | Força todas as operações a serem executadas via ClickHouse SQL | Grandes conjuntos de dados, agregações |
pandas | Força todas as operações a serem executadas via pandas | Testes de compatibilidade, recursos específicos do pandas |
Configurando o motor
Configuração global
Verificando o motor atual
Modo automático
auto (padrão), o DataStore seleciona o motor mais adequado para cada operação:
Operações executadas no chDB
- Filtragem compatível com SQL (
filter(),where()) - Seleção de colunas (
select()) - Ordenação (
sort(),orderby()) - Agrupamento e agregação (
groupby().agg()) - Junções (
join(),merge()) - Valores distintos (
distinct(),drop_duplicates()) - Limitação de resultados (
limit(),head(),tail())
Operações executadas no pandas
- Funções
applypersonalizadas (apply(custom_func)) - Tabelas dinâmicas complexas com agregações customizadas
- Operações que não podem ser expressas em SQL
- Quando a entrada já é um
DataFramedo pandas
Exemplo
Modo chDB
Quando usar
- Processamento de grandes volumes de dados (milhões de linhas)
- Cargas de trabalho com muita agregação
- Quando você quer o máximo de otimização de SQL
- Comportamento consistente em todas as operações
Características de desempenho
| Tipo de operação | Desempenho |
|---|---|
| GroupBy/Agregação | Excelente (até 20x mais rápido) |
| Filtragem complexa | Excelente |
| Ordenação | Muito bom |
| Filtros simples individuais | Bom (leve sobrecarga) |
Limitações
- Funções personalizadas em Python podem não ser compatíveis
- Alguns recursos específicos do pandas exigem conversão
Modo pandas
Quando usar
- Testes de compatibilidade com o pandas
- Uso de funcionalidades específicas do pandas
- Depuração de problemas relacionados ao pandas
- Quando os dados já estão no formato do pandas
Características de desempenho
| Tipo de operação | Desempenho |
|---|---|
| Operações simples e isoladas | Bom |
| Funções personalizadas | Excelente |
| Agregações complexas | Mais lentas que o chDB |
| Grandes volumes de dados | Uso intensivo de memória |
Motor entre DataStores
Exemplo
Lógica de seleção do motor
Árvore de decisão do modo automático
Override em nível de função
Comparação de desempenho
| Operação | pandas (ms) | chdb (ms) | Ganho de desempenho |
|---|---|---|---|
| Contagem com GroupBy | 347 | 17 | 19.93x |
| Operações combinadas | 1,535 | 234 | 6.56x |
| Pipeline complexo | 2,047 | 380 | 5.39x |
| Filter+Sort+Head | 1,537 | 350 | 4.40x |
| Agregação com GroupBy | 406 | 141 | 2.88x |
| Filtro único | 276 | 526 | 0.52x |
- o chDB se destaca em agregações e pipelines complexos
- o pandas é um pouco mais rápido em operações simples e isoladas
- use o modo
autopara aproveitar o melhor dos dois