>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
Rust

Apache Iceberg auf Rust ohne schweres Java

Wenn Sie mit Big Data arbeiten, sind Sie wahrscheinlich bereits auf Apache Iceberg gestoßen. Im Wesentlichen ist es der Standard für den Aufbau einer Lakehouse-Architektur auf Basis von Parquet- oder ORC-Dateien. Lange Zeit war Java die Hauptdomäne von Iceberg. Nahezu alle offiziellen Bibliotheken und Integrationen mit Spark oder Trino wurden für die JVM geschrieben.

Allerdings verschiebt sich der Datenverarbeitungs-Stack nun in Richtung Rust. Projekte wie Apache DataFusion, Polars und andere benötigen Zugriff auf Iceberg-Tabellen, ohne eine schwere Java-Laufzeitumgebung starten oder sich mit JNI-Bindings auseinandersetzen zu müssen. So entstand ein offizielles Repository apache/iceberg-rust innerhalb der Apache Foundation.

Warum ein Port nach Rust

Eine native Implementierung liefert Performance und niedrigen Speicheroverhead. Wenn Sie einen Microservice für Stream-Verarbeitung, ein Utility oder einen benutzerdefinierten Foreign Data Wrapper für PostgreSQL schreiben, ist das Mitschleppen der JVM schmerzhaft. Die JVM benötigt Hunderte von Megabyte Speicher beim Start und friert periodisch aufgrund der Garbage Collection ein.

Die Rust-Bibliothek kann Iceberg-Metadaten und -Daten direkt aus leichtgewichtigen Binärdateien lesen. Das Projekt entwickelt sich innerhalb der Apache Foundation selbst, es handelt sich also nicht um einen privaten Fork, sondern um eine offizielle Infrastrukturkomponente.

Repository-Struktur

Die Entwickler haben nicht alles in einen massiven Monolithen gepackt. Das Projekt ist in eine Reihe unabhängiger Module aufgeteilt. Sie nehmen nur die Abhängigkeiten, die in Ihrem Service tatsächlich benötigt werden.

Der Kern der Bibliothek befindet sich in Modul iceberg. Es verarbeitet Metadaten-Parsing, Manifest-Manipulationen und Tabellenschema-Operationen gemäß den Iceberg v1- und v2-Spezifikationen.

Es wurden separate Crates für die Arbeit mit Metadaten-Katalogen erstellt:

  • iceberg-catalog-rest für REST-API-Operationen
  • iceberg-catalog-glue für AWS Glue Data Catalog-Integration
  • iceberg-catalog-hms für die Verbindung mit Hive Metastore
  • iceberg-catalog-sql für die Speicherung von Metadaten in PostgreSQL oder SQLite
  • iceberg-catalog-s3tables für die Arbeit mit Amazon S3 Tables

Modul iceberg-storage-opendal kümmert sich um physischen Speicher wie S3, GCS oder lokale Festplatte. Es nutzt die Apache OpenDAL-Bibliothek, die sofortigen Zugriff auf alle gängigen Object Stores ermöglicht.

Wenn Sie eine Query-Ausführungs-Engine benötigen, ist Modul iceberg-datafusion hilfreich. Dieses Modul bindet Iceberg an die Apache DataFusion SQL-Engine und ermöglicht es Ihnen, SQL-Abfragen gegen Tabellen direkt aus Rust heraus auszuführen.

Wo es bereits funktioniert

Die Entwicklung ist aktiv, aber ernsthafte Produkte nutzen die Bibliothek bereits in der Produktion:

  • Databend nutzt es in ihrem Cloud-Data-Warehouse.
  • RisingWave nutzt die Bibliothek für die Arbeit mit Iceberg aus ihrer Echtzeit-Datenbank.
  • Supabase nutzt Rust-Iceberg-Komponenten in Erweiterungen für Postgres und in Streaming-ETL-Diensten.
  • Moonlink nutzt die Bibliothek, um die Aufgabe der Replikation von CDC-Daten von Postgres ins Iceberg-Format in Sekundenbruchteilen zu lösen.
  • Apache DataFusion Comet nutzt sie zur Beschleunigung der Spark-Performance.

Support und Versionierung

Das Projektteam folgt einer MSRV-Richtlinie (Minimum Supported Rust Version). Code wird gegen stabile Rust-Releases gebaut und getestet. Die minimale unterstützte Compiler-Version wird mit einem Puffer von ungefähr drei Monaten relativ zu aktuellen Sprach-Releases festgelegt.

Die Entwicklung ist vollständig offen. Alle Diskussionen finden auf der Mailingliste [email protected] und im Kanal #rust der offiziellen Apache Iceberg Slack-Community statt.

Lohnt es sich, es zu testen

Wenn Sie Dienste rund um Data Warehouses aufbauen, Konnektoren in Rust schreiben oder eigene Datenverarbeitungswerkzeuge entwickeln, sieht iceberg-rust nach der logischsten Wahl aus.

Die Bibliothek wird noch verfeinert, was die Abdeckung der gesamten Iceberg-Spezifikation betrifft, aber grundlegendes Lesen, Schreiben und Support für wichtige Kataloge funktionieren stabil. Für DataFusion-basierte Projekte ist es bereits ein einsatzbereites Modul.

Ähnliche Projekte