Zum Inhalt springen

Lakehouse-Formate

Lakehouse-Formate, oft auch offene Tabellenformate genannt, sind Spezifikationen zum Speichern von Daten in Objektspeichern bei gleichzeitigem Einhalten bestimmter Garantien wie ACID-Transaktionen oder Snapshot-Historie. Im Lauf der Zeit sind mehrere Lakehouse-Formate entstanden, jedes mit einem eigenen Ansatz zur Verwaltung seiner Metadaten (auch Katalog genannt). Auf dieser Seite behandeln wir die Unterstützung, die DuckDB für einige dieser Formate bietet, sowie Workarounds, mit denen Sie DuckDB nutzen und trotzdem nahe an volle Interoperabilität mit diesen Formaten kommen.

DuckDB-Lakehouse-Unterstützungsmatrix

DuckDB unterstützt Iceberg, Delta, Lance und DuckLake nativ. Die folgende Matrix zeigt, was DuckDB über Kern-Erweiterungen von Haus aus nativ unterstützt.

DuckLake Iceberg Delta Lance
Erweiterung ducklake iceberg delta lance
Lesen
Schreiben
Löschen
Aktualisieren
Upsert
Tabelle anlegen
Tabelle mit Partitionen anlegen
An einen Katalog anhängen ✅ *
Tabelle umbenennen
Spalten umbenennen
Spalten hinzufügen/entfernen
Spaltentyp ändern
Kompaktierung und Wartung
Verschlüsselung
Tabelleneigenschaften verwalten
Time Travel
Tabellenänderungen abfragen

* Über die Erweiterung unity_catalog.

DuckDB zielt darauf ab, native Erweiterungen mit möglichst wenigen Abhängigkeiten zu bauen. Die Erweiterung iceberg hat beispielsweise keine Abhängigkeiten von Iceberg-Bibliotheken Dritter; alle Daten- und Metadatenoperationen sind nativ in der DuckDB-Erweiterung implementiert. Für die Erweiterung delta nutzen wir das Projekt delta-kernel-rs, das als leichtgewichtige Plattform gedacht ist, damit Engines Delta-Integrationen möglichst nah an einer nativen Implementierung aufbauen können.

Warum sind native Implementierungen wichtig? Native Implementierungen ermöglichen DuckDB mehr Leistungsoptimierungen, etwa komplexe Filter-Pushdowns (mit Pruning auf Datei- und Zeilengruppenebene) und eine bessere Speicherverwaltung.