为什么面向对象的数据库失败?

use*_*807 12 database

为什么面向对象的数据库失败?

我发现令人惊讶的是:

foo bar = new foo();

bar.saveToDatabase();
Run Code Online (Sandbox Code Playgroud)

迷失方向:

foo bar = new foo();
/* write complicated code to extract stuff from foo */
/* write complicated code to write stuff to database */
Run Code Online (Sandbox Code Playgroud)

相关问题:

面向对象的数据库是否仍在使用?

面向对象与关系数据库

为什么面向对象的数据库还没有成功?

Aam*_*mir 13

可能是因为它们与特定的编程语言耦合.


jal*_*alf 9

首先,我不相信他们完全"失败".据我所知,仍然有一些,并且它们仍然被几家公司使用.

无论如何,可能是因为我们想要存储在数据库中的大量数据本质上是关系型的.问题是,虽然是,OO数据库更容易集成到OO编程语言中,关系数据库使定义查询更容易,以及存储的数据之间的关系.这往往是复杂的部分.

  • 如果我用OO语言(Java或C#)编码,那么我有哪些数据本质上是关系型的?一切都在一个对象中. (4认同)

ska*_*man 6

有无数的现有应用程序将其数据存储在关系数据库中.这些数据是这些公司的生命线.他们共同投入了大量资金来存储,维护和报告这些数据.将这些无价的信息转移到一个根本不同的环境中的成本和风险非常高.

现在考虑ORM工具可以将现代应用程序数据结构映射到传统的关系模型,并且几乎可以消除任何迁移到OODBMS的动机.它们为非常昂贵的高风险迁移提供了低风险的替代方案.


Hal*_*ard 6

我最近在个人宠物项目中使用db4o(一个面向对象的数据库),因为它设置和开始都很快.没有必要的细节,坚韧不拔的细节.

除此之外,正如我所看到的,它们尚未流行的主要原因是:

  • 面向对象数据库的报告更加困难.与此相关,手动查看关系数据库中的实际数据也更容易.
  • 微软和甲骨文将其业务基于关系数据库.
  • 许多企业已经拥有关系数据库.
  • IT部门通常具有关系数据库专业知识.

正如Jan Aagaard所指出的那样,最近它是因为问题以不同的方式解决了,即使程序员针对关系数据库进行编程,也会给程序员提供面向对象的感觉.


cha*_*aos 5

因为,尽管ODBMS广告中充斥着关于ORM系统的贬义语言,但是使ORM完成工作并没有那么难,并且没有切换到纯ODBMS的所有各种命中.

实际发生的是你的第一个代码示例获胜,它恰好位于RDBMS持久层上.