如何将完整的数据库架构公开为 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 功能,如readEntitySetwriteEntitySet 等。在我看来,这非常强大,但同时非常耗时,尤其是当您开始实施 OData 操作文件 $filter 时 另一种替代方法是使用 OData Jpa Processor 在这里您实现了 OData API,但您仍然必须定义 JPAModel,您可以使用 eclipse 工具从数据库表中生成 JPA 模型文件,如文档中所述 here

【讨论】:

感谢 Shiva,我喜欢构建这些东西。我只是被要求验证没有现成的解决方案。我已经让服务器对其余协议执行相同的操作。只需要使用 Olingo 实现一些 OData 功能

以上是关于如何将完整的数据库架构公开为 OData 服务的主要内容,如果未能解决你的问题,请参考以下文章

在 MVC 应用程序上公开 OData

通过 OData 公开的 Azure Data Lake Store

Breeze、OData 和无 EF

带有 WCF REST 的 OData

Net Core:在洋葱架构中使用OData,将查询参数转换为Linq

从 DMZ 服务器访问 OData