Article image
DANIEL MARTINS
DANIEL MARTINS09/08/2023 16:57
Compartilhe

Desvendando o Potencial do DuckDB: Uma Introdução que Vai Turbinar suas Análises de Dados!

    O que é o DuckDB?

    É um sistema de gerenciamento de base de dados SQL que roda no mesmo processo em que o aplicativo que utiliza o banco de dados, o que significa que não se faz necessária a criação de uma rede de comunicação entre os dois, acelerando o acesso aos dados armazenados.

    Ele é uma base de dados do tipo OLAP (Online Analytical Processing) que são otimizadas para consultas complexas e análises de grandes volumes de dados, sendo projetadas para fornecer uma plataforma eficaz de análise e tomada de decisões, permitindo que os usuários explorem dados multidimensionais de maneira flexível e rápida.

    Desta maneira, o DuckDB tem a proposta de trazer todos os benefícios de uma base de dados, sem as complicações atreladas à utilização e manutenção de um sistema de gerenciamento de bases de dados tradicional.

    Porque utilizar?

    O DuckDB adota as ideias de simplicidade e operação integrada, não sendo necessária a instalação, atualização, configuração e manutenção de um servidor de banco de dados sendo executado em conjunto com o processo hospedeiro. 

    Para os casos de uso analíticos, o DuckDB tem a vantagem adicional de transferência de dados em alta velocidade de e para o banco de dados. Em alguns casos, o DuckDB pode processar dados externos sem copiá-los. Por exemplo, o pacote Python do DuckDB pode executar consultas diretamente em dados do Pandas sem importar ou copiar quaisquer dados.

    import duckdb
    import pandas as pd
    
    # Crie um DataFrame do Pandas
    data = {'Nome': ['Alice', 'Bob', 'Carol'],
      'Idade': [25, 30, 28],
      'Cidade': ['São Paulo', 'Rio de Janeiro', 'Belo Horizonte']}
    df = pd.DataFrame(data)
    
    # Conecte-se ao DuckDB
    conn = duckdb.connect() # Conexão em memória
    
    # Carregue o DataFrame do Pandas para DuckDB
    conn.register('pessoas', df)
    
    # Mostra as tabelas na base de dados
    print(conn.query("SHOW TABLES;"))
    
    # Execute uma consulta usando o DuckDB
    query = 'FROM pessoas WHERE Idade > 28'
    result = conn.query(query)
    print(result)
    
    # Feche a conexão
    conn.close()
    

    Para persistir os dados basta dar um nome de arquivo na função "connect" conforme exemplo abaixo:

    conn = duckdb.connect('pessoas.db') # Cria uma conexão e salva os dados no arquivo pessoas.db
    

    É possível executar uma query no dataframe do Pandas sem registrar a tabela no banco de dados, basta executar o comando:

    conn.query("FROM df WHERE Idade > 28;")
    

    Sendo "df" o nome do DataFrame do Pandas que você deseja efetuar a query.

    Caso você esteja se perguntado porque as queries acima não possuem o comando de "SELECT", o DuckDB considera o "FROM df" como "SELECT * FROM df".

    Outra vantagem do DuckDB é o suporte para Queries complexas em linguagem SQL que garantem as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade) sendo possível o armazenamento em uma base de dados em um único arquivo.

    Uma das grandes vantagens é a velocidade de processamento, sendo otimizado para análise de dados, utilizando um processamento paralelizado e vetorizado que permite o processamento mesmo com um volume de informações maior do que a memória disponível no sistema.

    A facilidade de efetuar uma consulta em arquivos do tipo CSV será exemplificada abaixo:

    import duckdb
    
    # Conecte-se ao DuckDB
    conn = duckdb.connect()
    
    # Execute uma consulta usando o DuckDB Lendo todos os arquivos do diretório com a extensão CSV
    conn.query("FROM '*.csv';")
    
    # Feche a conexão
    conn.close()
    

    Simples assim!

    E além de tudo isso o DuckDB é gratuito e Open-Source!

    Quando utilizar o DuckDB

    1. Processamento e armazenamento de dados tabulares (arquivos csv ou parquet);
    2. Análise de dados interativas (agregação de múltiplas tabelas ou de tabelas com alto volume de dados);
    3. Necessidade de efetuar processamento de dados na própria máquina;
    4. Facilidade na utilização de queries SQL para análise dos dados!

    Quer saber como o DuckDB pode revolucionar sua forma de trabalhar com bancos de dados? 

    Comente abaixo e compartilhe suas impressões! Se você já explorou o mundo do DuckDB, conte-nos suas experiências e insights. Vamos criar uma conversa animada sobre essa incrível ferramenta de gerenciamento de dados!

    #DuckDB #DataRevolution #BancosDeDados

    Compartilhe
    Comentários (0)