feat: add adapter for REST namespace with manifest namespace backend#4984
feat: add adapter for REST namespace with manifest namespace backend#4984jackye1995 merged 19 commits intolance-format:mainfrom
Conversation
…lder (#5045) I ended up doing these in #4984 and #4905 so I decided to pull it out and get it cleaned up first. This PR moves the directory namespace from using OpenDAL directly to using Lance ObjectStore. This avoids the inconsistency between the dir namespace and the underlying lance table storage configurations. User can still use OpenDAL, and if we fully migrate Lance to OpenDAL it will be applied to both layers at the same time as well. The PR also improves the builder of the namespaces with builder style and allow supplying a Lance session. Since we have not published a stable version yet, we do not care about backwards compatibility. This PR also ensures the lance-namespace-impls features are consistent with lance-io features. Related to #5042
f6d85cd to
6f80791
Compare
e8a1fbd to
5f1717c
Compare
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #4984 +/- ##
==========================================
+ Coverage 82.02% 82.21% +0.19%
==========================================
Files 342 344 +2
Lines 141495 144687 +3192
Branches 141495 144687 +3192
==========================================
+ Hits 116059 118959 +2900
- Misses 21595 21807 +212
- Partials 3841 3921 +80
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
5f1717c to
fa2c3bb
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
…ls (#258) These are now available with lance-format/lance#4984
Based on lance-format/lance#4984 1. Bump to 1.0.0-beta.2 2. Use DirectoryNamespace in lance to perform all testing in python and rust for much better coverage 3. Refactor `ListingDatabase` to be able to accept location and namespace. This is because we have to leverage listing database (local lancedb connection) for using namespace, namespace only resolves the location and storage options but we don't want to bind all the way to rust since user will plug-in namespace from python side. And thus `ListingDatabase` needs to be able to accept location and namespace that are created from namespace connection. 4. For credentials vending, we also pass storage options provider all the way to rust layer, and the rust layer calls back to the python function to fetch next storage option. This is exactly the same thing we did in pylance.
Based on implementation in lance-format/lance#4984
…lder (lance-format#5045) I ended up doing these in lance-format#4984 and lance-format#4905 so I decided to pull it out and get it cleaned up first. This PR moves the directory namespace from using OpenDAL directly to using Lance ObjectStore. This avoids the inconsistency between the dir namespace and the underlying lance table storage configurations. User can still use OpenDAL, and if we fully migrate Lance to OpenDAL it will be applied to both layers at the same time as well. The PR also improves the builder of the namespaces with builder style and allow supplying a Lance session. Since we have not published a stable version yet, we do not care about backwards compatibility. This PR also ensures the lance-namespace-impls features are consistent with lance-io features. Related to lance-format#5042
…ance-format#4984) This PR introduces an adapter (using Axum) that provides a REST server which delegates requests to be fulfilled by another Lance namespace. This is helpful for easy setup of a REST namespace server to perform testing. In addition, I added a namespace implementation backed by a Lance table, basically the same thing as lancedb/lancedb#2708, also have DirectoryNamespace able to use it in a compatibility mode. I moved it here as a namespace implementation, because (1) this allows us to fully test tables in a namespace with storage only requirement, and at the same time, (2) comparing to offer this in lancedb directly, we know we want to consolidate the local listing connection and remote connection as just 2 types of namespace connections, and this gives user an incentive to move to the namespace-based connection in lancedb for the local one Also add corresponding python binding for DirectoryNamespace and RestNamespace, deprecate the current ones in lance-namespace python package
This PR introduces an adapter (using Axum) that provides a REST server which delegates requests to be fulfilled by another Lance namespace. This is helpful for easy setup of a REST namespace server to perform testing.
In addition, I added a namespace implementation backed by a Lance table, basically the same thing as lancedb/lancedb#2708, also have DirectoryNamespace able to use it in a compatibility mode.
I moved it here as a namespace implementation, because (1) this allows us to fully test tables in a namespace with storage only requirement, and at the same time, (2) comparing to offer this in lancedb directly, we know we want to consolidate the local listing connection and remote connection as just 2 types of namespace connections, and this gives user an incentive to move to the namespace-based connection in lancedb for the local one
Also add corresponding python binding for DirectoryNamespace and RestNamespace, deprecate the current ones in lance-namespace python package