>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Rust

Apache Iceberg op Rust Zonder Zware Java

Als je met big data werkt, heb je waarschijnlijk al kennisgemaakt met Apache Iceberg. Het is in essentie de standaard voor het bouwen van Lakehouse-architectuur bovenop Parquet- of ORC-bestanden. Java was lange tijd de belangrijkste thuisbasis voor Iceberg. Vrijwel alle officiële bibliotheken en integraties met Spark of Trino waren geschreven voor de JVM.

De dataverwerking-toolstack verschuift echter nu naar Rust. Projecten zoals Apache DataFusion, Polars en anderen hebben toegang tot Iceberg-tabellen nodig zonder een zware Java-runtime op te starten of met JNI-bindings te werken. Zo ontstond er een officiële repository apache/iceberg-rust binnen de Apache Foundation.

Waarom Port naar Rust

Een native implementatie levert prestaties en lage geheugenoverhead. Wanneer je een microservice voor stream processing, een utility of een aangepaste Foreign Data Wrapper voor PostgreSQL schrijft, is meeslepen van de JVM lastig. De JVM vereist honderden megabytes aan geheugen bij opstarten en bevriest periodiek vanwege garbage collection.

De Rust-bibliotheek kan Iceberg-metadata en -data rechtstreeks lezen uit lichtgewicht binaire bestanden. Het project ontwikkelt zich binnen de Apache Foundation zelf, dus dit is geen private fork maar een officiële infrastructuurcomponent.

Repository-structuur

De ontwikkelaars hebben niet alles gebundeld in een enorme monoliet. Het project is opgesplitst in een set onafhankelijke modules. Je neemt alleen de dependencies die daadwerkelijk nodig zijn in je service.

De library core leeft in module iceberg. Het verwerkt metadata-parsing, manifest-manipulaties en tabel-schema-operaties volgens de Iceberg v1- en v2-specificaties.

Er zijn aparte crates gemaakt voor het werken met metadata-catalogi:

  • iceberg-catalog-rest voor REST API-operaties
  • iceberg-catalog-glue voor AWS Glue Data Catalog-integratie
  • iceberg-catalog-hms voor verbinding met Hive Metastore
  • iceberg-catalog-sql voor het opslaan van metadata in PostgreSQL of SQLite
  • iceberg-catalog-s3tables voor het werken met Amazon S3 Tables

Module iceberg-storage-opendal verwerkt fysieke opslag zoals S3, GCS of lokale schijf. Het gebruikt de Apache OpenDAL-bibliotheek, wat direct toegang opent tot alle populaire object stores.

Als je een query-uitvoerengine nodig hebt, komt module iceberg-datafusion goed van pas. Deze module verbindt Iceberg met de Apache DataFusion SQL-engine, waardoor je SQL-queries direct vanuit Rust kunt uitvoeren tegen tabellen.

Waar Het Al Werkt

De ontwikkeling is actief, maar serieuze producten gebruiken de bibliotheek al in productie:

  • Databend gebruikt het in hun cloud data warehouse.
  • RisingWave gebruikt de bibliotheek voor het werken met Iceberg vanuit hun real-time database.
  • Supabase gebruikt Rust Iceberg-componenten in extensies voor Postgres en in streaming ETL-services.
  • Moonlink gebruikt de bibliotheek voor de taak van het repliceren van CDC-data van Postgres naar Iceberg-formaat in fracties van een seconde.
  • Apache DataFusion Comet gebruikt het om Spark-prestaties te versnellen.

Ondersteuning en Versionering

Het projectteam volgt een MSRV (minimum supported Rust version) beleid. Code wordt gebouwd en getest tegen stabiele Rust-releases. De minimaal ondersteunde compilerversie is gefixeerd met een buffer van ongeveer drie maanden ten opzichte van recente taalreleases.

Ontwikkeling is volledig open. Alle discussies vinden plaats op de [email protected] mailinglijst en in kanaal #rust van de officiële Apache Iceberg Slack-community.

Is Het De Moeite Waard Om Te Proberen

Als je services bouwt rond data warehouses, connectors in Rust schrijft of je eigen dataverwerkingstools ontwikkelt, ziet iceberg-rust eruit als de meest logische keuze.

De bibliotheek wordt nog verfijnd in termen van het dekken van de volledige Iceberg-specificatie, maar basis lezen, schrijven en ondersteuning voor belangrijke catalogi werken stabiel. Voor DataFusion-gebaseerde projecten is het al een kant-en-klaar bouwblok.

Gerelateerde projecten