Marcel Moré stellte die Datenbank DuckDB vor und zeigte einen Weg, wie sich DuckDB mit einem einfachen Setup per REST API Abfrage mit Hilfe von Node.js in FileMaker integrieren lässt. Anschließend demonstrierte er anhand einiger Beispiele die besonderen Stärken von DuckDB und erläuterte, welche Möglichkeiten sich durch den Einsatz von DuckDB eröffnen.

Zunächst ging es um die Frage, was die Besonderheiten von DuckDB ausmacht, und warum man überhaupt eine weitere Datenbank benötigt, um Dinge zu tun, die sich prinzipiell auch in FileMaker lösen lassen.

DuckDB ist relativ neu und erfreut sich seit einiger Zeit steigender Beliebtheit. Die OpenSource Datenbank verzeichnet inzwischen Millionen von Downloads pro Monat. Insbesondere im Bereich Datenanalyse und in der wissenschaftlichen Community erreicht DuckDB eine hohe Aufmerksamkeit.

Warum DuckDB

Ein Grund dafür ist die spezielle Nische, in welcher DuckDB sich positioniert. Es handelt sich genau genommen um ein OLAP Tool für effiziente und flexible Datenanalyse. Im Gegensatz zu herkömmlichen transaktionalen Datenbank-Engines, welche für das zeilenweise Lesen und Schreiben von Datensätzen im Multiuser-Betrieb optimiert sind, verfolgt DuckDB einen anderen Ansatz. Die Engine ist auf einen spalten-orientierten Zugriff der Daten optimiert, wodurch sie eine einzigartige Performance bei der Aggregation von großen Datenmengen erreicht. Zudem läuft sie lokal auf einer Maschine und nutzt die Möglichkeit einer sehr effizienten In-Memory-Verarbeitung was ebenfalls der Verarbeitungsgeschwindigkeit zu Gute kommt.

Weitere Besonderheiten sind die nativen Möglichkeiten zur Verarbeitung von CSV, Parquet, JSON oder Excel-Dateien. Ein toleranter Parser. Die Möglichkeit, direkt auf externen Datenstorage in der Cloud zuzugreifen. Unterstützt werden u.a. HTTP, Amazon S3 Buckets, Hugging Face Datasets und Motherduck Cloud Datenbanken. Durch die Unterstützung des Parquet Datenformats können auch große externe Datensätze sehr effizient und Bandbreiten-schonend durchsucht und verarbeitet werden.

Abgerundet wird das Feature-Set durch sehr mächtige SQL-Befehle, die weit über das Standard-SQL hinausgehen. Damit lassen sich auch komplexe Abfragen und Datenberechnungen mit wenigen Kommandos sehr effizient ausführen. DuckDB kann mit Listen, Arrays oder JSON-Objekten umgehen. Es bietet Befehle zum Deserialisieren, Filtern, Aggregieren und zur Erzeugung von Pivot-Tabellen.

Die Engine ist sehr klein und kann ohne weitere Abhängigkeiten direkt installiert und ausgeführt werden. Es sind Versionen für zahlreiche Plattformen erhältlich, außerdem kann DuckDB als Modul innerhalb von Python oder Node.js geladen werden. Eine WebAssembly-Version erlaubt die Ausführung von SQL-Queries per DuckDB direkt im Browser.

Beispiele

Alle Möglichkeiten aufzuzählen, würde hier komplett den Rahmen sprengen.

Bei den gezeigten Beispielen waren u.a. mit dabei:

  • SQL Abfragen direkt auf CSV Dateien
  • Excel-Dateien lesen oder schreiben
  • Zugriff aufs Filesystem und auf Text-Dateien
  • Abfrage-Ergebnisse als Text, JSON oder HTML-Tabellen ausgeben
  • Abfrage von Cloud-Daten und komplette Auswertungen von Online-Dateien
  • Pivot-Tabellen mit einem einzigen Befehl erzeugen
  • Aggregation von Millionen von Datensätzen innerhalb von Millisekunden

Performance

Bei ersten Tests im Zusammenspiel und Vergleich mit FileMaker zeigte sich, dass die Geschwindigkeit von DuckDB gegenüber FileMaker um ganze Größenordnungen performanter ist. Eine Berechnung von Summen und Durchschnittswerten aus einer FileMaker-Tabelle mit mehreren Hundertausend Datensätzen war in DuckDB knapp 1000x (eintausend) mal so schnell.

Damit eröffnet sich ein spannendes Anwendungsfeld insbesondere bei der Auswertung großer Datenmengen. In einem realen Projekt konnte die Durchlaufzeit gegenüber einer FileMaker-Auswertung, die 10 Stunden benötigt, per DuckDB auf unter 4 Sekunden verkürzt werden. Das sind beeindruckende Ergebnisse. Siehe dazu separater Bericht nachfolgend verlinkt.

Demo-Datei

Für eigene Experimente stellt Marcel eine Demo-Datei und ein dokumentiertes Setup für die Einrichtung des REST APIs per Node.js zum Download bereit. Die Demo-Dateien sowie die Präsentationsfolien finden sich unter nachfolgendem Link:

Integrating DuckDB
https://blog.marcel-more.de/2024/06/08/integrating-duckdb/

FileMaker and DuckDB - what’s special about this liaison?
https://blog.marcel-more.de/2024/06/15/filemaker-and-duckdb-whats-special-about-this-liaison/

Weitere Informationen zu DuckDB

DuckDB
https://duckdb.org

DuckDB Dokumentation
https://duckdb.org/docs/

DuckDB Blog
https://duckdb.org/news/

github: DuckDB
https://github.com/duckdb/duckdb

github: Awesome DuckDB
https://github.com/davidgasquez/awesome-duckdb

Buch: DuckDB in Action
https://www.manning.com/books/duckdb-in-action

Mother Duck: DuckDB Cloud
https://motherduck.com

DuckDB Web Shell
https://shell.duckdb.org

DuckDB Snippets
https://duckdbsnippets.com/