DuckDB: Milhões de Linhas em Segundos — Análise de Dados sem Servidor

2 min de leitura
duckdb sql dados analise-de-dados python

Milhões de linhas processadas em segundos. Sem servidor. 🦆

Hoje rodei uma análise complexa em dados da Receita Federal usando DuckDB e a velocidade me impressionou — de novo.

O DuckDB não é mais um "experimento legal". É uma ferramenta legítima de engenharia de dados que merece espaço no stack de qualquer pessoa que trabalha com análise de dados no dia a dia.

O que é o DuckDB?

O DuckDB é um banco de dados SQL embarcado e orientado a colunas. A analogia mais direta é com o SQLite: assim como o SQLite, ele não precisa de servidor, não precisa de instalação complexa, e roda dentro do seu próprio processo. Mas enquanto o SQLite é otimizado para workloads transacionais (OLTP), o DuckDB é feito sob medida para análise e agregação (OLAP).

Isso significa que ele é absurdamente rápido em operações como:

  • Agregações (GROUP BY, SUM, AVG)
  • Filtros em grandes volumes
  • Joins entre tabelas com milhões de linhas
  • Leitura direta de arquivos Parquet, CSV e JSON

Por que isso importa?

No mundo real, a maior parte do tempo de uma análise de dados não está na análise em si — está na preparação do ambiente. Instalar um banco, configurar conexão, fazer ingestão de dados, esperar o Pandas carregar tudo na memória...

Com DuckDB, o fluxo é brutalmente simples:

pip install duckdb
import duckdb

duckdb.sql("""
    SELECT
        uf,
        COUNT(*) as total_empresas,
        AVG(CAST(capital_social AS DECIMAL)) as capital_medio
    FROM 'dados_rf.parquet'
    WHERE situacao_cadastral = 'ATIVA'
    GROUP BY uf
    ORDER BY total_empresas DESC
""")

Sem servidor. Sem schema definition. Sem import. Os dados estão no disco, o DuckDB lê direto.

O caso de uso ideal

DuckDB brilha em cenários ad-hoc — quando você precisa "interrogar" dados pesados rapidamente, sem querer gastar 20 minutos configurando infraestrutura.

Alguns exemplos que testei:

  • Análise exploratória: abrir um CSV de 2GB e rodar SELECT, GROUP BY, janelas — em segundos
  • Integração com visualização: DuckDB + Evidence para dashboards built with SQL
  • ETL leve: ler CSV, transformar com SQL, escrever Parquet
  • Dados da Receita Federal: o dataset completo de CNPJs (milhões de linhas) cabe em poucos GB em Parquet, e consultas agregadas rodam em sub-segundos

E o Pandas?

Pandas continua sendo uma ferramenta indispensável para transformações complexas e prototipação. Mas ele tem um gargalo conhecido: tudo precisa caber na memória. Com datasets grandes, o Pandas começa a "sofrer" — memória explode, o garbage collector trava, e você perde tempo otimizando código que deveria ser uma query SQL simples.

DuckDB resolve isso porque:

  1. Processamento out-of-core: não precisa carregar tudo na RAM
  2. Orientado a colunas: consultas que acessam poucas colunas são muito mais rápidas
  3. SQL padrão: sua experiência com SQL é reaproveitada totalmente

E o melhor: DuckDB e Pandas não são excludentes. Você pode rodar DuckDB dentro do Pandas via duckdb.sql("SELECT ... FROM df"), onde df é um DataFrame — o DuckDB lê o Pandas sem copiar os dados.

Para o dia a dia

Sigo usando PostgreSQL para tudo que é transacional — sistemas que precisam de integridade ACID, concorrência, users, updates frequentes.

Para inteligência e análise de alta performance — no terminal, no notebook, ou embedado no código — DuckDB é a ferramenta certa.

Você já incluiu DuckDB no seu stack de engenharia?

Compartilhar este post

Reações

Comentários

Nenhum comentário ainda. Seja o primeiro!

Deixe um comentário

Seu email não será publicado.

Outros posts

Entre em Contato

Vamos conversar sobre sua próxima solução? Entre em contato comigo através dos canais abaixo.

Disponível para projetos freelance e oportunidades de desenvolvimento