Uma introdução ao DuckDB: O que é e por que você deve usá-lo?
No âmbito da ciência e da análise de dados, a extração de insights dos dados geralmente envolve uma série de etapas, normalmente conduzidas em Python usando bibliotecas como a pandas. Apesar de poderoso, o pandas pode enfrentar problemas de desempenho com grandes conjuntos de dados e operações com uso intensivo de recursos.
Buscando um equilíbrio entre funcionalidade robusta e eficiência, o DuckDB surge como uma excelente alternativa. Como um banco de dados analítico de alta velocidade e fácil de usar, o DuckDB está transformando o processamento de dados em Python e R.
Este artigo explorará:
- Recursos e capacidades exclusivos do DuckDB
- Vantagens do DuckDB em relação às ferramentas tradicionais de manipulação de dados
- Casos práticos de uso que demonstram o potencial do DuckDB
- Diretrizes para trabalhar com o DuckDB em Python e R
Ao final deste artigo, você entenderá por que o DuckDB é uma ferramenta que vale a pena considerar para suas tarefas de análise de dados, independentemente do tamanho dos dados e da complexidade das operações envolvidas.
O que é o DuckDB?
O DuckDB é um sistema de gerenciamento de banco de dados (DBMS) gratuito, de código aberto, incorporado, em processo, relacional e de processamento analítico on-line (OLAP). São muitas palavras e acrônimos, portanto, vamos detalhá-los:
- Quando falamos em processo, queremos dizer que os recursos do DBMS estão sendo executados no aplicativo que você está tentando acessar, e não em um processo externo ao qual o aplicativo se conecta
- OLAP significa que o banco de dados foi projetado para análise de dados. Há também bancos de dados OLTP (OnLine Transaction Processing, processamento de transações on-line), que são projetados para lidar com grandes dados transacionais.
A principal diferença entre OLAP e OLTP é como os dados são armazenados. Os bancos de dados OLTP geralmente armazenam dados por registros, garantindo que todos os dados associados a um registro sejam armazenados próximos uns dos outros na memória. Eles também são otimizados para ler e gravar linhas com eficiência.
Em contrapartida, os bancos de dados OLAP são geralmente orientados por colunas, o que significa que os dados são organizados por colunas. Todos os dados associados a uma coluna são armazenados próximos uns dos outros na memória, e o banco de dados é otimizado para ler e computar as colunas de forma eficiente.
Como o DuckDB é um banco de dados OLAP, todos os dados armazenados são organizados por colunas. Além disso, o DuckDB é otimizado para realizar consultas complexas nos dados (por exemplo, junções, agregações, agrupamentos etc.) - confira a trilha de habilidades SQL Fundamentals para saber mais.
Se você estiver familiarizado com o SQLite, a maneira mais fácil de conceituar o DuckDB é como sua réplica voltada para a análise. Isso explica por que o DuckDB é tão popular: ele aproveita a simplicidade do SQLite e as funcionalidades do Snowflake em seu computador local. O DuckDB atende à necessidade de uma solução de banco de dados incorporado para processamento analítico.
Principais recursos do DuckDB
Vamos dar uma olhada em alguns dos principais recursos do DuckDB.
Consultas analíticas rápidas
O DuckDB é incrivelmente rápido; isso pode ser um choque para quem está familiarizado com bancos de dados que lidam com cargas de trabalho OLAP, como o PostgreSQL. Tradicionalmente, os bancos de dados OLAP tendem a ter tempos de resposta lentos, pois normalmente processam mais dados.
No entanto, o DuckDB é executado em um mecanismo de consulta vetorial colunar, o que ajuda a fazer uso eficiente do cache da CPU e a acelerar os tempos de resposta para cargas de trabalho de consulta analítica.
Oferece suporte a SQL e integração com outras linguagens de programação
O DuckDB permite que os usuários executem consultas SQL complexas e fornece APIs para Java, C, C++ e muito mais. Ele também está profundamente integrado ao Python e ao R, permitindo que os usuários realizem uma análise de dados interativa eficiente; assim, você pode interagir com o DuckDB a partir de sua linguagem de programação preferida. Também há acesso a palavras-chave SQL adicionais que facilitam a redação de consultas SQL, como EXCLUDE, REPLACE e ALL.
Observação: O DuckDB não tem dependências externas, portanto, você não precisa se preocupar com problemas de dependência.
Gratuito e de código aberto
O DuckDB é de código aberto e tem vários colaboradores ativos, o que significa que desenvolvimentos e melhorias podem ser implementados rapidamente. Ele também é gratuito, embora possa não permanecer gratuito para sempre.
Casos de uso do DuckDB
Os dois casos de uso mais comuns do DuckDB são a análise interativa de dados e a computação de ponta.
Vamos aprender mais sobre cada um deles.
Análise interativa de dados
A análise de dados descreve a série de etapas envolvidas no processamento e na modelagem de dados. O objetivo da análise de dados é descobrir informações úteis para fundamentar conclusões e decisões baseadas em dados.
Atualmente, as empresas empregam cientistas e analistas de dados que assumem essa responsabilidade usando tecnologias como as linguagens de programação Python e R para realizar suas análises.
O DuckDB oferece uma alternativa melhor para aqueles que preferem usar o SQL para o desenvolvimento local do que o SQLite, que tem dificuldades para gerenciar cargas de trabalho OLAP devido à sua falta de funcionalidade para análise de dados.
Computação de borda
Os bancos de dados incorporáveis, como o DuckDB, permitem que os usuários analisem os dados na borda. A computação de borda é um paradigma emergente de computação distribuída, que se refere a uma gama de redes e dispositivos que estão sendo trazidos ou aproximados do local onde são necessários.
O processamento de dados mais próximo de onde eles são necessários permite melhores tempos de resposta e a preservação da largura de banda.
Primeiros passos com o DuckDB
Seu ambiente determina as etapas necessárias para instalar o DuckDB, mas o guia de instalação completo pode ser encontrado na documentação do DuckDB.
Em sua maior parte, é bastante simples. Você só precisa de algumas linhas de código, pois o DuckDB é uma solução incorporada. Ele também não requer nenhum servidor e não tem dependências externas.
Aqui está um exemplo de como instalar o DuckDB usando Python:
pip install duckdb==0.8.0
E em R:
install.packages("duckdb")
Agora, vamos dar uma olhada em alguns exemplos de código.
Trabalhando com o DuckDB em Python
Depois de instalar o DuckDB, é muito simples começar a usá-lo. Basta acessar import duckdb
em seu ambiente e, em seguida, conectar-se a um banco de dados existente ou criar um novo, se necessário.
Por exemplo:
import duckdb
connection = duckdb.connect()
Como nenhum arquivo de banco de dados foi passado como parâmetro para o método connect()
, um novo banco de dados será criado.
No entanto, a maneira mais simples de começar a executar consultas SQL com o DuckDB é usar o método sql()
.
# Source: Basic API usage - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.sql('SELECT 42').show()
A execução desse comando executará um banco de dados na memória armazenado globalmente no módulo Python e retornará uma relação, que é essencialmente uma representação simbólica da consulta.
Observe que a consulta não é executada até que o resultado seja explicitamente solicitado, como segue:
# Source: Execute SQL - https://duckdb.org/docs/guides/python/execute_sql.html
results = duckdb.sql('SELECT 42').fetchall()
print(results)
"""
[(42,)]
"""
Também podemos usar o método df()
para converter os dados em um Pandas DataFrame:
results_df = duckdb.sql('SELECT 42').df()
print(results)
"""
42
0 42
"""
Ou você pode usar um dos vários métodos de ingestão de dados para ler os dados na memória:
# Source: Python API - https://duckdb.org/docs/api/python/overview.html
import duckdb
duckdb.read_csv('example.csv') # read a CSV file into a Relation
duckdb.read_parquet('example.parquet')# read a Parquet file into a Relation
duckdb.read_json('example.json') # read a JSON file into a Relation
duckdb.sql('SELECT * FROM "example.csv"') # directly query a CSV file
Isenção de responsabilidade: Se você usar o método sql()
sem antes se conectar a um banco de dados existente, todos os dados armazenados nos arquivos serão perdidos após o encerramento do programa. Você pode evitar isso estabelecendo uma conexão usando o método connect()
que discutimos no início da seção.
Conclusão e recursos adicionais
O DuckDB é um banco de dados OLAP usado por profissionais de dados, como cientistas de dados e analistas, para analisar dados de maneira rápida e eficiente. Ele utiliza um mecanismo de execução de consultas SQL capaz de executar consultas complexas em grandes conjuntos de dados.
O DuckDB também tem integrações com muitas outras linguagens de programação, portanto, é possível acessá-lo em seu idioma favorito.
Para continuar seu aprendizado, confira a Folha de consulta básica sobre SQL e como o DuckDB tornou o SQL um cidadão de primeira classe no DataLab.
blog
O que é um banco de dados gráfico? Um guia para iniciantes

blog
Bancos de dados NoSQL: O que todo cientista de dados precisa saber
Tutorial
Tutorial de como executar consultas SQL em Python e R

Tutorial
Tutorial do MySQL: Um guia abrangente para iniciantes

Tutorial