liurenjie1024 opened a new issue, #1467:
URL: https://github.com/apache/iceberg-rust/issues/1467

   During development I found that some times in the core `iceberg` crate, we 
need some external dependencies such as `MemoryCatalog`, which is useful in 
following cases:
   
   1. In doc example: https://github.com/apache/iceberg-rust/pull/1436
   2. In unit tests, such as transaction api
   
   So I want to create an `iceberg-catalog-api` crate to move `Catalog` and 
`CatalogLoader` trait into this module, so that we have following dependency 
graph:
   ```
                   iceberg-catalog-api
                                 |
                   iceberg-catalog-memory
                                 |(dev dependency)
                            iceberg
   ```
   
   ## Alternative 1: Moving `iceberg-catalog-memory` to `iceberg` crate
   
   While this solves the problem we are currently facing, this have several 
disadvantages like following:
   1. It makes `iceberg` crate larger.
   2. It's not scalable. For example when we finished refactoring of `FileIO`, 
we may still facing similar issue, and we hope to adopt the proposed approach.
   
   ## Alternative 2: Creating an `iceberg-api` crate to contain all trait 
definition.
   
   This is similar to current proposal, and similar to the java approach. The 
only problem is that it violated smaller crate principal, but I'm not 100% sure 
that this is worse.
   
   


-- 
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.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