inq*_*One 3 database couchdb database-migration mongodb nosql
我们正在考虑在我们的Java服务器端应用程序中使用MongoDB作为我们的数据库.在我之前的项目中,我们使用Hibernate抽象底层SQL数据库,以便我们可以在不更改应用程序代码的情况下从MySQL切换到Postgres(例如).(这是Hibernate给我们提供的除了通常的ORM功能之外的一个+).
我为面向文档的NoSQL数据库搜索了一个类似的抽象层,结果没有结果!
虽然MongoDB满足了我们今天的要求,但如果一个更好的面向文档的NoSQL DB出现3年后,我们不想更改我们的应用程序代码以转移到新的数据库.
一个解决方案是我们自己编写抽象层(如果我们没有其他选项,我们就会这样做).
但是如果来自ORM世界的人们直接编码到NoSQL数据库接口上,我会感到惊讶吗?数据库独立性在NoSQL世界中不是一个问题吗?或者通过其他方式实现?
NoSQL没有很多与数据库无关的成熟ORM层的原因是:
它们的标准化程度要低得多.SQL是ISO标准.当您坚持使用该标准时,您必须在更改基础数据库时进行少量修改.但是,面向文档的数据库都有自己的查询语言.
它们的工作根本不同.所有面向文档的数据库都有自己的理念,优点,缺点和用例.在CouchDB上运行良好的存储策略可能完全不适合MongoDB.到目前为止,很难使用一个可以抽象的ORM映射器,它可以在其API中找到满足所有这些怪癖的公分母.
它们仍然是一项相当新的技术.他们周围的软件生态系统仍需要几年的时间才能发展成类似于SQL的标准.
但请注意,虽然在面向文档的数据库世界中没有与数据库无关的ORM的解决方案,但是有大量的ORM包装器用于特定的数据库.您没有提到您正在使用的编程语言,但是大多数主流语言都有解决方案.这绝对比滚动你自己更受欢迎.