Daten & Tabellen

DuckDB 2.0 führt Server-Modus, asynchrone I/O und Unterstützung für den Variant-Typ ein

DuckDB 2.0.0 LTS stellt Client-Server-Funktionen über das Quack-Protokoll vor, ermöglicht asynchrone E/A-Vorgänge für schnellere Remote-Lesezugriffe und bietet einen vollwertigen VARIANT-Typ für semi-strukturierte Daten.

Ein geometrisches Entenlogo, zusammengesetzt aus Serverschränken, schwimmend in Binärcode
Für diesen Artikel erstellte Illustration

Automatisch aus dem englischen Original übersetzt.

Das DuckDB-Team hat die Version 2.0.0 LTS mit dem Codenamen „Cinnamon Teal“ veröffentlicht. Dies markiert eine bedeutende Abkehr von der reinen Stabilitätsorientierung hin zu einer umfassenden Erweiterung der Funktionen. Das am 21. Oktober 2026 veröffentlichte Update führt native Server-Fähigkeiten, asynchrone Eingabe-/Ausgabeoperationen und eine verbesserte Verarbeitung semi-strukturierter Daten ein. Es handelt sich um das größte Feature-Release in der Geschichte des Projekts, basierend auf fast 20.000 Commits seit Version 1.5.

Was passiert ist

DuckDB wurde traditionell als In-Process-Datenbank betrieben, was bedeutet, dass sie im selben Speicherbereich wie die anwendende Software läuft. Version 2.0 ändert diese Architektur durch die Verfeinerung des Quack-Protokolls, das es DuckDB ermöglicht, in einem klassischen Client-Server-Setup zu funktionieren. Die neue CONNECT-Anweisung erlaubt es Nutzern, sich mit einzelnen Befehlen mit Remote-Datenbanken zu verbinden und zu ihnen zu wechseln, was die Ergonomie für verteilte Workflows verbessert. Während der Server aus Sicherheitsgründen standardmäßig nur auf localhost lauscht, kann er hinter einem Reverse Proxy mit TLS-Terminierung platziert werden, um externe Verbindungen sicher anzunehmen.

Leistungsverbesserungen stehen im Mittelpunkt dieses Releases, insbesondere durch die Einführung asynchroner E/A-Vorgänge. Diese Funktion ermöglicht es der E/A-Schicht, unabhängig von der Query-Verarbeitung zu skalieren, indem Lesevorgänge im Hintergrund initiiert und mehrere Anfragen gleichzeitig abgearbeitet werden. Diese Änderung steigert die Parallelität bei Remote-Lesezugriffen erheblich und führt zu deutlich schnelleren Queries beim Zugriff auf Objektspeicherdienste wie Amazon S3. Darüber hinaus ist der in Version 1.5 eingeführte VARIANT-Typ nun vollständig als vollwertiger Bestandteil integriert. Er speichert schemafreie Daten wie JSON, behält dabei aber die Leistungsfähigkeit der spaltenorientierten Ausführung bei und erkennt automatisch häufige Strukturen, um Komprimierung und Geschwindigkeit zu optimieren.

Das Release umfasst zudem umfangreiche Updates für Erweiterbarkeit und SQL-Funktionen. Ein neuer PEG-basierter Parser ersetzt den alten, von PostgreSQL abgeleiteten Parser. Dies ermöglicht es Erweiterungen, direkt in die Grammatik einzugreifen, und liefert präzisere Fehlermeldungen. Trigger werden nun unterstützt, wodurch automatische Aktionen wie Audit-Logging oder die inkrementelle Pflege materialisierter Ansichten möglich sind. Außerdem können Nutzer ihre eigenen vertrauenswürdigen Extension-Repositories hosten, sodass Organisationen benutzerdefinierte Erweiterungen innerhalb ihrer Infrastruktur sicher signieren und verteilen können.

Wichtige Details

  • Langzeitunterstützung (LTS): DuckDB 2.0 ist ein LTS-Release, das mindestens bis Oktober 2027 unterstützt wird. Die Unterstützung für Version 1.5 wurde bis März 2027 verlängert, um die Migration zu erleichtern.
  • Agent Mode: Die CLI erkennt Coding-Agents wie Claude Code oder Cursor und wechselt in einen kompakten Ausgabemodus, der den Token-Verbrauch in Tests um 59 % reduziert.
  • Asynchrone E/A: Asynchrones Lesen für Parquet-, CSV- und native Formate verbessert den Durchsatz für Remote-Datenquellen, indem die E/A von der Query-Ausführung entkoppelt wird.
  • VARIANT-Typ: Vollständig integrierte Unterstützung für semi-strukturierte Daten ermöglicht effiziente Speicherung und Abfragen von JSON-ähnlichen Strukturen ohne den Overhead von Textformaten.
  • Benutzerdefinierte Repositories: Organisationen können ihre eigenen Extension-Repositories registrieren und hosten, wobei Pakete per RSA signiert werden, um eine sichere interne Verteilung zu gewährleisten.
  • Breaking Changes: Datenbankdateien, die mit Version 2.0 erstellt wurden, können nicht von älteren Versionen gelesen werden, obwohl Version 2.0 Dateien aus früheren Releases weiterhin lesen kann.

