>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Rust

Apache Iceberg em Rust Sem Java Pesado

Se você trabalha com big data, provavelmente já encontrou o Apache Iceberg. Essencialmente, é o padrão para construir arquitetura Lakehouse sobre arquivos Parquet ou ORC. Por um longo tempo, Java foi o principal lar do Iceberg. Quase todas as bibliotecas oficiais e integrações com Spark ou Trino foram escritas para a JVM.

No entanto, o conjunto de ferramentas de processamento de dados está agora mudando para Rust. Projetos como Apache DataFusion, Polars e outros precisam de acesso a tabelas Iceberg sem iniciar um runtime Java pesado ou lidar com bindings JNI. É assim que um repositório oficial apache/iceberg-rust passou a existir dentro da Apache Foundation.

Por Que Portar para Rust

Uma implementação nativa oferece performance e baixo overhead de memória. Quando você está escrevendo um microsserviço para processamento de streams, um utilitário, ou um Foreign Data Wrapper customizado para PostgreSQL, arrastar o JVM é doloroso. O JVM requer centenas de megabytes de memória no início e congela periodicamente devido ao garbage collection.

A biblioteca Rust pode ler metadados e dados Iceberg diretamente de arquivos binários leves. O projeto se desenvolve dentro da própria Apache Foundation, então não é um fork privado, mas sim um componente oficial de infraestrutura.

Estrutura do Repositório

Os desenvolvedores não empacotaram tudo em um monólito massivo. O projeto é dividido em um conjunto de módulos independentes. Você usa apenas as dependências que realmente precisa no seu serviço.

O núcleo da biblioteca está no módulo iceberg. Ele lida com parsing de metadados, manipulações de manifest e operações de schema de tabelas de acordo com as especificações Iceberg v1 e v2.

Crates separados foram criados para trabalhar com catálogos de metadados:

  • iceberg-catalog-rest para operações de API REST
  • iceberg-catalog-glue para integração com AWS Glue Data Catalog
  • iceberg-catalog-hms para conexão com Hive Metastore
  • iceberg-catalog-sql para armazenar metadados em PostgreSQL ou SQLite
  • iceberg-catalog-s3tables para trabalhar com Amazon S3 Tables

O módulo iceberg-storage-opendal lida com armazenamento físico como S3, GCS ou disco local. Ele usa a biblioteca Apache OpenDAL, que abre imediatamente acesso a todos os armazenamentos de objetos populares.

Se você precisa de um motor de execução de queries, o módulo iceberg-datafusion é útil. Este módulo faz o binding do Iceberg com o motor SQL Apache DataFusion, permitindo que você execute queries SQL contra tabelas diretamente do Rust.

Onde Já Está Funcionando

O desenvolvimento está ativo, mas produtos sérios já estão usando a biblioteca em produção:

  • Databend usa em seu data warehouse em nuvem.
  • RisingWave utiliza a biblioteca para trabalhar com Iceberg a partir de seu banco de dados em tempo real.
  • Supabase usa componentes Rust Iceberg em extensões para Postgres e em serviços de ETL de streaming.
  • Moonlink usa a biblioteca para resolver a tarefa de replicar dados CDC do Postgres para formato Iceberg em frações de segundo.
  • Apache DataFusion Comet usa para acelerar a performance do Spark.

Suporte e Controle de Versão

A equipe do projeto segue uma política de MSRV (minimum supported Rust version). O código é compilado e testado contra releases estáveis do Rust. A versão mínima suportada do compilador é fixada com uma margem de aproximadamente três meses em relação aos releases recentes da linguagem.

O desenvolvimento é totalmente aberto. Todas as discussões acontecem na lista de discussão [email protected] e no canal #rust da comunidade oficial do Apache Iceberg no Slack.

Vale a Pena Experimentar

Se você está construindo serviços em torno de data warehouses, escrevendo conectores em Rust, ou desenvolvendo suas próprias ferramentas de processamento de dados, iceberg-rust parece ser a escolha mais lógica.

A biblioteca ainda está sendo refinada em termos de cobrir toda a especificação Iceberg, mas leitura básica, escrita e suporte para catálogos principais funcionam de forma estável. Para projetos baseados em DataFusion, já é um bloco de construção pronto para uso.

Projetos relacionados