Ir para o conteúdo

DuckDB

Origem: Wikipédia, a enciclopédia livre.
DuckDB
Repositório
Websiteduckdb.org

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ãoCodinomeDataDestaques
1.0.0—Junho 2024Primeira versão estável para produção; formato de armazenamento retrocompatível garantido
1.1.0EatoniSetembro 2024Paralelismo em streaming de resultados; melhorias em índices para chaves estrangeiras
1.2.0HistrionicusFevereiro 2025Melhorias no leitor CSV; nova API C para extensões; autocomplete no CLI
1.3.0OssivalisMaio 2025Estimativa adaptativa de cardinalidade via HyperLogLog; ganhos em TPC-DS
1.4.0AndiumSetembro 2025Versã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]
  1. ↑ Raasveldt, Mark; Mühleisen, Hannes (2019). DuckDB: An Embeddable Analytical Database. ACM SIGMOD. pp. 1981–1984. doi:10.1145/3299869.3320212
  2. ↑ «How Much Faster is DuckDB 1.5 vs 1.0?». Consultado em 24 de março de 2026
  3. ↑ «DuckDB Ecosystem: June 2025». Consultado em 24 de março de 2026
  4. ↑ «Why DuckDB». Consultado em 24 de março de 2026
  5. ↑ «DuckDB Ecosystem Newsletter». Consultado em 24 de março de 2026

Ligações externas

[editar | editar código]