5

我有一个使用 SQL Server 的应用程序。我想使用一个 NOSQL 存储,我决定它是图形,因为我的数据是高度连接的。Neo4j 是一种选择。

我希望能够在不触及应用层的情况下切换数据库,例如,只修改一些 xml 配置文件。我看过一些网上公开的例子,我发现 ORM 和 OGM 配置应用程序的方式不同,每个配置文件都有自己的名称,更重要的是有自己的结构。查看每个代码的代码发现它们在初始化会话的方式上也有所不同,这对我的想法来说听起来并不好。

我的问题是:“在不触及现有应用程序代码的情况下,在两个数据库之间切换是否有可能或可行——无需大量开销?我可以添加东西但不触及已经存在的东西”。在 SQL 和 NOSQL 数据库之间建立纯粹的多语言持久性是一个好主意,例如,使用 Hibernate。

在深入挖掘之前,我想听听你们的意见。我们这里有一个 Hibernate 人吗?

4

1 回答 1

3

Hibernate OGM的目标是为各种 NoSQL 数据存储提供统一的抽象。正如我们所说,该项目还很年轻,所以我不确定您是否可以开箱即用地采用它。

还有交易的问题。如果您的应用程序设计为使用 SQL 事务,那么当您切换到 NOSQL 解决方案时,情况将会发生根本性的变化。

使用抽象层有利于可移植性,但不能提供本机查询的所有功能。JP-QL 也存在同样的问题,它只涵盖SQL-92,缺乏对窗口函数或 CTE 的支持。

多语言持久性是一个很棒的特性,但请尝试使用单独的存储库,例如Spring Data提供的。从架构的角度来看,我发现这更加灵活。

于 2014-09-10T08:04:45.917 回答