Conheça o DuckDB, um banco de dados moderno

🚀 E comparação de usabilidade a comandos do GNU/UNIX.


Conheça o DuckDB, um banco de dados moderno


O DuckDB é um sistema de gerenciamento de banco de dados relacional (RDBMS) orientado a colunas de código aberto, lançado pela primeira vez em 2019.

Ele foi projetado para fornecer alto desempenho em consultas complexas em grandes bancos de dados em configuração incorporada, como combinar tabelas com centenas de colunas e bilhões de linhas. Ao contrário de outros bancos de dados incorporados (por exemplo, SQLite).

O DuckDB não compete com os DBMS tradicionais como MSSQL, PostgreSQL etc.

O DuckDB usa um mecanismo de processamento de consultas vetorizadas. O DuckDB é especial entre os sistemas de gerenciamento de banco de dados porque não tem nenhuma dependência externa e pode ser construído com apenas um compilador C++11.

O DuckDB também se desvia do modelo tradicional Cliente-Servidor ao ser executado dentro de um processo host (ele tem ligações, por exemplo, para um interpretador Python com a capacidade de colocar dados diretamente em matrizes NumPy.

Existem inúmeras situações em que usar DuckDB pode ser vantajoso. Abaixo veremos como instalar o DuckDB, que pode ser instalado em qualquer sistema operacional, veremos como instalar no Ubuntu e no Windows, além de dicas de usabilidade e comparativos com os comandos do GNU/UNIX.


Instalação

O DuckDB, como foi dito, pode ser usado em qualquer sistema operacional. O procedimento se resume em fazr download e mover para a pasta do sistema responsável para armazenar os programas, no entanto, é possível também instalar via pip.

Exemplo no Ubuntu:

01. Atualize o sistema:

Primeiro, é uma boa prática atualizar o sistema antes de instalar novos pacotes.

sudo apt update && sudo apt upgrade -y

02. Baixe o DuckDB:

Você pode baixar o DuckDB diretamente do site oficial ou usar um gerenciador de pacotes como o pip se preferir a versão Python.

  • Método 1: Baixar o binário diretamente:

    Exemplo baseado na versão atual(v1.2.1) de acordo com a data de publicação desse artigo. Para versões mais recente acesse a página de releases no GitHub.

wget https://github.com/duckdb/duckdb/releases/download/v1.2.1/duckdb_cli-linux-amd64.zip
unzip duckdb_cli-linux-amd64.zip
sudo mv duckdb /usr/local/bin/
  • Método 2: Instalar via pip (para uso com Python):
pip install duckdb

Observação: O pip requer um ambiente virtual, isso pode dificultar o uso DuckDB.

03. Verifique a instalação:

Após a instalação, você pode verificar se o DuckDB está instalado corretamente executando:

duckdb --version

Instalação no Windows

01. Baixe o DuckDB:

02. Extraia o arquivo:

  • Extraia o conteúdo do arquivo .zip para uma pasta de sua escolha, por exemplo, C:\duckdb.

03. Adicione ao PATH:

  • Para facilitar o uso, você pode adicionar o caminho da pasta onde o DuckDB foi extraido ao seu PATH.
  • Abra o “Painel de Controle” > “Sistema e Segurança” > “Sistema” > “Configurações avançadas do sistema” > “Variáveis de ambiente”.
  • Na seção “Variáveis do sistema”, encontre a variável Path, selecione-a e clique em “Editar”.
  • Adicione o caminho da pasta onde o DuckDB foi extraido (por exemplo, C:\duckdb).

04. Verifique a instalação:

  • Abra o Prompt de Comando ou PowerShell e execute:
  duckdb --version


Como utilizar o DuckDB

Aqui estão alguns exemplos de consultas no DuckDB e suas equivalências aproximadas em comandos GNU/UNIX:

01. Selecionar todas as linhas de uma tabela:

  • DuckDB:
SELECT * FROM tabela;
  • GNU/UNIX (usando cat):
cat arquivo.csv

02. Filtrar linhas com base em uma condição:

  • DuckDB:
SELECT * FROM tabela WHERE coluna = 'valor';
  • GNU/UNIX (usando grep):
grep 'valor' arquivo.csv

03. Contar o número de linhas:

  • DuckDB:
SELECT COUNT(*) FROM tabela;
  • GNU/UNIX (usando wc -l):
wc -l arquivo.csv

04. Agrupar e contar:

  • DuckDB:
SELECT coluna, COUNT(*) FROM tabela GROUP BY coluna;
  • GNU/UNIX (usando awk e sort):
awk -F, '{print $1}' arquivo.csv | sort | uniq -c

05. Ordenar resultados:

  • DuckDB:
SELECT * FROM tabela ORDER BY coluna;
  • GNU/UNIX (usando sort):
sort -t, -k1 arquivo.csv

Utilizando o DuckDB pelo REPL

Para usar o DuckDB diretamente via linha de comando, basta invocar o comando duckdb. Abaixo um exemplo criação de banco de dados, tabela, update, select e entre outros:

v1.2.1 8e52ec4395
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D SHOW DATABASES;
┌───────────────┐
 database_name 
    varchar    
├───────────────┤
 memory        
└───────────────┘
D CREATE TABLE terminalroot (id INTEGER, name STRING);
D INSERT INTO terminalroot VALUES(1, 'Marcos Oliveira');
D INSERT INTO terminalroot VALUES(2, ' Mark Raasveldt');
D INSERT INTO terminalroot VALUES(3, 'Hannes Mühleisen');
D SELECT * FROM terminalroot;
┌───────┬──────────────────┐
  id          name       
 int32      varchar      
├───────┼──────────────────┤
     1  Marcos Oliveira  
     2   Mark Raasveldt  
     3  Hannes Mühleisen 
└───────┴──────────────────┘
D UPDATE terminalroot SET name='Mark Raasveldt' WHERE id = 2;
D SELECT * FROM terminalroot;
┌───────┬──────────────────┐
  id          name       
 int32      varchar      
├───────┼──────────────────┤
     1  Marcos Oliveira  
     2  Mark Raasveldt   
     3  Hannes Mühleisen 
└───────┴──────────────────┘
D 

Para sair digite .exit.


Existe um ecossistema enorme que envolve o DuckDB e é possível até testá-lo online. Abaixo segue links interessantes para você consultar!


sql duckdb cpp


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!