0

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

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

我试过getVDBRepository().getSystemStore()and VDBRepository.getODBCStore(),但那些MetadataStores 不适用于我部署的 VDB。

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

4

1 回答 1

0

看 [1] APIgetSchema上的方法Admin,该方法返回元数据的字符串形式,但是您可以抓取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/元数据目录-ui

于 2019-10-30T02:40:38.387 回答