使用Hibernate ORM和OGM组合SQL和NOSQL数据库

Avi*_*ise 5 java hibernate nosql hibernate-ogm polyglot-persistance

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

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

我的问题是:"在没有触及现有应用程序代码的情况下在两个数据库之间切换是否可行或可行 - 没有很大的开销?我可能会添加内容但不会触及已存在的内容".在SQL和NOSQL数据库之间建立纯多语言持久性是一个好主意,例如,使用Hibernate.

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

Vla*_*cea 3

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

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

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

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