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.
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.
Primeiro, é uma boa prática atualizar o sistema antes de instalar novos pacotes.
sudo apt update && sudo apt upgrade -y
Você pode baixar o DuckDB diretamente do site oficial ou usar um gerenciador de pacotes como o pip
se preferir a versão Python.
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/
pip install duckdb
Observação: O
pip
requer um ambiente virtual, isso pode dificultar o uso DuckDB.
Após a instalação, você pode verificar se o DuckDB está instalado corretamente executando:
duckdb --version
.zip
correspondente à versão mais recente para Windows..zip
para uma pasta de sua escolha, por exemplo, C:\duckdb
.PATH
:Path
, selecione-a e clique em “Editar”.C:\duckdb
). duckdb --version
Aqui estão alguns exemplos de consultas no DuckDB e suas equivalências aproximadas em comandos GNU/UNIX:
SELECT * FROM tabela;
cat
):cat arquivo.csv
SELECT * FROM tabela WHERE coluna = 'valor';
grep
):grep 'valor' arquivo.csv
SELECT COUNT(*) FROM tabela;
wc -l
):wc -l arquivo.csv
SELECT coluna, COUNT(*) FROM tabela GROUP BY coluna;
awk
e sort
):awk -F, '{print $1}' arquivo.csv | sort | uniq -c
SELECT * FROM tabela ORDER BY coluna;
sort
):sort -t, -k1 arquivo.csv
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!