我有一个使用SQL Server的应用程序。我想使用NOSQL存储,我认为它是图形,因为我的数据是高度连接的。 Neo4j是一个选择。
我希望能够在不触及应用程序层的情况下切换数据库,例如,只修改一些xml配置文件。 我已经看过网上公开的一些示例,我看到ORM和OGM没有以相同的方式配置应用程序,每个配置文件都有自己的名称,更重要的是它自己的结构。查看每个代码都显示他们在初始化会话的方式上也有所不同,这对我的想法听起来不太好。
我的问题是:“在没有触及现有应用程序代码的情况下在两个数据库之间切换是否可行或可行 - 没有很大的开销?我可能会添加内容但不会触及已存在的内容”。在SQL和NOSQL数据库之间建立纯多语言持久性是一个好主意,例如,使用Hibernate。
我想在深入挖掘之前先听听你们的意见。我们在这里有一个Hibernate男人和我们在一起吗?
答案 0 :(得分:3)
Hibernate OGM的目标是为各种NoSQL数据存储提供统一的抽象。正如我们所说,这个项目还很年轻,所以我不确定你是否可以开箱即用。
还有交易问题。如果您的应用程序旨在使用SQL事务,那么当您切换到NOSQL解决方案时,事情将发生根本性的变化。
使用抽象层有利于移植性,但不能提供本机查询的所有功能。这与JP-QL的问题相同,JP-QL仅涵盖SQL-92,缺乏对窗口函数或CTE的支持。
多语言持久性是一项很棒的功能,但请尝试使用单独的存储库,例如Spring Data。从架构的角度来看,我发现它更加灵活。