DuckDB
freies Datenbankmanagementsystem
From Wikipedia, the free encyclopedia
DuckDB ist eine quelloffene relationale Datenbank. DuckDB wurde als eingebettete Datenbank mit spaltenorientierter Architektur und dem Fokus auf einfache Handhabung für OLAP-Workflows entwickelt.[4][5] Das Projekt verzeichnet etwa 20 Millionen Downloads pro Monat.[6]
| DuckDB | |
|---|---|
| Basisdaten | |
| Entwickler | DuckDB Labs |
| Erscheinungsjahr | 2019 |
| Aktuelle Version | 1.5.0[1][2] (9. März 2026) |
| Betriebssystem | Linux, Windows, MacOS, WebAssembly |
| Programmiersprache | C++[3] |
| Kategorie | Eingebettetes Datenbanksystem |
| Lizenz | MIT-Lizenz |
| duckdb.org | |
Geschichte
DuckDB wurde ursprünglich in den Niederlanden von dem Doktoranden Mark Raasveldt und seinem Betreuer Hannes Mühleisen am Centrum Wiskunde & Informatica (CWI) entwickelt. Die Erstveröffentlichung erfolgte 2019, die erste stabile Version folgte 1.0.0 am 2. Juni 2024.
Eigenschaften und Funktionen
DuckDB ist analog zu SQLite als eingebettete Datenbank konzipiert, weist keine externen Abhängigkeiten auf und kann mit einem C++11-Compiler aus dem Sourcecode erstellt werden. Installationspakete werden für die Programmiersprachen C/C++, Rust, Python, R, Java, Go und Node.js angeboten. Zusätzlich werden tertiäre Bibliotheken zur Einbindung der Datenbank für eine Reihe weiterer Programmiersprachen bereitgestellt.[7]
Zusätzlich zur Verwendung als eingebettete Datenbank, steht auch eine Commandline-Anwendung für die Betriebssysteme Linux, macOS und Windows zur Verfügung.
Der von DuckDB verwendete SQL-Dialekt baut auf PostgreSQL auf, denn der SQL-Parser wurde auf Basis der von Lukas Fittl erstellten pg_query Bibliothek entwickelt.[8] Der DuckDB SQL-Dialekt enthält eine Reihe zusätzlicher Funktionen speziell für analytische Datenauswertungen.[4] Der Funktionsumfang der Basisanwendung lässt sich mit Extensions erweitern.[9]
DuckDB verwendet eine spaltenorientierte, vektorisierte Abfrage-Ausführung, bei der Abfragen weiterhin interpretiert werden, aber eine große Menge von Werten als Vektor in einem einzigen Vorgang verarbeitet werden. Der reduzierte Overhead gegenüber OLTP-Datenbanken führt zu einer deutlich besseren Leistung bei OLAP-Abfragen bei gleichzeitig sparsamen Speicher-Einsatz im Vergleich zu just-in-Time kompilierenden Ausführungs-Engines.[10][11]
DuckDB verwendet ein Einzel-File-Speicherformat, erlaubt aber auch die direkte Abfrage von anderen Datenquellen, wie beispielsweise CSV, Apache Parquet, JSON, SQLite, PostgreSQL, Data Lake, Apache Arrow oder Apache Iceberg.[12]
Extensions
DuckDB verfügt über einen flexiblen Erweiterungsmechanismus. DuckDB liefert eine Reihe an Core-Extensions automatisch mit, die mit dem INSTALL-Befehl aktiviert werden. Mit Extensions können zusätzliche File-Formate verwendet werden, zusätzliche Datentypen verwendet, der Funktionsumfang erweitert werden.
Beispiele zu Core-Extensions
uibietet ein graphisches User-Interface für den Zugriff mittels Web-Browser
Screenshot zu DuckDB UI geöffnet in Mozilla Firefox postgres,mysql,sqliteerlauben die Zugriff auf externe Datenbankenducklackerstellt eine offene und eigenständige Data Lake Anwendung des DuckDB-Projektes. DuckLake bietet Data-Lake-Funktionen ohne die Komplexität herkömmlicher Lakehouses. Es verwendet Parquet-Dateien für die Datenspeicherung. Die Metadaten-Verwaltung erfolgt in einer zentralen SQL-Datenbank wie PostgreSQL. Für einfache Use Case reicht auch DuckDB selbst als Metadaten-Datenbank.[13]
DuckDB Foundation
Die DuckDB Foundation ist eine unabhängige gemeinnützige Stiftung zur langfristigen Wartung und Weiterentwicklung von DuckDB. Die spendenfinanzierte Stiftung besitzt einen Großteil der geistigen Eigentumsrechte des Projekts. Die Satzung der DuckDB Foundation garantiert, dass DuckDB unter der MIT-Lizenz als Open Source verfügbar bleibt.
Weblinks
- Mark Raasveldt: In-Process Analytical Database System (Youtube) Slides (PDF) Kurs an der Carnegie Mellon University
