关于oop:对象数据库的优缺点是什么?

关于oop:对象数据库的优缺点是什么?

What are the pros and cons of object databases?

有关对象关系映射器的信息很多,如何最好地避免阻抗不匹配,如果要使用对象数据库,所有这些似乎都是有争议的。 我的问题是为什么不更频繁地使用它? 是由于性能原因还是由于对象数据库导致您的数据成为应用程序专有的,还是由于其他原因?


  • 熟悉度。数据库管理员了解关系概念。对象,不是很多。
  • 性能。关系数据库已被证明可以更好地扩展。
  • 到期。 SQL是一种功能强大且经过长期发展的语言。
  • 供应商支持。与OODBMS相比,您可以在更多的第一方(SQL服务器)和第三方(管理界面,映射以及其他类型的集成)工具之间进行选择。

自然,开发人员对面向对象的模型更为熟悉,并且,正如您所指出的那样,它将避免使用ORM之一。但是到目前为止,关系模型已被证明是更可行的选择。

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


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

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

我感兴趣的专业人士是:

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

我同意-OODB还有很长的路要走,但是他们正在走。 OODB可以更好地解决领域问题,


它与性能无关。 也就是说,基本上所有应用程序都可以通过OODB更好地运行。 但这也会使许多DBA失去工作/必须学习新技术。 甚至会有更多的人无法纠正数据中的错误。 这不太可能使OODB在成熟的公司中流行。 加文(Gavin)似乎一无所知,最好的连结是柯克(Kirk)


对对象数据库的一个反对意见是,它在数据和您的代码之间建立了紧密的联系。对于某些应用程序,这可能是好的,但对于其他应用程序则不是。关系数据库为您提供的一个好处是可以在数据上放置许多视图。

Ted Neward对此进行了解释,并且有关OODBMS的更多内容要比这更好。


缺点:

  • 不能被以下程序使用
    也不要使用相同的框架
    用于访问数据存储,
    在整个过程中使用起来更加困难
    企业。

  • 可供在线使用的资源较少
    非基于SQL的数据库

  • 跨数据库不兼容
    类型(不能交换到其他数据库
    提供者而不更改所有
    码)

  • 版本控制可能有点
    子我想添加一个新的
    对象的属性不完全是
    就像将新列添加到
    表。


jodonnel,我看不到对象数据库的使用如何将应用程序代码耦合到数据。您仍然可以通过使用存储库模式从OODB中提取应用程序,如果设计合理,则可以替换为ORM支持的SQL数据库。

对于OO应用程序,OO数据库将为持久对象提供更自然的契合度。

将数据绑定到域模型可能是正确的,但这才是关键!

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

因此,一个大优点是OODB与大多数现代的企业级面向对象的软件应用程序的设计方式匹配,因此无需花费额外的精力来使用不同的(关系)设计来设计数据层。构建和维护成本更低,并且在许多情况下,它们通常具有更高的性能。

缺点,我认为普遍缺乏成熟度和采用性。


S?ren

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


推荐阅读

    linux命令大全数据库?

    linux命令大全数据库?,服务,系统,平台,状态,软件,通用,环境,数据,神州,地址,

    linux上数据库的命令?

    linux上数据库的命令?,服务,系统,信息,地址,命令,密码,工具,管理,数据,单位,

    linux命令dm数据库?

    linux命令dm数据库?,地址,软件,时间,设备,名字,服务,位置,名称,公司,命令,lin

    linux无效对象的命令?

    linux无效对象的命令?,软件,系统,单位,网络,管理,术语,检测,电脑,环境,风险,l

    linux存储数据命令?

    linux存储数据命令?,系统,管理,数据,设备,情况,地址,工作,命令,服务,平台,Lin

    linux数据库查找命令?

    linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,

    linux查看性能的命令?

    linux查看性能的命令?,系统,情况,信息,数据,状态,指标,第一,分析,命令,宏观,l

    linux数据库同步命令?

    linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,D

    linux建立数据库命令?

    linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服

    linux命令进数据库?

    linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,

    linux清空表数据命令?

    linux清空表数据命令?,系统,数据,软件,名称,不了,命令,文件,电脑,地址,位置,L

    linux拷贝数据命令?

    linux拷贝数据命令?,系统,地址,文件,数据,命令,目录,服务,基本知识,项目,密

    linux数据库检查命令?

    linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

    linux命令进去数据库?

    linux命令进去数据库?,地址,服务,名字,系统,数据库,工具,基础,工作,管理,网

    linux数据库基础命令?

    linux数据库基础命令?,地址,工作,基础,系统,命令,信息,情况,工具,设备,目录,l

    linux性能测试命令?

    linux性能测试命令?,数据,系统,工具,标准,设备,地址,情况,基础,网络,环境,如

    linux数据共享命令?

    linux数据共享命令?,情况,系统,工具,网络,数据,软件,发行,设备,命令,文件,Lin

    命令发送数据linux?

    命令发送数据linux?,数据,地址,时间,工具,系统,设计,工作,网络,命令,综合,lin

    数据库导出命令linux?

    数据库导出命令linux?,数据,系统,名称,密码,软件,服务,情况,网上,工具,文件,L

    linux命令清空数据?

    linux命令清空数据?,服务,数据,名称,不了,百度,管理,档案,产品,命令,文件,删