2025-03-12

Die lokale DuckDB-UI

Jeff Raymakers, Gábor Szárnyas

Das DuckDB-Projekt entstand, um moderne Datenbanktechnologie einfach nutzbar zu machen. DuckDB lässt sich aus vielen verbreiteten Sprachen nutzen und läuft auf einer großen Zahl von Plattformen. Die mitgelieferte Kommandozeilenschnittstelle (CLI) bietet eine bequeme Möglichkeit, SQL-Queries interaktiv im Terminal auszuführen, und mehrere Drittanbieter-Tools bieten ausgefeiltere UIs.

Die DuckDB-CLI hat fortgeschrittene Features wie interaktives mehrzeiliges Editieren, Autovervollständigung und Fortschrittsanzeigen. Für lange SQL-Queries ist sie aber umständlich, und die Werkzeuge zur Datenexploration sind begrenzt. Viele der verfügbaren Drittanbieter-UIs sind großartig, aber Auswahl, Installation und Konfiguration sind nicht geradlinig. DuckDB über eine UI zu nutzen, sollte so einfach sein wie über die CLI. Und das ist es jetzt!

Die DuckDB-UI ist das Ergebnis einer Zusammenarbeit zwischen DuckLabs und MotherDuck und wird als Teil der ui-Erweiterung ausgeliefert.

Die DuckDB-UI

Ab DuckDB v1.2.1 gibt es eine vollständige lokale Web-UI out of the box! Sie starten sie vom Terminal, indem Sie den DuckDB-CLI-Client mit dem Argument -ui starten:

Terminal window
duckdb -ui

Sie können auch den folgenden SQL-Befehl aus einem DuckDB-Client ausführen (z. B. CLI, Python, Java usw.):

CALL start_ui();

Beide Wege installieren die ui-Erweiterung (falls noch nicht installiert) und öffnen dann die DuckDB-UI im Browser:

DuckDB-UI-Grundlagen, Screenshot

Die DuckDB-UI nutzt interaktive Notebooks, um SQL-Skripte zu definieren und Query-Ergebnisse anzuzeigen. Ihre Fähigkeiten gehen aber weit darüber hinaus. Schauen wir uns die wichtigsten Features an.

Die DuckDB-UI führt alle Queries lokal aus: Ihre Queries und Daten verlassen Ihren Computer nie. Wenn Sie MotherDuck über die UI nutzen möchten, müssen Sie das explizit aktivieren.

Features

Datenbanken

Ihre angebundenen Datenbanken stehen links. Die Liste umfasst In-Memory-Datenbanken sowie alle geladenen Dateien und URLs. Tabellen und Sichten erkunden Sie, indem Sie Datenbanken und Schemas aufklappen.

Screenshot angebundener Datenbanken

Tabellenzusammenfassung

Klicken Sie auf eine Tabelle oder Sicht, um unten eine Zusammenfassung zu sehen. Die UI zeigt die Zeilenzahl, Name und Typ jeder Spalte und ein Profil der Daten in jeder Spalte.

Screenshot der Tabellenzusammenfassung

Wählen Sie eine Spalte für eine detailliertere Zusammenfassung ihrer Daten. Mit dem Button „Preview data“ oben rechts können Sie die ersten 100 Zeilen prüfen. Hier finden Sie auch die SQL-Definition der Tabelle oder Sicht.

Notebooks

Sie können Ihre Arbeit in benannten Notebooks organisieren. Jede Zelle des Notebooks kann eine oder mehrere SQL-Anweisungen ausführen. Die UI unterstützt Syntaxhervorhebung und Autovervollständigung beim Schreiben von Queries.

Screenshot der Autovervollständigung

Sie können die ganze Zelle oder nur eine Auswahl ausführen und die Ergebnisse dann mit den angebotenen Steuerelementen sortieren, filtern oder weiter transformieren.

Column Explorer

Das rechte Panel enthält den Column Explorer, der eine Zusammenfassung Ihrer Ergebnisse zeigt. Sie können in jede Spalte eintauchen, um Einsichten zu gewinnen.

Screenshot des Column Explorers

MotherDuck-Integration

Wenn Sie sich mit MotherDuck verbinden möchten, können Sie sich bei MotherDuck anmelden, um Dateien und Tabellen in einem Cloud-Data-Warehouse zu persistieren, das für DuckDB im großen Maßstab und das Teilen von Daten mit dem Team gebaut ist.

Screenshot der MotherDuck-Anmeldung

…und mehr!

Die DuckDB-UI wird aktiv weiterentwickelt. Erwarten Sie Ergänzungen und Verbesserungen!

Footprint

Wie die DuckDB-CLI legt die DuckDB-UI einige Dateien im Verzeichnis .duckdb in Ihrem Home-Verzeichnis an. Die UI legt ihre Dateien in einem Unterverzeichnis ab, extension_data/ui:

Internals

Die UI-Unterstützung steckt in einer DuckDB-Erweiterung. Die Erweiterung bettet einen localhost-HTTP-Server ein, der die UI-Browseranwendung ausliefert und eine API für die Kommunikation mit DuckDB bereitstellt. So nutzt die UI die native DuckDB-Instanz, von der sie gestartet wurde, und hat vollen Zugriff auf lokalen Speicher, Rechenleistung und Dateisystem.

Ergebnisse kommen in einer effizienten Binärform zurück, die DuckDBs In-Memory-Darstellung (DataChunk) eng entspricht. Server-Sent Events ermöglichen schnelle Benachrichtigungen über Updates wie das Anbinden von Datenbanken. Diese und andere Techniken sorgen für ein latenzarmes Erlebnis, das Sie im Flow hält.

Mehr Details in der Dokumentation der UI-Erweiterung.

Zusammenfassung

In diesem Blogbeitrag haben wir die neue DuckDB-UI vorgestellt, eine leistungsfähige Weboberfläche für DuckDB.

Die DuckDB-UI teilt viele Designprinzipien mit der DuckDB-Datenbank. Sie ist einfach, schnell, funktionsreich und portabel und läuft lokal auf Ihrem Computer. Die DuckDB-UI-Erweiterung ist außerdem Open Source: Besuchen Sie das Repository duckdb/duckdb-ui, wenn Sie tiefer in den Code der Erweiterung eintauchen möchten.

Das Repository enthält nicht den Quellcode des Frontends; der ist derzeit nicht als Open Source verfügbar. Eine Open-Source-Freigabe wird erwogen.

Hilfe oder Feedback: Bitte erstellen Sie ein Issue oder kommen Sie in den Kanal #ui im DuckDB Discord oder im MotherDuck Community Slack.

Viel Spaß beim Quacken!

Update (2025-03-20)

Wir freuen uns sehr über die überwältigend positive Resonanz auf die Ankündigung der lokalen DuckDB-UI. In diesem kurzen Update möchten wir einige Fragen der Community aufgreifen: