Pular para o conteúdo

DuckDB 2.0 LTS adiciona modo servidor, gatilhos e VARIANT

O DuckDB 2.0.0, uma versão de suporte de longo prazo lançada em 21 de outubro, adiciona modo servidor, gatilhos e VARIANT. Versões anteriores à 2.0 não conseguem ler seus arquivos.

Por Tech AI Wire Team

4 min de leitura

XLinkedIn
A arte do DuckDB para a versão 2.0: um pato em voo desenhado em linhas pontilhadas sobre um fundo amarelo.
Foto: DuckDB

Em números

commits since DuckDB 1.5, per the DuckDB team
~20,000
earliest end of support for DuckDB 2.0
Oct 2027
extended end of support for DuckDB 1.5
March 2027

O DuckDB lançou a versão 2.0.0 em 21 de outubro de 2026. É uma versão de suporte de longo prazo (LTS), que o projeto vai manter até pelo menos outubro de 2027. Ela adiciona um modo servidor embutido, gatilhos (triggers) SQL e um novo parser. Também traz uma mudança sem volta: arquivos de banco de dados gravados pela 2.0 não podem ser abertos por nenhuma versão anterior, então as atualizações precisam de um plano.

O DuckDB é um banco de dados SQL de código aberto para análise de dados. Como o SQLite, ele roda dentro do seu programa, e não como um servidor separado. Diferente do SQLite, ele foi feito para grandes consultas analíticas sobre tabelas grandes e arquivos como Parquet e CSV.

O que o DuckDB 2.0 traz de novo

O anúncio do DuckDB chama a 2.0 de a maior versão de recursos da equipe até agora, construída a partir de quase 20.000 commits desde a versão 1.5. "O DuckDB 2.0 é, acima de tudo, uma versão de recursos", escreve a equipe do DuckDB. O codinome da versão é "Cinnamon Teal", em referência à espécie de pato Spatula cyanoptera. A versão no GitHub usa o nome "Cyanoptera".

RecursoO que faz
Modo servidor QuackRoda o DuckDB como um servidor ao qual outros clientes se conectam
GatilhosCREATE TRIGGER executa SQL automaticamente, antes ou depois de uma alteração em uma tabela
Tipo VARIANTArmazena dados semiestruturados, como JSON, e separa a estrutura comum deles para melhor compressão e velocidade
E/S assíncronaLê arquivos Parquet e CSV enquanto as consultas rodam, com várias requisições em andamento, principalmente para acelerar armazenamento em nuvem como o Amazon S3
Novo parser SQLUm parser baseado em PEG agora é o padrão; extensões podem adicionar sua própria sintaxe SQL, e os erros mostram onde está o problema
Fusos horários nativosFusos horários, calendários e collations não precisam mais da biblioteca ICU

Um gatilho é uma regra guardada no banco de dados: quando uma linha muda, execute também este SQL. O DuckDB 2.0 suporta gatilhos BEFORE e AFTER, no nível de linha ou de instrução. Algumas combinações ainda não são suportadas, como um gatilho BEFORE ... FOR EACH ROW em UPDATE.

O Quack transforma o DuckDB em servidor

Até agora, o DuckDB atendia a um programa por vez. Com o Quack, CALL quack_serve(...) inicia um servidor, e um cliente se conecta com ATTACH 'quack:...'. Uma nova instrução CONNECT muda uma sessão inteira para um banco de dados remoto. A ferramenta de linha de comando ganha as opções correspondentes -serve e -connect.

Por padrão, o servidor escuta apenas na máquina local. Para acesso remoto, a equipe do DuckDB recomenda colocá-lo atrás de um proxy reverso que cuide da criptografia TLS. A InfoWorld informou em agosto que o Quack também facilita consultar bancos de dados PostgreSQL e MySQL remotamente.

Mudanças incompatíveis para verificar antes de atualizar

Segundo o anúncio da versão e as notas de lançamento no GitHub, estas mudanças podem quebrar código ou builds existentes:

  • Os arquivos são de mão única. O DuckDB 2.0 lê e grava arquivos de banco de dados existentes. "Versões do DuckDB anteriores à 2.0 não conseguem ler arquivos de banco de dados criados pelo DuckDB 2.0", alerta a equipe.
  • Novo parser por padrão. SET enable_legacy_parser = true; traz o antigo de volta.
  • Lambdas de seta simples estão desligadas. Sintaxe como x -> x + 1 está desativada. SET lambda_syntax = 'enable_single_arrow'; a reativa até que a versão 2.1 a remova.
  • A divisão inteira por zero agora gera um erro em vez de retornar NULL.
  • Os builds exigem C++17, contra C++11 antes, e os builds de release agora usam o compilador Clang. Builds por amalgamação estão obsoletos.
  • Os Macs com Intel estão sendo descontinuados aos poucos. Extensões da comunidade não são mais compiladas para macOS em x86_64, e o DuckDB 2.1 deixa de suportá-los.

As fontes divergem em um detalhe. A prévia da InfoWorld descrevia uma API C estável para extensões. O anúncio da versão diz que a C API v2 reformulada "ainda não está marcada como estável", porque a equipe quer testá-la primeiro na prática.

Períodos de suporte

VersãoSuporte até
DuckDB 2.0 (LTS)Pelo menos outubro de 2027
DuckDB 1.5Março de 2027 (estendido)
DuckDB 1.4Final de novembro de 2026

O que isso significa para desenvolvedores

Trate isso como uma migração planejada, não como uma atualização de rotina.

  • Copie seus arquivos de banco de dados antes da primeira abertura. Depois que o DuckDB 2.0 grava em um arquivo, uma ferramenta mais antiga ou um colega na 1.5 não consegue mais lê-lo. Atualize juntos tudo o que lê um arquivo compartilhado.
  • Teste em uma cópia da produção. A equipe do DuckDB recomenda primeiro um sistema sombra. Para trabalhos de missão crítica, ela sugere esperar pela primeira versão de correção, prevista para novembro.
  • Verifique seu cliente. A ferramenta de linha de comando e o cliente Python já estão prontos. Os clientes Go, R e Java, e algumas extensões, "podem levar alguns dias", diz a equipe.
  • Procure dois padrões no seu SQL. Busque lambdas de seta simples e qualquer divisão inteira que possa acabar dividindo por zero. As duas agora se comportam de outro jeito.
  • Não exponha um servidor Quack diretamente. Mantenha-o em localhost ou coloque um proxy reverso com TLS na frente, como a equipe recomenda.
  • Equipes na 1.4 devem migrar primeiro. O suporte a ela termina no final de novembro de 2026. Atualize para a 2.0, ou para a 1.5 como um passo menor.

Fontes

  1. Announcing DuckDB 2.0.0 - DuckDB
  2. DuckDB v2.0.0 release notes - GitHub
  3. DuckDB 2.0 coming this fall with client-server mode - InfoWorld

Artigos relacionados