DuckDB 2.0 verschijnt naar verwachting dit najaar onder de naam Cyanoptera. De nieuwe hoofdversie bevat volgens de makers meer dan 10.000 wijzigingen sinds versie 1.5, die in maart uitkwam. Het gaat niet alleen om nieuwe functies: ook de SQL-parser, de standaard voor opslag, de C-API en enkele bestaande gedragingen veranderen.
Database als server
De belangrijkste koerswijziging is de introductie van een servermodus. DuckDB was tot nu toe vooral een database die direct in een toepassing draait. Met de stabiele Quack-extensie kan een DuckDB-proces databases via het netwerk beschikbaar stellen aan andere DuckDB-processen. Clients kunnen met de nieuwe SQL-opdracht CONNECT verbinding maken en query's op de server uitvoeren.
Dezelfde opdracht kan ook worden gebruikt voor verbindingen met databases als PostgreSQL en MySQL. Een nieuwe optimizer probeert bewerkingen naar die externe databases door te sturen, zodat niet eerst volledige tabellen over het netwerk hoeven te worden gekopieerd. De servervariant moet DuckDB geschikter maken voor langdurige en gedeelde toepassingen met meerdere gebruikers. Voor zulke omgevingen wordt ook gewerkt aan betere statistieken, logging en mogelijkheden om de werking van een database-instantie te volgen.
VARIANT en triggers
Versie 2.0 maakt het VARIANT-datatype uitgebreider. Dit type is bedoeld voor semi-gestructureerde gegevens, zoals JSON-achtige logregels waarvan de inhoud per record kan verschillen. DuckDB herkent terugkerende structuren automatisch en slaat die efficiënter op dan gewone tekst. Daardoor kunnen de gegevens sneller worden verwerkt zonder dat vooraf een vast schema nodig is.
De nieuwe versie kan VARIANT-gegevens rechtstreeks vanuit de opslag verwerken en ondersteunt lezen en schrijven in Parquet-bestanden. Ook komen functies beschikbaar om het type, de sleutels en de inhoud van een waarde te onderzoeken. Op termijn willen de makers het reguliere JSON-type op dezelfde techniek baseren.
Daarnaast introduceert DuckDB ondersteuning voor database-triggers. Die kunnen vóór of na een bewerking op rijen of op een volledige instructie worden uitgevoerd. Ook zijn overgangstabellen met oude en nieuwe waarden beschikbaar. Daarmee kunnen gebruikers bijvoorbeeld automatisch wijzigingen vastleggen in een audit-tabel.
Verder breidt DuckDB de SQL-dialect uit met onder meer benaderende nearest-joins voor vergelijkbaarheids- en vectorzoekopdrachten, bewerkingen als INSERT, UPDATE en DELETE binnen CTE's, geneste schema's en een kortere syntaxis voor variabelen. De release bevat ook asynchrone I/O en een nieuw opslagformaat.



