30 Punkte von GN⁺ 2026-01-18 | Noch keine Kommentare. | Auf WhatsApp teilen
  • DuckDB ist eine Open-Source-SQL-Engine, mit der sich große tabellarische Daten auf einer einzelnen Maschine schnell und einfach verarbeiten lassen, und wird in letzter Zeit im Data Engineering breit eingesetzt.
  • Die Installation ist einfach, es gibt keine Abhängigkeiten, und die Engine lässt sich in einer Python-Umgebung sofort ausführen, wodurch sie sich gut für CI und Testautomatisierung eignet.
  • Dank Optimierung für analytische Abfragen ist die Performance im Vergleich zu SQLite oder Postgres um bis zu das 1.000-Fache höher, und verschiedene Dateiformate (csv, parquet, json) können direkt abgefragt werden.
  • Mit benutzerfreundlicher SQL-Syntax (EXCLUDE, COLUMNS, QUALIFY, Function Chaining usw.) und einer Python-API lassen sich komplexe Pipelines effizient entwickeln.
  • Mit ACID-Konformität, Hochleistungs-UDFs und PostgreSQL-Integrations-Erweiterungen entwickelt sich DuckDB zu einer Lakehouse-Alternative für Daten im mittleren Maßstab.

Überblick über DuckDB

  • DuckDB ist eine In-Process-SQL-Engine mit Fokus auf die Optimierung analytischer Abfragen.
    • Sie läuft ohne separaten Server innerhalb der Anwendung und benötigt keinen externen Dienst wie Postgres.
    • Sie ist auf umfangreiche Join- und Aggregationsoperationen spezialisiert und bietet im Vergleich zu transaktionsorientierten Engines (OLTP) eine 100- bis 1.000-fach höhere Performance.
  • Ein zentraler Anwendungsfall ist die Batch-Verarbeitung großer Dateien wie csv, parquet und json, die direkt von der Festplatte eingelesen werden.
  • Sie kann auch für leichtgewichtige Datenexploration genutzt werden, etwa um CSV-Dateien einfach über die Kommandozeile abzufragen.

Hauptmerkmale

  • Geschwindigkeit

    • DuckDB gehört zu den schnellsten Open-Source-Engines für Datenverarbeitung und liegt in Benchmarks regelmäßig weit vorne.
    • Im Vergleich mit Polars, DataFusion, Spark und Dask ist DuckDB bei kleineren Datenmengen im Vorteil, während Spark und Dask bei sehr großen Datenmengen konkurrenzfähig sind.
  • Einfache Installation und keine Abhängigkeiten

    • DuckDB wird als einzelne vorkompilierte Binärdatei bereitgestellt und kann in Python sofort mit pip install duckdb installiert werden.
    • Durch die Abwesenheit von Abhängigkeiten ist die Installation im Vergleich zu großen Frameworks wie Spark sehr einfach.
    • In Kombination mit uv lässt sich eine Python-Umgebung in weniger als einer Sekunde einrichten.
  • CI und Tests

    • Dank schneller Startzeit und geringem Gewicht eignet sich DuckDB gut für CI- und Testumgebungen von Datenpipelines.
    • Frühere Spark-basierte Tests waren langsam und komplex, während DuckDB die Umgebungskonfiguration vereinfacht und Konsistenz mit der Produktion leichter aufrechterhalten lässt.
  • Erfahrung beim Schreiben von SQL

    • Mit DuckDB lassen sich SQL-Abfragen schnell schreiben und syntaktisch prüfen.
    • Gegenüber dem lokalen Spark-Modus oder AWS Athena ist es für sofortige Ausführung und iterative Entwicklung vorteilhafter.
    • Es bietet eine UI mit Autovervollständigung.
  • Benutzerfreundliche SQL-Syntax

    • DuckDB enthält zahlreiche benutzerfreundliche SQL-Erweiterungen.
      • Unterstützt werden u. a. EXCLUDE, COLUMNS, QUALIFY, Modifikatoren für Window-Function-Aggregationen und Function Chaining (first_name.lower().trim()).
    • Diese Funktionen machen komplexe Auswahl- und Transformationsaufgaben bei Spalten deutlich kompakter.
  • Unterstützung für verschiedene Dateiformate

    • Daten können direkt aus S3, Web-URLs und lokalen Dateien abgefragt werden.
    • Für CSV bietet DuckDB Optionen zur strengen Typbehandlung, um Fehler durch unstrukturierte Eingabedaten zu vermeiden.
  • Python-API

    • In Python lassen sich CTE-basierte Pipelines schrittweise definieren, und die Daten jedes Schritts können leicht überprüft werden.
      • Über Aufrufe von duckdb.sql() kann SQL in Kettenform verbunden werden.
      • Dank Lazy Execution lassen sich Zwischenergebnisse ohne Performance-Verlust prüfen.
    • Funktionen pro Schritt können getestet werden, was die Effizienz von CI-Tests verbessert.
  • ACID-Konformität

    • DuckDB bietet vollständige ACID-Garantien, auch bei der Arbeit mit großen Datenmengen.
    • Dadurch kann es als Alternative im mittleren Maßstab zu Lakehouse-Formaten wie Iceberg und Delta Lake genutzt werden.
  • Hochleistungs-UDFs und Community-Erweiterungen

    • Benutzerdefinierte Funktionen (UDFs) mit hoher Performance können in C++ geschrieben werden.
    • Über Community Extensions lassen sich Erweiterungen sofort mit Befehlen wie INSTALL h3 FROM community installieren.
      • Beispiel: Unterstützung für hexagonale Indizierung (h3) für Geodaten.
  • Dokumentation

    • Die gesamte Dokumentation wird als eine einzelne Markdown-Datei bereitgestellt, was sich gut für LLM-Training oder die Suche im Code-Editor eignet.
    • Mit Code-Folding lassen sich nur die benötigten Abschnitte leicht kopieren.

Praktische Nutzung und Wirkung

  • Im Open-Source-Projekt Splink führte die Einführung von DuckDB als Standard-Backend zu folgenden Ergebnissen:
    • Weniger Nutzerprobleme, höhere Arbeitsgeschwindigkeit sowie vereinfachte Feature-Entwicklung und Tests

Bemerkenswerte Erweiterungen

  • PostgreSQL Extension: Postgres-Datenbanken können direkt aus DuckDB verbunden und abgefragt werden.
  • pg_duckdb: Bettet die DuckDB-Engine in Postgres ein, sodass Transaktions- und Analyseverarbeitung parallel möglich sind.
    • Künftig besteht nach Optimierungen bei Postgres-Indizes und Verbesserungen beim Filter Push-up das Potenzial für breite Verbreitung.

Noch keine Kommentare.

Noch keine Kommentare.