2025-12-16

Iceberg im Browser

Carlo Piovesan, Tom Ebergen, Gábor Szárnyas

In diesem Beitrag beschreiben wir die gängigen Muster für die Interaktion mit Iceberg Catalogs und stellen die Frage: Geht das auch aus einem Browser? Nach den nötigen Änderungen im DuckDB-Ökosystem zeigen wir unseren Ansatz zur Interaktion mit einem Iceberg REST Catalog. Nur Browser, kein Extra-Setup.

Interaktionsmodelle für Iceberg Catalogs

Iceberg analytics today Iceberg analytics today

Iceberg ist ein offenes Tabellenformat, mit dem sich eine veränderbare Datenbanktabelle als Menge statischer Dateien auf Object Storage (etwa AWS S3) abbilden lässt. Iceberg Catalogs erlauben es, Iceberg-Tabellen zu verfolgen und zu organisieren. Iceberg REST Catalogs zum Beispiel bieten diese Funktionen über eine REST-API.

Es gibt zwei gängige Wege, mit Iceberg Catalogs zu interagieren:

Iceberg-Engines folgen diesen Interaktionsmodellen: Sie laufen entweder nativ in verwalteter Compute-Infrastruktur oder lokal beim Nutzer. Schauen wir, wie das mit DuckDB aussieht!

Iceberg mit DuckDB

Iceberg with DuckDB Iceberg with DuckDB

DuckDB unterstützt beide Iceberg-Interaktionsmodelle. Im Client-Server-Modell läuft DuckDB auf dem Server, um die Iceberg-Datensätze zu lesen. Aus Nutzersicht ist die Wahl der Engine transparent, und DuckDB ist nur eine von vielen Engines, die der Server im Hintergrund nutzen könnte. Das Client-ist-der-Server-Modell ist interessanter: Hier installiert man lokal einen DuckDB-Client und nutzt ihn über seine SQL-Schnittstelle, um Iceberg Catalogs abzufragen. Zum Beispiel:

CREATE SECRET test_secret (
TYPE S3,
KEY_ID '⟨AKIAIOSFODNN7EXAMPLE⟩',
SECRET '⟨wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY⟩'
);
ATTACH '⟨warehouse⟩' AS db (
TYPE ICEBERG,
ENDPOINT_URL '⟨https://your-iceberg-endpoint⟩',
);
SELECT sum(value)
FROM db.table
WHERE other_column = '⟨some_value⟩';

Das Client-ist-der-Server-Modell ermöglicht empowered Clients, die direkt auf den Daten arbeiten.

Den vollen Funktionsumfang der DuckDB-Iceberg-Erweiterung einschließlich Insert- und Update-Fähigkeiten finden Sie in unserem früheren Blogbeitrag.

Iceberg mit DuckDB im Browser

Eine lokale DuckDB-Installation aufzusetzen ist schon einfach, einen Browser-Tab zu öffnen noch schneller. Deshalb haben wir uns gefragt: Können wir das Client-ist-der-Server-Modell direkt in einem Browser-Tab unterstützen? Das wäre eine Zero-Setup-, keine-Infrastruktur-, richtig serverless Option für die Interaktion mit Iceberg Catalogs.

Iceberg with DuckDB-Wasm Iceberg with DuckDB-Wasm

Glücklicherweise hat DuckDB einen Client, der in jedem Browser läuft! DuckDB-Wasm ist ein WebAssembly-Port von DuckDB, der das Laden von Extensions unterstützt.

Die Interaktion mit einem Iceberg REST Catalog braucht mehrere Fähigkeiten: mit einer REST-API über HTTP(S) sprechen, avro- und parquet-Dateien auf Object Storage lesen und schreiben, und Authentifizierung aushandeln, um im Namen des Nutzers auf diese Ressourcen zuzugreifen. All das muss im Browser geschehen, ohne native Komponenten aufzurufen.

Um das zu unterstützen, haben wir folgende übergeordnete Änderungen umgesetzt:

Das Ergebnis: Sie können Iceberg jetzt mit DuckDB direkt im Browser abfragen! Derselbe Iceberg Catalog ist jetzt über Client-Server, Client-ist-der-Server oder richtig serverless in der Isolation eines Browser-Tabs erreichbar!

Willkommen bei Serverless Iceberg Analytics

Schauen Sie sich unsere Demo von Serverless Iceberg Analytics mit dem DuckDB Table Visualizer{:.button.yellow} an

Die aktuellen Credentials in der Demo kommen von einem Wegwerf-Account mit minimalen Rechten. Wenn Sie eigene Credentials eingeben und einen Link teilen, teilen Sie Ihre Credentials.

Zugriff auf Ihre eigenen Daten

Wenn Sie Ihre eigene S3-Tables-Bucket-ARN und Credentials mit der Policy AmazonS3TablesReadOnlyAccess einsetzen, können Sie auch auf Ihren Catalog, Metadaten und Daten zugreifen. Berechnungen laufen vollständig lokal, und Credentials sowie Warehouse-ID werden nur an den Catalog-Endpunkt geschickt, den Sie in Ihrem ATTACH-Befehl angeben. Eingaben werden nach SQL übersetzt und im Hash-Segment der URL abgelegt.

Das bedeutet:

Stand heute funktioniert das mit Amazon S3 Tables. Umgesetzt in Zusammenarbeit mit dem Amazon-S3-Tables-Team. Mehr zu S3 Tables, Einstieg und Funktionsumfang finden Sie auf der Produktseite oder in der Dokumentation. Eine Demo von DuckDB, das S3 Tables aus dem Browser abfragt, wurde auf der AWS re:Invent 2025 gezeigt – siehe den Vortrag.

Fazit

Die DuckDB-Iceberg-Erweiterung wird jetzt in DuckDB-Wasm unterstützt und kann Iceberg REST Catalogs lesen und bearbeiten. Nutzerinnen und Nutzer können jetzt aus dem Browser auf Iceberg-Daten zugreifen, ohne Compute-Knoten zu installieren oder zu verwalten!

Feedback oder Issues bitte im Repository DuckDB-Wasm oder DuckDB-Iceberg. Wenn Sie Teile davon in Ihrer Organisation nutzen möchten, melden Sie sich gern.