Zum Inhalt springen

UI-Erweiterung

Die ui-Erweiterung fügt eine Benutzeroberfläche für Ihre lokale DuckDB-Instanz hinzu.

Die UI wird von MotherDuck entwickelt und gepflegt. Einen Überblick über die Funktionen finden Sie in der MotherDuck-Dokumentation.

Verwendung

Um die UI von der Kommandozeile zu starten:

Terminal window
duckdb -ui

Um die UI aus SQL zu starten:

CALL start_ui();

Mit einem der beiden Befehle wird die UI in Ihrem Standardbrowser geöffnet.

Die UI verbindet sich mit der DuckDB-Instanz, von der sie gestartet wurde, sodass alle bereits geladenen Daten verfügbar sind. Da diese Instanz ein nativer Prozess ist (kein Wasm), kann sie alle Ressourcen Ihrer lokalen Umgebung nutzen: alle Kerne, Speicher und Dateien. Das Schließen dieser Instanz führt dazu, dass die UI nicht mehr funktioniert.

Die UI wird von einem in DuckDB eingebetteten HTTP-Server bereitgestellt. Um diesen Server zu starten, ohne den Browser zu öffnen, führen Sie aus:

CALL start_ui_server();

Sie können die UI dann in Ihrem Browser laden, indem Sie zu http://localhost:4213 navigieren.

Um den HTTP-Server zu beenden, führen Sie aus:

CALL stop_ui_server();

Lokale Abfrageausführung

Standardmäßig führt die DuckDB-UI Ihre Abfragen vollständig lokal aus: Ihre Abfragen und Daten verlassen Ihren Computer nicht. Wenn Sie MotherDuck über die UI nutzen möchten, müssen Sie sich ausdrücklich dafür entscheiden und bei MotherDuck anmelden.

Konfiguration

Lokaler Port

Der lokale Port des HTTP-Servers kann mit einem SQL-Befehl wie dem folgenden konfiguriert werden:

SET ui_local_port = 4213;

Die Umgebungsvariable ui_local_port kann ebenfalls verwendet werden.

Der Standardport ist 4213. (Warum? 4 = D, 21 = U, 3 = C)

Remote-URL

Der lokale HTTP-Server holt die Dateien für die UI von einem entfernten HTTP-Server, damit sie aktuell gehalten werden können.

Die Standard-URL für den Remote-Server ist https://ui.duckdb.org.

Eine alternative Remote-URL kann mit einem SQL-Befehl wie dem folgenden konfiguriert werden:

SET ui_remote_url = 'https://ui.duckdb.org';

Die Umgebungsvariable ui_remote_port kann ebenfalls verwendet werden.

Diese Einstellung ist hauptsächlich für Testzwecke verfügbar.

Vergewissern Sie sich, dass Sie jeder URL vertrauen, die Sie konfigurieren, da die Anwendung auf die Daten zugreifen kann, die Sie in DuckDB laden.

Wegen dieses Risikos wird die Einstellung nur berücksichtigt, wenn allow_unsigned_extensions aktiviert ist.

Polling-Intervall

Die UI-Erweiterung fragt einige Informationen in einem Hintergrundthread ab. Sie beobachtet Änderungen an der Liste der angehängten Datenbanken und erkennt, wenn Sie sich mit MotherDuck verbinden.

Diese Prüfungen benötigen sehr wenig Zeit, daher ist das Standard-Polling-Intervall kurz (284 Millisekunden). Sie können es mit einem SQL-Befehl wie dem folgenden konfigurieren:

SET ui_polling_interval = 284;

Die Umgebungsvariable ui_polling_interval kann ebenfalls verwendet werden.

Wenn Sie das Polling-Intervall auf 0 setzen, wird das Polling vollständig deaktiviert. Das wird nicht empfohlen, da die Datenbankliste in der UI veraltet sein kann und einige Arten der Verbindung mit MotherDuck nicht richtig funktionieren.

Tipps

Eine CSV-Datei mit der DuckDB-UI öffnen

Mit dem DuckDB-CLI-Client können Sie die UI mit einer als View verfügbaren CSV-Datei über das -cmd-Argument starten:

Terminal window
duckdb -cmd "CREATE VIEW ⟨view_name⟩ AS FROM '⟨filename⟩.csv';" -ui

Die UI im Nur-Lesen-Modus ausführen

Die DuckDB-UI verwendet intern DuckDB-Tabellen als Speicher (z. B. zum Speichern von Notebooks). Daher wird das direkte Ausführen der UI auf einer schreibgeschützten Datenbank nicht unterstützt:

Terminal window
duckdb -ui -readonly read_only_test.db

In der UI führt das zu:

Terminal window
Catalog Error: SET schema: No catalog + schema named "memory.main" found.

Als Workaround führen Sie die UI auf einer anderen Datenbankdatei aus:

Terminal window
duckdb -ui ui_catalog.db

Öffnen Sie dann ein Notebook und hängen Sie die Datenbank an:

ATTACH 'test.db' (READ_ONLY) AS my_db;
USE my_db;

Einschränkungen

  • Die UI unterstützt derzeit windows_arm64 nicht.