Interoperability in OLake Go #1003
siddharth-chevella
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Proposal: Improving Apache Iceberg Interoperability in OLake Go
Hey Community👋
We're exploring a new approach in OLake Go to address one of the biggest challenges in the Iceberg ecosystem today: interoperability across catalogs and query engines.
Different catalogs and query engines support different Iceberg features and delete mechanisms. As a result, users often have to design their ingestion architecture around the limitations of their downstream systems rather than their actual requirements.
Our goal is simple:
Current Thinking
We're considering an architecture where all upsert workloads are first written to an internal changelog table and then materialized into the main Iceberg table.
The changelog table would be internally managed by OLake Go and remain invisible to users.
The main table could then be written using one of the following delete mechanisms:
High-level flow:
Append-only workloads would continue to write directly to the main table.
Why We're Considering This
This approach gives us a common ingestion path while allowing OLake Go to generate the appropriate delete format based on user requirements and downstream compatibility constraints.
Potential examples:
Things We're Evaluating
Performance
Generating Position Deletes or Deletion Vectors introduces additional processing overhead compared to direct writes.
Questions we're exploring:
Resource Consumption
Converting changelog records into Position Deletes or Deletion Vectors can be resource intensive.
Current thinking is to expose a concurrency setting that controls how many tables can perform this conversion simultaneously.
We're interested in hearing how others have approached resource management for similar workloads.
Scalability
The initial implementation would run within a standalone OLake Go deployment.
This means the approach is primarily vertically scalable today.
Longer term, we may explore distributed execution models (Kubernetes workers, Spark-based execution, etc.) if the community believes that is necessary for large-scale deployments.
Questions for the Community
We would appreciate feedback on the following:
We're still in the design phase and would greatly appreciate feedback, concerns, alternative approaches, and lessons learned from anyone operating Iceberg at scale.
All reactions