Replies: 3 comments 1 reply
|
Quick observation + question before we go deeper into the three-backend split: For all three backends (path / rest / gravitino), the ultimately reliable metadata is whatever you read from the dataset's location. Lance is path-self-describing — unlike Iceberg, it does not need an external metadata pointer to locate the schema; opening the path gives you schema, versions, fragments. And since applications can (and routinely do) reach the storage directly — Python notebooks doing The Gravitino Lance REST as it stands today already runs into this in several concrete ways:
Given the above, could you spell out the concrete primary use case for each backend — specifically what each one gives users that the other two do not, and how each handles the "an app wrote directly to the path and bypassed me" case? Would be good to have one paragraph per backend in the proposal that names the target user, the differentiator, and the bypass story. |
|
If we do not support non-Gravitino namespace backends for now, the architecture can be simplified around the existing Gravitino namespace backend.
|
|
Feature request: Support for AuthN/Z for Lance Rest Catalog backed by Gravitino RBAC running lance as a auxillary. |
Uh oh!
There was an error while loading. Please reload this page.
Background
Gravitino has started to support Lance through the Lance REST server and generic lakehouse Lance tables. Recent discussions around authorization, credential vending, and Lance path namespace compatibility show that we need to align on the long-term architecture before adding more features.
This discussion proposes a long-term direction for Lance support in Gravitino.
Overall Picture
In the long term, Gravitino should expose two major entry points:
The goals are:
Core Decision
The largest architectural decision is whether Gravitino should support non-Gravitino namespace backends for Lance.
This proposal assumes that we should support them. In that model, Gravitino Lance REST is not only a protocol adapter for Gravitino metadata. It is also an engine-facing Lance namespace gateway.
Supported metadata authorities:
If we only support the Gravitino backend, the architecture is simpler:
But that would give up support for existing Lance path namespaces, remote Lance REST namespaces, and lightweight standalone Lance REST deployments.
Proposed Long-Term Model
Introduce a first-class Lance catalog provider:
Ignoring nested namespaces for now, the object model can be viewed as:
Each Lance catalog instance should choose exactly one namespace backend.
Backend Semantics
Path backend
REST backend
Gravitino backend
Deployment Modes
Standalone Lance REST should not directly read the Gravitino entity store or act as a generic HTTP proxy for Gravitino metadata.
Authorization and Credential Vending
Metadata authorization should be table-oriented:
When an engine accesses a Gravitino Lance catalog through Lance REST, authorization should follow a pattern similar to Iceberg REST:
Credential vending should be executed through the Lance REST pipeline:
For the Gravitino backend, metadata authority and policy authority still come from Gravitino.
Role of Generic Catalog
The following should remain as a compatibility path, but not the long-term user-facing model:
The main external path should be:
The existing Lance capabilities in the generic catalog should be moved into shared internal services and reused by both paths.
All reactions