- DuckDB ist eine SQL-Datenbank in einer einzigen Datei, die auf Datenanalyse spezialisiert ist
- Die meisten Bewertungen von DuckDB konzentrieren sich tendenziell auf quantitative Analysen
- Insbesondere bei der Geschwindigkeit zeigt DuckDB im Allgemeinen eine gute Performance
- Aus Nutzersicht haben weitere Geschwindigkeitssteigerungen jedoch kaum noch Bedeutung, sobald die Performance ein zufriedenstellendes Niveau erreicht hat
- Stattdessen ist Benutzerfreundlichkeit wichtiger, und genau hier hat DuckDB seine Stärken
- Vorteile von DuckDB bei der Benutzerfreundlichkeit:
- Developer Experience
- Verarbeitung von Datensätzen, die größer als der Arbeitsspeicher sind
- Einfache Installation und Ausführung
Ergonomie
- DuckDB wurde so entwickelt, dass sich gängige Aufgaben einfach erledigen lassen
- So können beispielsweise Tabellen direkt aus Eingabedateien erzeugt und Schemas automatisch abgeleitet werden
- Bei Parquet-Dateien können sogar Dateien aus dem Web gelesen werden
- Daten lassen sich abfragen, ohne Tabellen vorab anzulegen
- Die Funktion
read_parquet gibt eine Relation zurück und kann daher als Unterabfrage verwendet werden
- DuckDB unterstützt die meisten SQL-Funktionen, die auch in Postgres verwendet werden
- So werden zum Beispiel Window Functions vollständig unterstützt
Verarbeitung von Datensätzen, die größer als der Arbeitsspeicher sind
- Viele Datentools funktionieren nicht richtig, wenn der Datensatz größer als der Arbeitsspeicher des Computers wird
- Das kann eine unterschätzte Quelle von Frust sein
- DuckDB hingegen unterstützt Datensätze, die größer als der Arbeitsspeicher sind, vollständig
- Bei Pandas können Probleme auftreten, wenn ein DataFrame mehr als 50 % des Systemspeichers belegt
Einfache Installation und Ausführung
- DuckDB wird zu einer einzelnen ausführbaren Datei
duckdb kompiliert
- Über WASM kann DuckDB direkt im Browser ausprobiert werden (shell.duckdb.org)
- Da es auf WASM basiert, läuft alles im Browser und nicht auf einem Server
- DuckDB wie eine DataFrame-Bibliothek verwenden
- DuckDB ist gut in Python integriert
- Innerhalb von Python können Abfragen ausgeführt und Rückgabewerte weiterverwendet werden
- So lassen sich schrittweise umfangreichere Datenoperationen aufbauen
- Man erhält sowohl die Vorteile von SQL als auch die Vorteile von DataFrames
Datenspeicherung mit csvbase
- Die Client-Bibliothek von csvbase kann über die fsspec API mit verschiedenen Systemen integriert werden
- Ebenso kann DuckDB zusammen mit csvbase verwendet werden
Skalierbarkeit
- DuckDB skaliert nicht auf Tausende von Maschinen
- Apache Spark kann das zwar, bringt aber erhebliche Komplexität mit sich
- Auch Skalierung nach unten ist wichtig
- DuckDB funktioniert auf Ebene einzelner Nutzer und hat nicht viele Anforderungen
Zusammenfassung
- DuckDB kann eine attraktive Wahl für Datenanalysten sein, die SQL beherrschen
- Es kann Daten verarbeiten, die größer als der Arbeitsspeicher sind, ist einfach zu installieren und in vielen Fällen eine gute Alternative zu Spark
5 Kommentare
ParadeDB hat kürzlich eine gute Alternative hinzugefügt. https://blog.paradedb.com/pages/introducing_lakehouse
Besonders beim Erstellen einfacher interaktiver Dashboards mit Streamlit und ähnlichen Tools ist es wirklich gut.
Lohnt sich dafür ein Wechsel von Huggingface Datasets?
Ich experimentiere gerade damit, eine Tabellenkalkulation auf Basis von DuckDB zu bauen. Ich bin sehr gespannt auf DuckDB.
DuckDB – Open Source für eingebettete OLAP-Datenbanken
DuckDB: Eine Datenbank auch ohne Daten
DuckDB als neues jq
Release von DuckDB 1.0.0