Database 面向对象数据库能比带有ORM的关系数据库更好吗?

Database 面向对象数据库能比带有ORM的关系数据库更好吗?,database,orm,object-oriented-database,Database,Orm,Object Oriented Database,只要想想,带有ORM的关系数据库在许多方面与面向对象数据库非常相似。我的经验仅仅是使用RDMS和ORM,所以在我看来,面向对象数据库非常相似,但没有这种经验,我不能肯定 如果您使用过面向对象的数据库和ORM,您可以比较它们吗?与RBMS+ORM相比,面向对象数据库有哪些弱点 与RBMS+ORM相比,面向对象数据库有哪些弱点 最大的缺点是缺乏标准化:没有标准的API,没有标准的查询语言(OQL的尝试是一个巨大的失败),因此缺乏可移植性和可互操作的工具(用于备份、归档、迁移等)。当涉及到数据时,你不

只要想想,带有ORM的关系数据库在许多方面与面向对象数据库非常相似。我的经验仅仅是使用RDMS和ORM,所以在我看来,面向对象数据库非常相似,但没有这种经验,我不能肯定

如果您使用过面向对象的数据库和ORM,您可以比较它们吗?与RBMS+ORM相比,面向对象数据库有哪些弱点

与RBMS+ORM相比,面向对象数据库有哪些弱点

最大的缺点是缺乏标准化:没有标准的API,没有标准的查询语言(OQL的尝试是一个巨大的失败),因此缺乏可移植性和可互操作的工具(用于备份、归档、迁移等)。当涉及到数据时,你不希望这样

这就解释了为什么OODBMS从采用的角度来看是一个失败,为什么RDBMS会停留一段时间,而不管NoSQL运动(我感觉OODBMS供应商将NoSQL运动视为他们的产品重新品牌化后的一个机会)。

Chris Date同意:

…'“对象/关系”系统将 不偏不倚 关系系统。。。适当的 对象/关系系统只是一个 适当类型的关系系统 支持。。。这就意味着它是一个 正确的关系系统,没有更多和更多 同样如此

SQL和关系理论:如何编写准确的SQL代码,第36页我的经验:

  • RDBMS:
    • 坦率地说,我不喜欢使用SQL,一种有15年历史的语言,但事实是,如果您想要任何可用的东西,比如批量插入,您必须这样做(LINQ到实体ORM框架不支持批量插入,因此20000条记录插入需要30秒,而SQL中的批量插入需要500毫秒)。您最终不得不使用ADO.NET进行数据库插入
    • 与对象数据库相比,RDBMS有一些优点,即数据独立于调用的应用程序(然而,这也是一个缺点,因为映射层使一切变得更慢、更复杂和更脆弱)
    • 底线:花了6周时间使用LINQ到实体ORM框架和Microsoft SQL Server 2008 R2。相当陡峭的学习曲线
  • 对象数据库:尝试了一个对象数据库,即免费的开源数据库。
    • 发现我可以用一行代码持久化我的对象
    • 没有要处理的模式更改,它只是工作
    • 即时支持POCO(普通的旧类对象)。在代码中创建类,然后将其持久化。实体框架也可以这样做,但是,手动映射需要大量工作,而且很容易中断
    • 启用透明持久性,它会在后台自动延迟加载—不再检查由于实体框架中延迟加载而未加载的对象
    • 对象数据库的性能也令人印象深刻:如果对象数据库中有1000万行,并且启用了索引,那么对于三列选择,它的16毫秒。那很不错
    • 一句话:一周后,我得到了与使用RDBMS进行持久化相同的解决方案,但是,它更干净,代码更少,更易于维护-如果我真的想,我可以使用服务将db4o数据库与MSSQL同步
对于企业世界中真正大型的系统,例如一个表中包含2.5亿行,诸如和vs.之类的选项对于性能变得非常重要。在这种情况下,db4o不起作用,它可能需要一些更具进取心的东西。但是,如果您需要一种简单的持久化对象的方法,那么对象数据库就可以满足需要。学习SQL、在ORM中设置映射、处理MSSQL安装、实现自己的批量加载过程等所有工作都消失了,留给您的是干净、优雅的100%托管代码

我怀疑,供应商没有接受对象数据库的原因之一是,数据库市场每年价值30亿美元,目前还没有理由扼杀摇钱树


免责声明:我与或都没有任何关系。

这个问题非常广泛和主观。需要是社区维基。