ORM + 关系数据库可以被认为是对象关系数据库管理系统吗?
Posted
技术标签:
【中文标题】ORM + 关系数据库可以被认为是对象关系数据库管理系统吗?【英文标题】:Can ORM + relational DB be considered Object-Relational Database Management system? 【发布时间】:2011-02-03 16:03:36 【问题描述】:我想知道为什么 ORM 如此受欢迎,并且每个人都在使用 JDO 和 JDA 规范的 ORM 实现,而不是使用也实现这些规范的对象数据库。使用对象数据库时性能要好得多。
objectdb (JDO, JPA) db4o (JDO)
如果我说这是因为开发人员需要在他们的应用程序中同时使用对象模型和关系模型,我说得对吗?
ORDBM 呢?是否有任何 ORDBM(值得一试)或者可以将对象关系映射与关系数据库一起视为 ORDBM?
【问题讨论】:
因为没有人因为购买甲骨文而被解雇;) 另请注意,大多数“OO 程序”实际上根本不做 OO。这样看:equals 和 hashCode 它们在 Java 中的完成方式与 OO 根本不兼容(这在 "Effective Java" Joshua Bloch 以及 Bill Venners/Martin Odersky 对 Artima 等的精彩采访)[这是一个事实顺便说一句,无需争论:不可能满足 equals/hashCode非最终类和接口中的合同也有问题]。然而,几乎没有人在 Java 中遇到 equals 和 hashCode 的问题。为什么?因为大多数 Java 程序并不是真正的 OO 程序。 【参考方案1】:人们使用带有 OR 映射器而不是对象数据库的 RDBMS 的主要原因是 RDBMS 根深蒂固,大家都很好理解和支持。如果你使用对象数据库,你会遇到问题
寻找支持它的人 使用现有工具进行报告、备份等。 让其他应用程序访问数据对象数据库是否真的可以在真实世界场景中提供相同或更好的性能和安全性,可能还有很多疑问(我不能说是否合理)。
【讨论】:
一直处于外围向执行团队解释我们的“支持合同”是“好吧,荷兰有个家伙,当我们遇到错误时,他通常会在论坛上发布好的答案...”,随后给了 3 个月的时间来迁移到 IBM 解决方案...是的,可以从知名供应商处购买支持以及对现有 IT 员工的熟悉度是很重要的。【参考方案2】:根据我的经验,使用对象数据库可以减少代码,并使项目更简洁。
RDBMS + ORM(LINQ-to-Entities)的 6 周学习曲线和对象数据库(db4o)的 1 周学习曲线之间的差异。
【讨论】:
【参考方案3】:您可能熟悉的常用 DBMS(例如 Oracle、SQL Server、DB2、mysql、PostGreSQL)不是关系型的。它们基于 SQL 模型,尽管它在某些方面类似于关系模型,但这是完全不同的。
对象-关系 DBMS 与关系 DBMS 的含义相同。这是另一种说法,原则上 RDBMS 将支持任何无限的数据类型集和对它们的关系操作。 O/R Mapping 软件实际上只是解决了 SQL DBMS 不能很好地做到这一点的事实。
【讨论】:
以上是关于ORM + 关系数据库可以被认为是对象关系数据库管理系统吗?的主要内容,如果未能解决你的问题,请参考以下文章