正在从嵌入式 Teiid 服务器访问 table 元数据

accessing table metadata from embedded Teiid server

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

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

我尝试了 getVDBRepository().getSystemStore()VDBRepository.getODBCStore(),但是那些 MetadataStore 不适用于我部署的 VDB。

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

看看 [1] Admin API 上的 getSchema 方法,这个方法 returns 元数据的字符串形式,但是你可以抓取 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