从嵌入式Teiid服务器访问表元数据

时间:2019-10-29 03:38:06

标签: spring-boot teiid

我已经在Spring Boot应用程序中嵌入了Teiid 12.3。我想进入VDB的元数据,以便使用graphviz-java生成图表。我假设如果我有一个org.teiid.metadata.Table对象,那么我可以调用getIncomingObjects()来获取对该表所依赖的表的引用。我只是不知道如何从EmbeddedServer导航到Table对象。

我研究了使用可通过EmbeddedServer.getAdmin()获得的管理API。从那里,我可以调用getVDBs(),从那里我可以向下导航到getModels(),但是在该级别以下,只有通过getSourceMetadataText()的模型源。我还尝试了对EmbeddedServer进行子类化,以使getVDBRepository()公开。我可以调用getVDBRepository()*.getModels(),但是它返回相同的Model对象只能让我访问模型的源定义,而不能访问运行时元数据模型。

我尝试了getVDBRepository().getSystemStore()VDBRepository.getODBCStore(),但是这些MetadataStore并不适合我已部署的VDB。

我没有找到Google,Teeid JIRA,Teiid论坛或StackOverflow的任何示例来帮助我。

1 个答案:

答案 0 :(得分:0)

看看getSchema API上的Admin方法的[1],该方法返回元数据的字符串形式,但是您可以获取Schema对象为对象形式。如果您不希望这样做,Teiid还会使用许多SYS表公开系统目录,您可以发出SQL查询以获取VDB中模式和模式项的元数据。一个用于内部访问,另一个用于外部访问。

顺便说一句,其中一个用户创建了一个依赖关系图工具,如果您尝试执行类似的操作,该工具可能会很有用。参见[2]。如果您有兴趣进一步推广,请告诉我。

[1] https://github.com/teiid/teiid/blob/master/runtime/src/main/java/org/teiid/runtime/EmbeddedAdminImpl.java#L544-L557 [2] https://github.com/teiid/metadata-catalog-ui