如何将完整的数据库架构公开为 OData 服务
Posted
技术标签:
【中文标题】如何将完整的数据库架构公开为 OData 服务【英文标题】:How to expose the complete database schema as an OData service 【发布时间】:2021-09-04 16:57:36 【问题描述】:我正在开始一个新项目和我的公司 现在仅使用 OData REST 服务进行内部数据交换, 同时淘汰之前开发的所有通用 REST 服务。 我正在集成的遗留系统在许多数据库上运行 例如 MS SQL、Oracle、DB2、mysql、Progres、Informix 和 HANA。
如何以通用方式将完整的 DB SQL 模式公开为 OData REST 服务,而不必使用 Apache Spring 和 Olingo 构建 OData 服务, 每桌一次提供一项服务。
否则,我需要构建一个通用的 REST OData 服务, 这将自动公开所有这些数据库中的数据, 通过 JDBC 驱动程序读取表和列元数据并使用它来定义 OData 属性。
【问题讨论】:
"是否有现成的开源解决方案" - 如果您正在寻求工具或软件库的建议,那对于 Stack Overflow 来说是题外话。见第 4 点here。您可能会得到一些建议,但您的问题也可能会被关闭。 感谢您的反馈,将重新表述问题。 【参考方案1】:恐怕生态系统中没有可将所有数据库暴露给OData的即插即用解决方案,您可能有两种选择来解决这个问题
-
创建一个使用您提到的方法的自定义 OData 处理器,即它建立一个 JDBC 连接,生成 SQL 字符串并实现所有 OData 功能,如
readEntitySet
、writeEntitySet
等。在我看来,这非常强大,但同时非常耗时,尤其是当您开始实施 OData 操作文件 $filter
时
另一种替代方法是使用 OData Jpa Processor 在这里您实现了 OData API,但您仍然必须定义 JPAModel,您可以使用 eclipse 工具从数据库表中生成 JPA 模型文件,如文档中所述 here
【讨论】:
感谢 Shiva,我喜欢构建这些东西。我只是被要求验证没有现成的解决方案。我已经让服务器对其余协议执行相同的操作。只需要使用 Olingo 实现一些 OData 功能以上是关于如何将完整的数据库架构公开为 OData 服务的主要内容,如果未能解决你的问题,请参考以下文章
通过 OData 公开的 Azure Data Lake Store