Häufig gestellte Fragen
Häufig gestellte Fragen
Übersicht
Wer entwickelt DuckDB?
DuckDB wurde von Dr. Mark Raasveldt und Dr. Hannes Mühleisen am Centrum Wiskunde & Informatica (CWI) in Amsterdam, Niederlande, geschaffen. Mark und Hannes haben die DuckDB Foundation gegründet, die Spenden sammelt und die Entwicklung und Wartung von DuckDB finanziert. Mark und Hannes sind außerdem Mitgründer von DuckLabs, das kommerzielle Dienste rund um DuckDB anbietet und mehrere Kernbeitragende von DuckDB beschäftigt.
Warum heißt es DuckDB?
Enten sind erstaunliche Tiere. Sie können fliegen, laufen und schwimmen. Sie können sich von so gut wie allem ernähren. Sie sind recht widerstandsfähig gegenüber Umweltbelastungen. Der Gesang einer Ente erweckt Tote zum Leben und inspiriert die Datenbankforschung. Deshalb sind sie das perfekte Maskottchen für ein vielseitiges und belastbares Datenmanagementsystem.
Ist DuckDB Open Source?
DuckDB ist vollständig Open Source unter der MIT-Lizenz; die Entwicklung findet auf GitHub im Repository duckdb/duckdb statt.
Alle Bestandteile von DuckDB sind in der kostenlosen Version unter dieser Lizenz verfügbar: Es gibt keine „Enterprise-Version“ von DuckDB.
Der Großteil des geistigen Eigentums von DuckDB wurde bewusst an eine gemeinnützige Einrichtung übertragen, um die Lizenzierung des Projekts von der kommerziellen Firma DuckLabs zu trennen. Die Satzung der DuckDB Foundation stellt außerdem sicher, dass DuckDB dauerhaft Open Source unter der MIT-Lizenz bleibt. Das CWI (Centrum Wiskunde & Informatica) hat einen Sitz im Vorstand der DuckDB Foundation und Spenden an die DuckDB Foundation fließen direkt in die DuckDB-Entwicklung.
Weitere Informationen zur Finanzierung von DuckDB finden Sie im FOSDEM-2026-Vortrag von Gábor Szárnyas. Zu den Organisationen rund um DuckDB siehe das nächste Frage-Antwort-Paar.
Wie hängen DuckDB, die DuckDB Foundation, DuckLabs und MotherDuck zusammen?
DuckDB ist der Name des unter der MIT-Lizenz stehenden Open-Source-Projekts.
Die DuckDB Foundation ist eine gemeinnützige Organisation, die das geistige Eigentum des DuckDB-Projekts hält. Die Satzung der DuckDB Foundation stellt sicher, dass DuckDB dauerhaft Open Source unter der MIT-Lizenz bleibt.
DuckLabs ist ein Unternehmen mit Sitz in Amsterdam, das kommerziellen Support für DuckDB anbietet. DuckLabs beschäftigt die Kernbeitragenden des DuckDB-Projekts.
MotherDuck ist ein mit Venture Capital finanziertes Unternehmen, das eine hybride Cloud-/Lokal-Plattform auf Basis von DuckDB aufbaut. MotherDuck beauftragt DuckLabs mit Entwicklungsleistungen, und DuckLabs hält Anteile an MotherDuck. Details stehen in der Partnerschaftsankündigung. Mehr zu MotherDuck finden Sie im CIDR-2024-Paper zu MotherDuck und in der MotherDuck-Dokumentation.
Wo finde ich das DuckDB-Logo und die Designrichtlinien?
Die Logo-Dateien liegen im Dokumentations-Repository unter images/designmanual/.
Wo finde ich die Richtlinien zur Nutzung der DuckDB-Marke?
Bitte lesen Sie die Markenrichtlinien für DuckDB™.
Ich habe ein Projekt mit „duck“ im Namen gefunden. Ist es offiziell mit DuckDB verbunden?
Die folgenden Projekte und Veranstaltungen sind offiziell mit DuckDB verbunden:
- das DuckDB-Projekt
- alle primären Client-Bibliotheken
- alle DuckDB-Kern-Erweiterungen
- die DuckDB UI
- MotherDuck, ein Cloud Data Warehouse auf Basis von DuckDB, entwickelt von der MotherDuck Corporation
dbt-duckdb, ein dbt-Connector für DuckDBpg_duckdb, eine PostgreSQL-Erweiterung für DuckDB- DuckLake, ein offenes Lakehouse-Format
- DuckCon, unsere technische Konferenzreihe
Andere Projekte und Veranstaltungen sind wahrscheinlich nicht mit DuckDB verbunden. Bitte prüfen Sie deren Websites, Beschreibungen und Lizenzen für weitere Details.
Wie lautet der offizielle Name des Projekts?
In der offiziellen Kommunikation bezeichnen wir DuckDB ausschließlich als „DuckDB“ und vermeiden andere Namen und Schreibweisen wie „DDB“, „the Duck“ und „DuckDb“. Die Alternativen sind natürlich ebenfalls weit verbreitet und Sie dürfen sie gern verwenden, bevorzugt ist jedoch „DuckDB“.
Arbeiten mit DuckDB
Ist DuckDB eine In-Memory-Datenbank?
Es ist ein verbreitetes Missverständnis, dass DuckDB eine In-Memory-Datenbank sei. DuckDB kann im Speicher arbeiten, ist aber keine In-Memory-Datenbank. DuckDB nutzt verfügbaren Speicher zum Caching, unterstützt aber auch vollständig persistente Speicherung auf der Festplatte und das Auslagern von Operationen, die größer als der Speicher sind auf die Platte.
Kann DuckDB Daten auf die Festplatte speichern?
DuckDB unterstützt persistente Speicherung und legt die Datenbank als einzelne Datei ab, die alle Tabellen, Views, Indizes, Makros usw. der Datenbank enthält.
Das Speicherformat von DuckDB verwendet eine komprimierte spaltenorientierte Darstellung, die kompakt ist und dennoch effiziente Bulk-Updates ermöglicht.
DuckDB kann auch im In-Memory-Modus laufen, in dem keine Daten auf die Festplatte persistiert werden.
DuckDB kann Daten außerdem im DuckLake-Format über die ducklake-Erweiterung speichern.
Auf welchem Speichertyp sollte ich DuckDB betreiben (z. B. lokale Festplatten, Network-Attached Storage)?
Der verwendete Speichertyp hat einen erheblichen Einfluss auf die Leistung. Im Allgemeinen führen SSDs (SATA- oder NVMe-SSDs) zu besserer Leistung als HDDs.
Der Speicherort hängt stark vom Workload ab:
- Für Read-only-Workloads kann die DuckDB-Datenbank auf lokalen Festplatten und Remote-Endpunkten wie HTTPS sowie Cloud Object Storage wie AWS S3 und vergleichbaren Anbietern liegen.
- Für Read-Write-Workloads liefert die Speicherung auf instance-attached Storage die beste Leistung. Network-attached Cloud Storage wie AWS EBS funktioniert ebenfalls; die Leistung lässt sich über die garantierten IOPS-Einstellungen feinabstimmen. Nach unserer Erfahrung raten wir dringend davon ab, DuckDB – oder jedes andere Datenbankmanagementsystem – für Read-Write-Workloads auf Network-Attached Storage (NAS) zu betreiben. Solche Setups sind oft langsam und führen zu sporadischen Fehlern, die schwer zu diagnostizieren sind.
Basiert DuckDB auf Arrow?
DuckDB verwendet intern nicht das Apache-Arrow-Format.
DuckDB unterstützt jedoch das Lesen und Schreiben von Arrow über die arrow-Community-Erweiterung.
SQL-Abfragen können außerdem direkt auf Arrow mit pyarrow ausgeführt werden.
Sind DuckDB-Datenbankdateien zwischen verschiedenen DuckDB-Versionen und Clients portabel?
Seit Version 0.10.0 (veröffentlicht im Februar 2024) ist DuckDB beim Lesen von Datenbankdateien rückwärtskompatibel, d. h. neuere DuckDB-Versionen können stets Datenbankdateien lesen, die mit einer älteren DuckDB-Version erzeugt wurden. DuckDB bietet außerdem nach bestem Wissen partielle Vorwärtskompatibilität. Weitere Details finden Sie auf der Storage-Seite. Die Kompatibilität gilt auch zwischen verschiedenen DuckDB-Clients (z. B. Python und R): Eine mit einem Client erzeugte Datenbankdatei kann mit anderen Clients gelesen werden.
Wie behandelt DuckDB Nebenläufigkeit? Können mehrere Prozesse in DuckDB schreiben?
Um denselben Datensatz mit mehreren DuckDB-Clients zu bearbeiten („Multiplayer-Erfahrung“), gibt es jetzt zwei Möglichkeiten:
- Das DuckLake-Format über die
ducklake-Erweiterung mit PostgreSQL als Katalogdatenbank. Das ist eine produktionsreife Lösung. - Das Quack-Remote-Protokoll, das DuckDB zu einer Client-Server-Datenbank macht. Quack befindet sich mit DuckDB v1.5.2 im Beta-Stadium und soll mit DuckDB v2.0 im Herbst 2026 ausgereift sein.
Gibt es ein offizielles DuckDB-Docker-Image?
Bitte beachten Sie, dass Sie in den meisten Fällen keinen Container brauchen, um DuckDB auszuführen: Sie können es einfach in-process in Ihrer Client-Anwendung oder als eigenständiges Kommandozeilen-Binary ausliefern.
Wie arbeite ich mit mehreren DuckDB-Clients auf demselben Rechner?
Sie können mehrere DuckDB-Clients auf demselben Rechner installieren. Diese Clients werden einzeln installiert und können unterschiedliche DuckDB-Versionen haben. Zum Beispiel können Sie das DuckDB-1.3.2-Paket in R, DuckDB 1.4.0 als CLI-Client und das Preview-Release in Python nutzen.
Wenn Sie unsicher sind, welche DuckDB-Version ein Prozess verwendet, führen Sie die Abfrage PRAGMA version aus; sie gibt die DuckDB-Version aus.
Wo erfahre ich mehr über DuckDB?
DuckDB hat die offizielle Dokumentation, den Blog und die Library. Es gibt außerdem einige Drittanbieter-Ressourcen, die Ihnen helfen, mehr über DuckDB zu lernen:
- Um Projekte zu entdecken, die DuckDB nutzen, empfehlen wir das
awesome-duckdb-Repository. - Es gibt eine Reihe von DuckDB-Büchern.
- Die tldr-Seiten haben einen DuckDB-Eintrag.
Leistung
Nutzt DuckDB SIMD?
DuckDB verwendet keine expliziten SIMD-Anweisungen (Single Instruction, Multiple Data), weil sie Portabilität und Kompilierung erheblich erschweren. Stattdessen nutzt DuckDB implizites SIMD: Wir schreiben unseren C++-Code so, dass der Compiler SIMD-Anweisungen automatisch für die jeweilige Hardware erzeugen kann. Als Beispiel, warum das sinnvoll ist: Die Portierung von DuckDB auf die Apple-Silicon-Architektur dauerte 10 Minuten.
Wie funktioniert Skalierbarkeit in DuckDB?
DuckDB ist ein Single-Node-Datenbanksystem und setzt daher auf vertikale Skalierung, d. h. die Nutzung zusätzlicher Ressourcen (CPU, Speicher und Festplatte), um größere Datensätze zu unterstützen. DuckDB wurde auf Maschinen mit über 100 CPU-Kernen und Terabyte an Speicher getestet.
Das native Datenbankformat von DuckDB skaliert ebenfalls für mehrere Terabyte Daten, das braucht aber etwas Planung – siehe die Seite „Arbeiten mit sehr großen Datenbanken“. Für große Datensätze und/oder die gemeinsame Arbeit am selben Datensatz kommt das Lakehouse-Format DuckLake in Frage.
Ich möchte DuckDB gegen ein anderes System benchmarken. Wie gehe ich vor?
Wir begrüßen Experimente, die die Leistung von DuckDB mit anderen Systemen vergleichen. Für einen fairen Vergleich haben wir ein paar Empfehlungen. Erstens: Nutzen Sie nach Möglichkeit das Preview-Release, das oft deutliche Leistungsverbesserungen gegenüber dem letzten stabilen Release bringt. Zweitens: Schauen Sie in unser DBTest-2018-Paper Fair Benchmarking Considered Difficult: Common Pitfalls In Database Performance Testing – es nennt Leitlinien, um typische Fallstricke in Benchmarks zu vermeiden. Drittens: Lesen Sie den DuckDB-Performance-Leitfaden, der Best Practices für optimale Leistung enthält. Schließlich geben Sie bitte die DuckDB-Version an (bei der stabilen Version die Versionsnummer, bei Nightly-Builds den Commit-Hash).
DuckDB nutzen
Ist DuckDB für Data-Science- oder Data-Engineering-Workloads gedacht?
DuckDB wurde sowohl für Data-Science- als auch für Data-Engineering-Workloads entworfen. Deshalb können Sie die SQL-Syntax von DuckDB je nach Bedarf sehr flexibel oder sehr präzise einsetzen.
Für Data-Science-Nutzer, die Abfragen oft interaktiv ausführen, bietet DuckDB mehrere Mechanismen zum schnellen Erkunden von Datensätzen.
CSV-Dateien lassen sich zum Beispiel per automatischer Schema-Erkennung mit CREATE TABLE tbl AS FROM 'input.csv' laden.
Außerdem gibt es zahlreiche SQL-Kurzformen, bekannt als „Friendly SQL“, für kompaktere Ausdrücke, z. B. die Klausel GROUP BY ALL.
Für Data-Engineering-Anwendungsfälle gibt DuckDB volle Kontrolle über den Ladevorgang: Sie können das genaue Schema mit einer CREATE TABLE tbl ⟨schema⟩{:.language-sql .highlight}-Anweisung definieren und die Tabelle mit einer COPY-Anweisung füllen, die den CSV-Dialekt (Trennzeichen, Quotes usw.) vorgibt.
Die meisten Friendly-SQL-Erweiterungen lassen sich einfach in SQL-Abfragen umschreiben, die vollständig mit PostgreSQL kompatibel sind.
Die Klausel GROUP BY ALL kann zum Beispiel durch eine GROUP BY-Klausel mit expliziter Spaltenliste ersetzt werden.
Was sind typische Anwendungsfälle für DuckDB?
Die Anwendungsfälle von DuckDB lassen sich grob in drei große Kategorien teilen. DuckDB eignet sich für die interaktive Datenanalyse durch einen Nutzer („Data Science“) und als Pipeline-Komponente für automatisierte Datenverarbeitung („Data Engineering“). DuckDB lässt sich außerdem in neuartigen Architekturen einsetzen, in denen man traditionell kein analytisches Datenbankmanagementsystem betreiben konnte, DuckDB dank seiner Portabilität aber verfügbar ist. Dazu gehört der Betrieb von DuckDB in Browsern (über den WebAssembly-Client) und auf Smartphones. Zusätzlich erschließen DuckDB-Erweiterungen Anwendungsfälle wie Geodatenanalyse und die tiefe Integration mit anderen Datenbank systemen. Und schließlich braucht DuckDB in manchen Fällen gar keine Daten, um eine Datenbank zu sein.
Ich möchte, dass Funktion X in DuckDB umgesetzt wird. Wie gehe ich vor?
Funktionen in DuckDB können auf verschiedene Weise umgesetzt werden: im Hauptprojekt DuckDB, als Kern-Erweiterung oder als Community Extension. Wenn Sie eine Funktion für DuckDB vorschlagen möchten, beachten Sie bitte diese Leitlinien:
- Wenn Sie eine Idee haben, eröffnen Sie bitte ein Issue im Bereich „Ideas“ in den GitHub Discussions von DuckDB. Das DuckDB-Team beobachtet diese Ideen und setzt mit der Zeit die häufig gewünschten Funktionen um. Kürzlich haben wir zum Beispiel die Avro Community Extension veröffentlicht, um Avro-Dateien zu lesen – das war die am häufigsten gewünschte Funktion im Issue-Tracker.
- Wenn Sie eine Funktion im Hauptprojekt DuckDB umsetzen möchten, besprechen Sie sie bitte mit dem DuckDB-Team in den GitHub Discussions oder auf unserem Discord-Server. Das Team kann prüfen, ob die Idee und die vorgeschlagene Umsetzung zur langfristigen Ausrichtung des Projekts passen.
- Wenn Sie eine Funktion als Erweiterung umsetzen möchten, erwägen Sie eine Einreichung im Community-Extensions-Repository.
Bitte beachten Sie, dass DuckLabs, das Unternehmen, das die wichtigsten DuckDB-Beitragenden beschäftigt, Beratungsleistungen für DuckDB anbietet; dazu kann die Umsetzung von Funktionen in DuckDB oder als DuckDB-Erweiterungen gehören.
Releases und Entwicklung
Welche DuckDB-Clients und -Versionen werden offiziell unterstützt?
DuckDB selbst ist eine vergleichsweise kleine, schlanke Codebasis, hat aber eine große Oberfläche mit Dutzenden Clients und Erweiterungen. Derzeit gilt der offizielle Community-Support für die folgenden Komponenten:
Dieser Support umfasst die folgenden Minor-Versionen:
- die aktuelle LTS-Version (Long-Term Support), derzeit 1.4
- die aktuelle Version, derzeit 1.5
Weitere Details finden Sie in der DuckDB Community Support Policy.
Wie häufig erscheinen neue DuckDB-Versionen?
Neue Feature-Releases (z. B. v1.2.0) erscheinen alle 3–5 Monate. Bugfix-Releases (z. B. v1.1.3) erscheinen alle 2–4 Wochen nach einem Feature-Release. Die jüngsten Releases finden Sie im Release-Kalender.
Wann erscheint die nächste Version und welche Funktionen kann ich erwarten?
Den geplanten Erscheinungstermin der nächsten stabilen DuckDB-Version finden Sie im Release-Kalender, die für das kommende Jahr geplanten Funktionen in der Entwicklungs-Roadmap.
Wie kann ich zur DuckDB-Dokumentation beitragen?
Die DuckDB-Website wird von GitHub Pages gehostet und aus dem Repository duckdb/duckdb-web ausgeliefert.
Wird die Dokumentation auf einem Desktop-Rechner betrachtet, hat jede Seite oben eine Schaltfläche „Page Source“, die Sie zur Markdown-Quelldatei führt.
Pull Requests, die Fehler beheben oder den Dokumentationsabschnitt zu DuckDB-Funktionen erweitern, sind sehr willkommen.
Bevor Sie einen Pull Request eröffnen, lesen Sie bitte unseren Contributor Guide.
Was sind offizielle Quellen zu DuckDB?
Im Folgenden listen wir offizielle, maßgebliche Quellen zu den Projekten DuckDB und DuckLake auf. Bei anderen Quellen sollten Sie vorsichtig sein. Besonders vorsichtig sollten Sie sein, wenn Sie Binaries und Installationsskripte aus anderen Quellen herunterladen.
Websites:
duckdb.org,duckdb.io,duckdb.ai: DuckDBducklabs.com: DuckLabsducklake.selectundducklake.dev: DuckLake
Soziale Medien: