Panoramica del rilascio e novità principali
Il 21 ottobre è stato pubblicato DuckDB 2.0.0, il più grande feature‑release finora, con quasi 20 000 commit aggiunti rispetto alla versione 1.5. Il team di DuckDB lo definisce un rilascio LTS (Long‑term Service) e garantisce supporto fino ad almeno ottobre 2027.
Tra le innovazioni più evidenti troviamo un server più maturo, la lettura dei dati in modalità asincrona e la capacità di riconoscere quando un agente di intelligenza artificiale (IA) interagisce con la console. Sono stati aggiunti anche i trigger SQL e un nuovo parser SQL proprietario basato su PEG.
Versione LTS e calendario di supporto
- DuckDB 2.0.0: supporto fino a ottobre 2027
- Release LTS precedente 1.4: supporto fino al 17 novembre 2026
- Versione 1.5: supporto fino a marzo 2027
Estensione del protocollo Quack e modalità server
Il protocollo “Quack”, introdotto con DuckDB 1.5.3 per consentire l’esecuzione in un tipico modello client‑server, è stato ottimizzato. Con la 2.0.0 è più veloce e stabile.
Una novità importante è l’istruzione CONNECT. Con un singolo comando gli utenti possono collegare un database remoto e passare direttamente a esso. CONNECT funziona con qualsiasi database che supporti l’esecuzione remota, inclusi Quack, PostgreSQL e MySQL.
Per PostgreSQL e MySQL è stato introdotto un Remote Pushdown Optimizer: le query vengono inviate direttamente al server remoto invece di caricare intere tabelle sulla rete, riducendo così il traffico e i tempi di latenza.
Nel CLI (Command Line Interface) sono disponibili i nuovi parametri -serve per avviare un server Quack e -connect per collegarsi immediatamente a un server remoto.
I/O asincrono per una performance superiore
DuckDB 2.0.0 introduce I/O asincrono per i formati Parquet, CSV non compressi in UTF‑8 e per il proprio formato di storage interno. La separazione della stack di I/O dalla stack di elaborazione delle query permette di avviare letture in background e di mantenere più richieste aperte contemporaneamente.
Questo design aumenta notevolmente il parallelismo nella lettura di dati remoti e accelera drasticamente le query su storage di oggetti, come ad esempio s3://. Un blog post di DuckLabs spiega in dettaglio il funzionamento dell’I/O asincrono.
Il tipo di dato VARIANT, già presente nella versione 1.5 per dati semi‑strutturati come JSON, è ora pienamente integrato. DuckDB “shredda” le strutture comuni in colonne separate, consentendo una compressione più efficace e una velocità di elaborazione maggiore.
Riconoscimento degli agenti IA e modalità “agent”
Una delle innovazioni più interessanti è l’Agent Mode nella linea di comando. Quando DuckDB rileva che un agente di coding IA (ad esempio Claude Code, Codex o Cursor) sta interagendo con il database, passa automaticamente in questa modalità.
In modalità agente DuckDB restituisce tabelle in Markdown compatto, segnala risultati troncati, interrompe query eccessivamente lunghe e restituisce gli errori in formato JSON. Le query lunghe annunciano in anticipo i costi attesi. È possibile attivare o disattivare manualmente il comportamento con i parametri -agent e -no-agent.
Nel benchmark TPC‑H, l’attivazione dell’Agent Mode ha ridotto il numero di token che l’agente IA doveva leggere dal 59 % (da 123 600 a 50 800 token). Tuttavia, l’impatto sui costi totali e sui tempi di esecuzione è stato minimo, poiché il prompt di sistema dell’agente costituisce la maggior parte dell’input, pari a circa lo 0,5 % della totale.
Trigger SQL e nuovo parser basato su PEG
DuckDB 2.0.0 aggiunge il supporto ai trigger SQL. Questi consentono di implementare, ad esempio, tabelle di audit o viste materializzate aggiornate passo‑a‑passo.
Parallelamente, il database sostituisce il parser SQL ereditato da PostgreSQL con un parser proprietario basato su PEG (Parsing Expression Grammar). Questo parser, opzionale già dalla versione 1.5, ora è il default.
Le estensioni possono sfruttare il nuovo parser per introdurre sintassi SQL aggiuntiva, e le segnalazioni di errore mostrano la posizione esatta nella query. Sono stati inoltre introdotti repository di estensioni firmate internamente, permettendo alle organizzazioni di distribuire estensioni verificate. La C API è stata aggiornata alla versione 2, sebbene non sia ancora dichiarata stabile.
Guida alla migrazione verso DuckDB 2.0
Il passaggio a DuckDB 2.0.0 richiede pochi cambiamenti incompatibili. Tuttavia, le versioni precedenti non possono leggere file di database creati con la 2.0.0. Per questo motivo il team consiglia di testare prima la nuova versione in un ambiente “shadow” prima di migrare la produzione.
Gli utenti con carichi di lavoro critici dovrebbero attendere il primo patch release, previsto per il 18 novembre, per assicurarsi di avere correzioni di eventuali bug iniziali.
Dettagli aggiuntivi e risorse
Tutte le note di rilascio complete sono disponibili su GitHub. Il team di DuckDB ha pubblicato un ulteriore articolo che descrive le novità minori introdotte in questo ciclo di sviluppo.
Il nome in codice “Cinnamon Teal” fa riferimento alla “spatula cyanoptera”, una specie di anatra dal piumaggio rosso‑marrone diffusa nell’America del Nord e del Sud occidentale.
