Pular para o conteúdo principal

Uma introdução ao DuckDB: O que é e por que você deve usá-lo?

Explore o DuckDB, o banco de dados analítico rápido e fácil de usar para Python e R. Conheça seus principais recursos, casos de uso e como ele otimiza as tarefas de análise de dados.
23 de abr. de 2024  · 7 min de leitura

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.

Temas
Relacionado

blog

O que é um banco de dados gráfico? Um guia para iniciantes

Explore o intrincado mundo dos bancos de dados gráficos com nosso guia para iniciantes. Entenda as relações entre os dados, aprofunde-se na comparação entre bancos de dados relacionais e gráficos e explore casos de uso práticos.
Kurtis Pykes 's photo

Kurtis Pykes

11 min

blog

Bancos de dados NoSQL: O que todo cientista de dados precisa saber

Descubra para que servem os bancos de dados NoSQL, por que os cientistas de dados os utilizam e uma lista dos melhores bancos de dados NoSQL disponíveis.
Zoumana Keita 's photo

Zoumana Keita

12 min

Tutorial

Tutorial de como executar consultas SQL em Python e R

Aprenda maneiras fáceis e eficazes de executar consultas SQL em Python e R para análise de dados e gerenciamento de bancos de dados.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy com exemplos

Aprenda a acessar e executar consultas SQL em todos os tipos de bancos de dados relacionais usando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Ver maisVer mais