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

Kev*_*ang 10 database oop rdbms relational object-oriented-database

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

Sör*_*lau 12

  • 熟悉.数据库管理员知道关系概念; 对象的,不是那么多.
  • 性能.事实证明,关系数据库的扩展性要好得多.
  • 到期.SQL是一种强大的,长期开发的语言.
  • 供应商支持.与OODBMS相比,您可以选择更多的第一方(SQL服务器)和第三方(管理接口,映射和其他类型的集成)工具.

当然,面向对象的模型对于开发人员来说更为熟悉,正如您所指出的那样,它将使ORM中的一个成为可能.但到目前为止,关系模型已被证明是更可行的选择.

另请参阅最近的问题,面向对象数据库和关系数据库.

  • 对成熟度的反驳:SQL并没有长期发展.它长期欠发达.有人会说C已经成熟,因为它已经存在了很长时间.我说C#是成熟的,因为它部分是我们用C的集体经验的结果. (5认同)
  • 对绩效的反驳:berkeleydb; 它不是关系型的,可以垂直扩展到256太字节.Memcached的; 它不是关系型的,可以无限期地水平扩展AFAIK. (3认同)

Gor*_*ran 10

我一直在使用db4o这是一个OODB,它解决了大多数列出的缺点:

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

我感兴趣的专业人士是:

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

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