Hintergrund

Für Teams, die mit dieser Umstellung nicht vertraut sind: Der Wechsel von einer In-Process-Datenbank zu einem Client-Server-Modell beinhaltet die Trennung der Datenbank-Engine von der Anwendungslogik. In einem In-Process-Setup läuft die Datenbankbibliothek direkt im Speicher der Anwendung, was die Bereitstellung vereinfacht, aber den gleichzeitigen Zugriff einschränkt. Das neue Quack-Protokoll ermöglicht es DuckDB, Netzwerkverbindungen zu empfangen, sodass mehrere Clients gleichzeitig dieselben Daten abfragen können. Dies spiegelt die Architektur traditioneller Systeme wie PostgreSQL wider, behält jedoch die analytischen Leistungsmerkmale von DuckDB bei.

Asynchrone E/A ist eine Technik, bei der Lesevorgänge den Hauptverarbeitungsthread nicht blockieren. Stattdessen initiiert das System Leseanfragen und setzt andere Arbeiten fort, während es auf Daten wartet, die vom Datenträger oder Netzwerkspeicher eintreffen. Dies ist besonders kritisch für Cloud-native Umgebungen, in denen Daten oft in Objektspeichern statt auf lokalen Festplatten liegen. Indem mehrere Leseanfragen gleichzeitig aktiv bleiben, kann die Datenbank verfügbare Bandbreite effektiver nutzen und die Wartezeiten für die Datenabrufung bei komplexen analytischen Queries reduzieren.

Warum das wichtig ist

Für Engineering-Teams, die selbst gehostete Analytics-Plattformen betreiben, eröffnet die Möglichkeit, DuckDB als Server bereitzustellen, neue architektonische Optionen. Sie ermöglicht zentralisiertes Data Serving, ohne auf schwerfälligere und komplexere Datenbanksysteme migrieren zu müssen. Die verbesserte Ergonomie der CONNECT-Anweisung vereinfacht das Management von Remote-Datenquellen und macht es leichter, föderierte Query-Systeme zu erstellen, die Daten aus PostgreSQL, MySQL oder anderen DuckDB-Instanzen beziehen. Dies reduziert den Bedarf an komplexen ETL-Pipelines, wenn Echtzeitzugriff auf verteilte Daten erforderlich ist.

Die Leistungssteigerungen durch asynchrone E/A wirken sich direkt auf Kosten und Effizienz für Unternehmen aus, die große Datensätze im Cloud-Objektspeicher ablegen. Schnellere Query-Zeiten bedeuten weniger verbrauchte Rechenzeit pro Analyse, was zu erheblichen Einsparungen bei den Cloud-Infrastrukturkosten führen kann. Zudem adressiert die vollwertige Unterstützung des VARIANT-Typs einen häufigen Schmerzpunkt im modernen Data Engineering: die Handhabung semi-strukturierter Log-Daten oder API-Antworten. Durch die effiziente Behandlung dieser Daten im Spaltenspeicher können Teams die Leistungseinbußen vermeiden, die durch das Parsen von JSON-Strings zur Laufzeit entstehen.

Betriebssicherheit und Kontrolle werden durch die Möglichkeit, private Extension-Repositories zu hosten, erhöht. Organisationen, die eigene interne Tools oder sensible Datenkonnektoren entwickeln, können diese nun mit derselben Leichtigkeit und Sicherheit verteilen wie offizielle Erweiterungen. Dies stellt sicher, dass nur verifizierter Code in Produktionsumgebungen ausgeführt wird, und mindert Lieferkettenrisiken im Zusammenhang mit Plugins von Drittanbietern. Der verlängerte Support-Zeitraum für Version 1.5 bietet Teams zudem ein sicheres Fenster zum Testen und Validieren ihrer Migrationen ohne unmittelbaren Druck.

Was Sie tun können

  • Testen Sie die neue Version in einem Shadow-System, bevor Sie Produktionsumgebungen aktualisieren, um Kompatibilitätsprobleme mit bestehenden Datenbankdateien zu identifizieren.
  • Evaluieren Sie das Quack-Protokoll für Use Cases, die gleichzeitigen Zugriff auf DuckDB-Daten von mehreren Anwendungen oder Diensten erfordern.
  • Führen Sie Benchmarks der Query-Leistung auf Remote-Objektspeichern durch, um die Auswirkungen asynchroner E/A auf Ihre spezifischen Workloads zu messen.
  • Refaktorisieren Sie Ihre JSON-Handling-Logik, um den VARIANT-Typ für verbesserte Komprimierung und Query-Geschwindigkeit bei semi-strukturierten Daten zu nutzen.
  • Richten Sie ein privates Extension-Repository ein, falls Ihr Team benutzerdefinierte DuckDB-Erweiterungen pflegt, und stellen Sie sicher, dass diese signiert und verifiziert sind.
  • Prüfen Sie den Migrationsguide auf Breaking Changes, insbesondere hinsichtlich der Kompatibilität des Speicherformats und der Unterschiede im Parser-Verhalten.

Weitere News

Alle News