DuckDB
| DuckDB | |
|---|---|
| Repositório | |
| Website | duckdb |
O DuckDB é um sistema de gerenciamento de banco de dados relacional (SGBD) orientado a colunas, de código aberto e licenciado sob a MIT License. Foi criado em 2018 por Mark Raasveldt e Hannes Mühleisen no Centrum Wiskunde & Informatica (CWI), instituto nacional holandês de pesquisa em matemática e ciência da computação, e lançado publicamente em 2019.[1]
Diferentemente da maioria dos SGBDs, o DuckDB é projetado para operar embutido dentro do processo hospedeiro (in-process), sem servidor externo, sem dependências externas e com instalação trivial — modelo análogo ao SQLite, mas voltado exclusivamente para cargas analíticas (OLAP) em vez de transacionais (OLTP).
Características técnicas
[editar | editar código]Armazenamento colunar e execução vetorizada
[editar | editar código]O DuckDB utiliza um motor de execução de consultas vetorizado (vectorized query execution), no qual os dados são processados em lotes por coluna ao longo do pipeline de consulta, reduzindo o número de ciclos de CPU por valor processado. Esse modelo, herdado conceitualmente de projetos como MonetDB e Vectorwise (também oriundos do CWI), é otimizado para as operações típicas de OLAP: agregações sobre tabelas inteiras, junções entre tabelas grandes e varreduras de colunas esparsas.
Modelo embutido (in-process)
[editar | editar código]O DuckDB não roda como um processo separado. Ele é vinculado diretamente ao processo hospedeiro como uma biblioteca, o que permite transferência de dados de alta velocidade entre a aplicação e o SGBD — em alguns casos sem cópia alguma. Por exemplo, o pacote Python do DuckDB pode executar consultas diretamente sobre DataFrames do pandas sem importar ou copiar os dados.
Sem dependências externas
[editar | editar código]O DuckDB pode ser compilado com apenas um compilador C++17. Todo o código-fonte é distribuído como dois arquivos (um header e um arquivo de implementação — a chamada amalgamation), o que simplifica integração e implantação. Ele roda em Linux, macOS e Windows, nas arquiteturas x86 e ARM, e pode ser compilado para WebAssembly via DuckDB-Wasm, permitindo execução analítica diretamente no navegador.
Formato de armazenamento
[editar | editar código]O DuckDB utiliza um formato de arquivo único para persistência de dados em disco, otimizado para varreduras eficientes e atualizações em massa. A partir da versão 0.10.0, o formato é retrocompatível: versões mais recentes conseguem ler arquivos criados por versões anteriores a partir da v0.9. O formato também suporta índices do tipo Adaptive Radix Tree (ART) para acelerar consultas pontuais e de alta seletividade.
Garantias transacionais (ACID)
[editar | editar código]Apesar do foco analítico, o DuckDB oferece propriedades ACID por meio de um controle de concorrência multiversão (MVCC) customizado, otimizado para operações em lote. O nível de isolamento oferecido é snapshot isolation.
Suporte SQL
[editar | editar código]O DuckDB suporta um dialeto SQL extenso, com subconsultas correlacionadas arbitrárias, funções de janela, tipos complexos (arrays, structs, maps), sintaxe GROUP BY ALL, UNION ALL BY NAME, e integrações nativas com formatos como Apache Parquet, CSV, JSON, Apache Arrow, Delta Lake e Apache Iceberg.
O parser SQL do DuckDB é derivado da biblioteca pg_query, por sua vez derivada do parser do PostgreSQL.
Histórico de versões
[editar | editar código]O projeto iniciou em 2018 como pesquisa no CWI e foi apresentado na conferência ACM SIGMOD em 2019. As versões iniciais (0.x) introduziram progressivamente o suporte a extensões, melhorias no parser SQL e o formato de armazenamento estável.
A versão 1.0.0 foi lançada em junho de 2024, marcando a maturidade do projeto para uso em produção. As versões subsequentes trouxeram melhorias cumulativas de desempenho que resultaram, segundo estimativa da MotherDuck, em ganho de 2× em relação à versão 1.0.[2]
| Versão | Codinome | Data | Destaques |
|---|---|---|---|
| 1.0.0 | — | Junho 2024 | Primeira versão estável para produção; formato de armazenamento retrocompatível garantido |
| 1.1.0 | Eatoni | Setembro 2024 | Paralelismo em streaming de resultados; melhorias em índices para chaves estrangeiras |
| 1.2.0 | Histrionicus | Fevereiro 2025 | Melhorias no leitor CSV; nova API C para extensões; autocomplete no CLI |
| 1.3.0 | Ossivalis | Maio 2025 | Estimativa adaptativa de cardinalidade via HyperLogLog; ganhos em TPC-DS |
| 1.4.0 | Andium | Setembro 2025 | Versão LTS; criptografia AES-256; suporte a MERGE INTO; imagens Docker oficiais |
A partir da versão 1.4, o DuckDB adota um ciclo de suporte de longo prazo (LTS): versões alternadas recebem suporte comunitário por um ano após o lançamento. Suporte comercial para versões LTS encerradas é oferecido pelo DuckDB Labs.
Ecossistema e extensões
[editar | editar código]O DuckDB possui um sistema de extensões que permite adicionar funcionalidades sem modificar o núcleo do banco. Entre as extensões oficiais estão:
- httpfs — leitura e escrita de arquivos remotos via HTTP e S3
- spatial — operações geoespaciais (funções ST_*)
- iceberg — integração com tabelas Apache Iceberg (leitura e escrita, incluindo catálogos REST)
- delta — suporte nativo ao formato Delta Lake
- ducklake — formato lakehouse que armazena metadados em SQL com propriedades ACID, com suporte a time travel, evolução de schema e transações DDL
O DuckLake, anunciado em 2025, reimagina o formato lakehouse ao mover todas as estruturas de metadados para um banco de dados SQL, aproveitando suas propriedades ACID para gerenciamento transacional de catálogos e tabelas, enquanto os dados permanecem em formatos abertos como Parquet.[3]
O DuckDB também oferece integrações com as principais linguagens e ferramentas do ecossistema de dados: Python (incluindo pandas, Polars e Arrow), R (com dplyr), Java, Node.js e Go, além de suporte a ADBC (Arrow Database Connectivity) para transferência de dados sem cópia entre sistemas.
Governança e modelo comercial
[editar | editar código]O desenvolvimento do DuckDB é supervisionado pela DuckDB Foundation, organização sem fins lucrativos holandesa que detém a propriedade intelectual do projeto e garante sua manutenção de longo prazo sob licença MIT. A fundação optou por não aceitar financiamento de capital de risco, declarando que investimento externo forçaria o projeto em direção à monetização, o que conflita com o objetivo de manter o DuckDB aberto e acessível.[4]
O suporte e consultoria comercial são oferecidos pela DuckDB Labs, empresa co-fundada por Raasveldt e Mühleisen. Separadamente, a MotherDuck — empresa independente fundada em 2022 — construiu uma plataforma de análise em nuvem sobre o DuckDB, tendo captado investimento de fundos incluindo Andreessen Horowitz.
Casos de uso e adoção
[editar | editar código]O DuckDB é amplamente utilizado para:
- Análise exploratória de dados (EDA) em notebooks Python e R
- Pipelines de engenharia de dados que processam arquivos Parquet, CSV e JSON sem necessidade de um cluster distribuído
- Substituição de ferramentas como Apache Spark para cargas de trabalho de pequeno a médio porte em hardware modesto
- Análise diretamente no navegador via DuckDB-Wasm
- Componente de motores de lakehouse, como MotherDuck e soluções baseadas em DuckLake
O DuckDB é utilizado em empresas como Facebook, Google e Airbnb. Em 2024, foi eleito o terceiro banco de dados mais desejado pelos desenvolvedores segundo a pesquisa Stack Overflow Developer Survey.[5]
Referências
[editar | editar código]- ↑ Raasveldt, Mark; Mühleisen, Hannes (2019). DuckDB: An Embeddable Analytical Database. ACM SIGMOD. pp. 1981–1984. doi:10.1145/3299869.3320212
- ↑ «How Much Faster is DuckDB 1.5 vs 1.0?». Consultado em 24 de março de 2026
- ↑ «DuckDB Ecosystem: June 2025». Consultado em 24 de março de 2026
- ↑ «Why DuckDB». Consultado em 24 de março de 2026
- ↑ «DuckDB Ecosystem Newsletter». Consultado em 24 de março de 2026
Ligações externas
[editar | editar código]- «Página oficial»
- Repositório no GitHub
- Por que DuckDB (documentação oficial)
- Calendário de versões