Xuanwo commented on issue #172:
URL: https://github.com/apache/iceberg-rust/issues/172#issuecomment-1911446953

   Hi @tustvold, thank you for initiating this discussion! I will do my best to 
offer a multifaceted response with different hat.
   
   ## Put iceberg-rust developers hat on
   
   As @liurenjie1024 mentioned, iceberg-rust features its own `FileIO` 
interface to abstract IO operations. `OpenDAL` and `object_store` are merely 
implementation details with no current plans for external exposure.
   
   It's fine to integrate with `object_store`, as that is precisely what we 
created `FileIO` for. However, it's important to note that we are in the 
initial stages of this project: currently focusing on the first release and 
implementing read/write capabilities.
   
   Here are some remarks regarding the object_store feature set:
   
   > A flexible [configuration 
system](https://docs.rs/object_store/latest/object_store/#configuration-system) 
developed in partnership with, and used by both the polars and delta-rs 
communities
   
   iceberg-rust is aligned with Iceberg and PyIceberg, sharing the same 
configuration logic; therefore, the object_store's configuration system is 
redundant for our purposes.
   
   > Support for [conditional 
writes](https://docs.rs/object_store/latest/object_store/#conditional-put), 
which would allow iceberg-rs to support multiple concurrent writers directly 
against object storage, without needing an external catalog
   
   While the conditional put feature offers certain advantages, it may not be 
as crucial for our current use cases in iceberg-rust, where integration with a 
catalog like Hive or REST is more common.
   
   As an iceberg-rust developer, I am eager to unlock more potential within the 
project.
   
   ## Put OpenDAL maintianer hat on
   
   Firstly, [opendal](https://github.com/apache/opendal) and 
[object_store](https://crates.io/crates/object_store) are not competitors. (And 
remember, I'm also a contributor to `object_store`!) Rather than discussing 
replacements, I'd prefer to explore how we can coexist to offer our users more 
choices and possibilities.
   
   I believe `opendal` integrates seamlessly with `object_store`, which is why 
our community created 
[`object_store_opendal`](https://github.com/apache/opendal/tree/main/integrations/object_store),
 enabling users to utilize `opendal` as an implementation of `object_store`.
   
   Here are a few reasons why OpenDAL is beneficial for iceberg-rust.
   
   - OpenDAL offers native support for OSS, B2, HDFS, and WebHDFS in addition 
to the existing S3, GCS, and AzBlob. All have passed identical [behavior test 
suites](https://github.com/apache/opendal/actions/runs/7662788480), simplifying 
integration for users without fear of unexpected breaking.
   - OpenDAL offers a comprehensive API that supports range retrieval and 
conditional fetching through the robust 
[`read_with()`](https://docs.rs/opendal/latest/opendal/operator_futures/struct.FutureRead.html)
 function.
   - OpenDAL enables users to freely utilize its API. For instance, they can 
directly use 
[`Writer`](https://docs.rs/opendal/latest/opendal/struct.Writer.html) without 
needing to understand MultipartUpload.
   - OpenDAL features powerful layers such as 
[retry](https://docs.rs/opendal/latest/opendal/layers/struct.RetryLayer.html), 
[logging](https://docs.rs/opendal/latest/opendal/layers/struct.LoggingLayer.html),
 
[tracing](https://docs.rs/opendal/latest/opendal/layers/struct.TracingLayer.html),
 
[metrics](https://docs.rs/opendal/latest/opendal/layers/struct.MetricsLayer.html),
 
[prometheus](https://docs.rs/opendal/latest/opendal/layers/struct.PrometheusLayer.html),
 
[timeout](https://docs.rs/opendal/latest/opendal/layers/struct.TimeoutLayer.html),
 and [more](https://docs.rs/opendal/latest/opendal/layers/index.html) that can 
significantly reduce the workload typically associated with managing these 
aspects manually.
   - OpenDAL features 
[`object_store_opendal`](https://github.com/apache/opendal/tree/main/integrations/object_store)
 integration, enabling seamless connection to existing `object_store`-based 
systems.
   
   I also found some places that OpenDAL can improve (Thanks @tustvold!):
   
   - https://github.com/apache/opendal/issues/4074
   - https://github.com/apache/opendal/issues/4075
   
   As an OpenDAL maintainer, I believe OpenDAL offers features that could be 
beneficial for iceberg-rust, potentially simplifying some aspects of storage 
management. And I will be happy to collaborate with `object_store` to ensure 
the success of iceberg-rust.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to