]
Steven Hawkins updated TEIIDSB-51:
----------------------------------
Fix Version/s: 1.1.0
(was: 1.0.4)
Define expectations for runtime metadata
----------------------------------------
Key: TEIIDSB-51
URL:
https://issues.jboss.org/browse/TEIIDSB-51
Project: Teiid Spring Boot
Issue Type: Feature Request
Reporter: Steven Hawkins
Priority: Major
Fix For: 1.1.0
At a high level there are potentially three modes for our ddl:
1. Interactive - there was some work toward this, but it needed to only be a
"developer mode" as it would reload the vdb on each metadata change. There is a
lot about the transactionality of DDL updates that our current simplistic metadata model
does not support, which makes this hard to fully implement. We haven't talked about
this much in relation to Teiid Spring Boot, but ideally there should be a way for
developers to test incremental changes without full rebuilds.
2. Dynamic - the term is a bit dated, but this refers to any vdb that performs import
from a metadata repository that has runtime dependencies. By design this allows for a
simple vdb definition and options for caching or re-importing on reload. In a container
environment metadata caching no longer makes sense unless we use a volume. Depending upon
your viewpoint allowing for runtime import of metadata is potentially a point of
mutability that is also not needed in a container environment.
3. Static - much like our old .index designer vdbs there are benefits to having the full
metadata already available to the vdb/image. There is a lot of work that we do lazily at
runtime that can be moved to an earlier phase - primarily generating the rest and odata
layers, but it would also include the pg system table materializations. For Teiid Spring
Boot or usage in containers in general what this would look like is a build phase for the
vdb such that it could obtain appropriate metadata and initialize as much as possible
statically (eventually for quarkus vm snapshotting). The only metadata that would not be
fresh potentially would be the costing metadata - however that is problematic as is and
will eventually need a progressive optimization strategy employing a persistent store.
As of now we are currently focused just on #2. As we look toward operators, we should
start thinking about #3.
#1 would come into play if/when we start looking at local development options using vs
code.
We can treat this issue as an epic and a place to centralize discussion.