Pular para o conteúdo principal
InicioBlogCiência de dados

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.
abr. de 2024  · 7 min leer

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

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

tutorial

Uso do PostgreSQL em Python

Descubra como criar, conectar-se e gerenciar bancos de dados PostgreSQL usando o pacote psycopg2 do Python.
Javier Canales Luna's photo

Javier Canales Luna

14 min

See MoreSee More