- DuckDB é um banco de dados SQL de arquivo único, especializado em análise de dados
- A maioria das avaliações sobre DuckDB tende a se concentrar em análises quantitativas
- Especialmente em termos de velocidade, o DuckDB geralmente apresenta bom desempenho
- Mas, do ponto de vista do usuário, quando o desempenho já atinge um nível satisfatório, ganhos adicionais de velocidade deixam de ter tanta importância
- Em vez disso, a facilidade de uso se torna mais importante, e o DuckDB leva vantagem nesse aspecto
- Vantagens do DuckDB em facilidade de uso:
- Experiência do desenvolvedor
- Capacidade de lidar com conjuntos de dados maiores que a memória
- Facilidade de instalação e execução
Ergonomia
- O DuckDB foi projetado para tornar tarefas comuns simples de realizar
- Por exemplo, é possível criar tabelas diretamente a partir de arquivos de entrada e inferir o esquema
- No caso de arquivos Parquet, também é possível ler arquivos disponíveis na web
- É possível consultar dados sem criar tabelas previamente
- A função
read_parquet retorna uma relation, então pode ser usada como subconsulta
- O DuckDB oferece suporte à maioria dos recursos SQL usados no Postgres
- Por exemplo, funções de janela têm suporte completo
Conjuntos de dados maiores que a memória
- Muitas ferramentas de dados não funcionam bem quando o conjunto de dados fica maior que a memória do computador
- Isso pode ser uma fonte de dor subestimada
- Já o DuckDB oferece suporte completo a conjuntos de dados maiores que a memória
- No caso do Pandas, podem surgir problemas quando o dataframe ultrapassa 50% da memória do sistema
Instalação e execução simples
- O DuckDB é compilado como um único executável,
duckdb
- É possível experimentar o DuckDB diretamente no navegador via WASM (shell.duckdb.org)
- Por ser baseado em WASM, tudo roda no navegador, e não no servidor
- Usando o DuckDB como se fosse uma biblioteca de dataframes
- O DuckDB se integra bem com Python
- É possível executar consultas dentro do Python e usar os valores retornados
- Isso permite construir operações de dados maiores de forma incremental
- Você obtém ao mesmo tempo as vantagens do SQL e dos dataframes
Armazenamento de dados com csvbase
- A biblioteca cliente do csvbase pode se integrar a diversos sistemas por meio da API fsspec
- Da mesma forma, o DuckDB também pode ser usado com o csvbase
Escalabilidade
- O DuckDB não escala para milhares de máquinas
- Já o Apache Spark consegue, mas com uma complexidade considerável
- Escalar para baixo também é importante
- O DuckDB funciona no nível de um usuário individual e não exige muitos requisitos
Resumo
- O DuckDB pode ser uma opção atraente para analistas de dados que conhecem SQL
- Ele pode lidar com dados maiores que a memória, é fácil de instalar e, em muitos casos, pode ser uma boa alternativa ao Spark
5 comentários
A ParadeDB adicionou recentemente uma boa alternativa. https://blog.paradedb.com/pages/introducing_lakehouse
Especialmente ao criar dashboards interativos simples com ferramentas como o Streamlit, ele é realmente muito bom.
Será que vale a pena migrar do Huggingface Datasets?
Estou experimentando criar uma planilha baseada no DuckDB. Estou muito animado com o DuckDB.
DuckDB - código aberto de banco de dados OLAP embarcado
DuckDB, um banco de dados mesmo sem dados
DuckDB como o novo jq
Lançamento do DuckDB 1.0.0