有没有人能想到不使用面向对象数据库管理系统作为网站后端的一些好理由?

10

假设你在编写一种网络应用程序,比如一个简单的图片分享网站,用户可以贡献内容。

有多少个充分的理由让你不选用面向对象数据库(如db4o)?


1
吸引我使用面向对象数据库管理系统的是其易于设置。与规划数据库模式、设置数据库、决定使用哪种ORM、设置ORM等繁琐步骤不同,我只需编写我的对象并自动持久化它们。 - Jonathan
11个回答

7

如果你只需要通过对象访问数据,那么OODBMS更好。如果你的解决方案需要额外的数据通道(例如:临时查询、报告、其他需要访问数据但无法使用你的对象的应用程序),那么传统的RDBMS系统更好。

注意:OODBMS在这个领域已经取得了很大的进展。


我有一个策略。所有的数据对象都将在一个名为“Model”的单独类库中。其他项目,包括主Web项目,将引用此项目。这样,就有一个集中维护模式的中心位置。(我可以使用接口等来维护兼容性)。 - Jonathan
对于临时查询和报告,面向对象数据库管理系统一般比任何外部应用程序优越得多(至少是 Gemstone)。 - Stephan Eggermont
1
我的大部分客户都有会编写 SQL Server 报告的人员(他们知道如何编写 SQL 查询,以及如何使用特定的设计工具,如 ActiveReports 或 Crystal Reports,并且知道如何运行和部署)。Gemstone 可能很棒,但这些人都不知道如何使用它。 - MusiGenesis
1
如果他们足够聪明以处理SQL连接,那么学习Smalltalk对他们来说不会有困难。 - Stephan Eggermont
2
@Stephan:我觉得你是在开玩笑吧? - MusiGenesis

4

我不知道你的计划有多大,但是招聘或借助经验丰富、技能娴熟的人员将影响我的决定,以及掌握关于DB所有内部和外部的广泛知识。

Oracle或MySQL都有缺陷,但是如果你遇到问题,很可能已经有其他100个人遇到过同样的问题并告诉你如何解决它。


4
我认为如果您正在考虑类似db4o这样的东西,那么它们似乎没有企业级网站的示例,主要用于嵌入式应用程序。关于此,请参见我在另一篇帖子中的回答。(Example websites using db4o)技术上没有任何问题,只是似乎缺少采用。但是,为了开发速度、维护和设计灵活性,OODB是非常无与伦比的。如有需要,可以通过与关系型后端同步来进行重量级报告等操作,我知道db4o支持此功能。

3

这可能有些牵强,但是用 Joel 的话来说,要为成功做好规划。如果您的应用程序变得非常受欢迎,该怎么办?

例如,如果您将应用程序托管在自己的计算机上,但决定转向正式的托管站点或甚至服务器集群。他们支持对象数据库(OODB)和MySQL的机会有多大?


1
在使用db4o时,您不需要主机支持它。它不是一个服务器! - Goran
小心中等信任环境...但是如果你有VPS、Colo或Dedi服务器,那么可以使用db4o! - bbqchickenrobot

2

我只建议在应用程序设计真正,真正地重度面向对象,并且复杂性需要时才使用OODBMS。一个照片分享网站似乎不太重视OO方面,所以我不认为选择db4o有意义。

但是,如果你只是想通过一个宠物项目了解如何使用OODBMS的内部和外部,那么使用一个是可以的。


1
另一个很好的理由是相对持久性。Db40对于它所做的事情来说是一个很好的产品,但它的用户群很小,不太可能比SQL Server更耐用。
当然,我曾经也说过Java不可能存活下来。

1

数据大小(如果我处理数百万行数据,我会坚持我所知道的)

报告(在规范化数据库中通常已经很困难了,在面向对象的数据库中更加糟糕)

专业知识/经验的可用性(关系型数据库明显有更多的拥护者)

大量的ETL(大多数人都使用平面文件导入和导出,除非你正在获取/发送XML,否则你只是在谈论普通的表格)

这些都不像是你的项目的障碍


0

就我个人而言,有数据的地方就需要报告。

没有面向对象数据库(OODBs)能够为您的数据提供适当的存储模型,以便您的报告应用程序可以使用。


Gemstone是一个分布式Smalltalk镜像。对于报告来说,没有比它更好的存储模型了。 - Stephan Eggermont
1
你的陈述并没有太多意义:要进行报告,必须查询数据存储。只要你能做到这一点,就可以报告其中的内容。无论是关系型、对象、XML、文档还是平面文件都没关系。 - Phillip B Oldham

0

当你只有一辆脚踏车时,需要的是速度。

场景包括数据捕获(例如日志记录),在事件之后,捕获的数据通常会在以后的阶段进行处理,并且可能会被分解为其对象组成部分。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接