对象数据库的优缺点是什么?

时间:2008-09-14 18:04:58

标签: database oop rdbms relational object-oriented-database

关于对象关系映射器以及如何最好地避免阻抗不匹配,有很多信息,如果使用对象数据库,所有这些似乎都没有实际意义。我的问题是为什么不经常使用这个?是因为性能原因还是因为对象数据库导致您的数据成为应用程序的专有数据,还是因为其他原因?

7 个答案:

答案 0 :(得分:12)

  • 熟悉。数据库管理员知道关系概念;对象的,不是那么多。
  • 效果。关系数据库已被证明可以更好地扩展。
  • 成熟度。 SQL是一种功能强大,功能齐全的语言。
  • 供应商支持。与OODBMS相比,您可以选择更多第一方(SQL服务器)和第三方(管理界面,映射和其他类型的集成)工具。< / LI>

当然,开发人员更熟悉面向对象的模型,并且正如您所指出的那样,它会省略一个ORM。但到目前为止,关系模型已被证明是更可行的选择。

另见最近的问题Object Orientated vs Relational Databases

答案 1 :(得分:10)

我一直在使用db4o这是一个OODB,它解决了大部分内容:

  • 熟悉 - 程序员比SQL更了解他们的语言(参见本地查询)
  • 表演 - 这个是非常主观的,但你可以看看PolePosition
  • 供应商支持和成熟度 - 可随时间变化
  • 不能使用相同框架的程序使用 - 有OODB标准,您可以使用different frameworks
  • 版本控制可能有点婊子 - 版本控制实际上是easier

我感兴趣的专业人士是:

  • 本机查询 - Db4o允许您使用静态类型语言编写查询,因此您不必担心错误输入字符串并查找运行时缺少的数据,
  • 易于使用 - 在域层,持久层(映射)以及最终SQL数据库中定义buissiness逻辑肯定违反了DRY。使用OODB,您可以定义您所属的域名。

我同意 - OODB还有很长的路要走,但他们要走了。并且有一些域问题可以通过OODB更好地解决,

答案 2 :(得分:2)

对象数据库的一个反对意见是它在数据和代码之间创建紧密耦合。对于某些应用程序,这可能没问题,但对其他人则不行。关系数据库为您提供的一件好事是可以在您的数据上添加许多视图。

Ted Neward解释了这一点以及关于OODBMS的更多信息比这更好。

答案 3 :(得分:2)

它与性能无关。也就是说,基本上所有应用程序都可以通过OODB更好地运行。但这也会使许多DBA失去工作/不得不学习新技术。更多人失业会纠正数据中的错误。这不太可能使OODB受到成熟公司的欢迎。 Gavin似乎完全无能为力,更好的链接是Kirk

答案 4 :(得分:1)

缺点:

  • 不能被程序使用 不要也使用相同的框架 用于访问数据存储,制作 它更难以跨越 企业。

  • 在线提供的资源减少     非基于SQL的数据库

  • 数据库之间没有兼容性     类型(不能交换到不同的数据库     提供者没有改变所有     代码)

  • 版本控制可能有点像     婊子。我想添加一个新的     对象的属性并不完全如此     轻松添加新列到     表

答案 5 :(得分:0)

索伦

您声明的所有原因都有效,但我发现OODBMS的问题是逻辑数据模型。对象模型(或者更确切地说是70年代的网络模型)并不像关系模型那么简单,因此是次等的。

答案 6 :(得分:0)

jodonnel,我不知道如何使用对象数据库将应用程序代码与数据相结合。您仍然可以通过使用Repository模式从OODB中抽象应用程序,并在正确设计时替换为ORM支持的SQL数据库。

对于OO应用程序,OO数据库将为持久化对象提供更自然的适应性。

您可能将数据绑定到域模型,但这就是关键所在!

使用以域为中心的视图以单一方式查看数据,业务规则和流程不是一件好事吗?

因此,一个很大的专业人员是,OODB与大多数现代的,企业级面向对象的软件应用程序的设计相匹配,使用不同的(关系)设计设计数据层没有额外的努力。建造和维护成本更低,并且在许多情况下通常具有更高的性能。

缺点,我估计普遍缺乏成熟度和采用率......