为什么面向对象的数据库不普及呢?

07-04-27 boby2046
         

本人是一名大三的学生,近来迷上了J道,吸收了很多知识,
觉得中国的软件为什么发展这么慢.也有仔细思量..
还有就是现在主流的三层架构或者是多层架构,而瓶颈就在于数据库的性能
跟不上需求,换句话说,也就是数据库的设计拖了现在软件的后腿.
所以就郁闷,为什么OO和关系型数据库按照两个截然不同的理念可以并存
而不去使用面向对象的数据库呢?
我自己有些见解,不知道是否正确:
1.关系型数据库的设计接近于计算机硬件,使得关系型比面向对象的数据库性能要好得多.
2.现在使用关系型数据库的企业太多,更改数据库会使成本上升.
3.数据库开发厂商致力于纯XML,整合SOA,忽略了这方面的需求

真希望哪天能有厂商站出来跟关系型数据库进行竞争,就想当初的C挑战Fortran,Pascal,C++挑战C,JAVA挑战C++一样...得益的是我们众多的开发工作者啊,我也没有针对关系型数据库,毕竟存在就是合理这句话还不是盖的.只是希望能像ROR的出现一样提高我们的开发效率,可能也是等N年之后的事情了.

鄙人不懂言语,但系言在肺腑,希望各位指教指教,不胜感激!
[该贴被boby2046于2007年04月27日 19:48修改过]
[该贴被boby2046于2007年04月27日 19:48修改过]

         

1
banq
2007-05-09 16:52

我认为有下面原因:

1. 从分析设计方法来讲,对象化的分析方法比数据化分析方法更自然方便,而且这两种方式存在不匹配,不能互相替代,所以,就存在0和1的取舍问题,很难调和在一起.对象数据库很难让人明白,到底是对象呢还是数据库呢?

2.使用对象化的中间件在性能扩展上比较廉价,可以防止单点风险和进行集群,这是分布式计算发展,而围绕数据库容易走上集中式中大型机,这是过去cobol/db2等形式,已经存在严重瓶颈.

3.关键我们需要重新看待对象和数据库关系,数据库只是对象存储的地方,一个技术介质,几乎和业务概念一点关系没有,精通业务流程的人以前必须了解数据库这些具体技术才能做出软件,而现在和将来就不需要了,他只要用对象表达他的分析概念就可以了.

gougou3250
2007-05-11 17:24

以oo为中心或者以db为中心,其实都有各自存在的理由.
想法不要太极端
业务只是对数据的整合而已,当面对不同的层面,使用不同的思想去考虑
不要为了oo而oo

GuaGuaGua
2007-05-11 18:12

瞎猜想, oo数据库还以另种形式会死灰复燃的.

关系数据库的成功主要是因为目前商业用途上的成功.

oo数据库其实是最接近实现semantic web存储介质的可能.建议楼主可以朝那个方向走.
semantic web虽然概念早在十多年前就提出了,但是目前仍然是全世界大学研究的课题.我在大学的时候,导师是这方面的世界级泰斗.我也曾为他开发过部分引擎的代码.

但是搞这方面的东西很痛苦,ontology,reasoning, a-box,b-box....相比还是开发企业系统简单:D

我的意思是,被冷落甚至淘汰的技术不一定是不好的技术.譬如google和搜索技术.





boby2046
2007-05-13 12:31

谢谢各位对我的疑问的关注.

回banq:
使用数据库的目的是在于持久化存储,这点我是承认的,但目前很多的设计也把业务上的一些逻辑掺杂到数据库设计中去了,虽然我们可以按照OO的设计思想去绕开这些问题,但并不是所有的遗留系统都像我们想象中那样的.一些习惯于过程式思考的程序员遗留下来就会跟我们的OO建模有所冲突,国内的一些项目的频频返工的原因可能在此.

然后探讨一下中间件的成本问题,的确目前的情况下中间件是占有很高的伸缩性和可重用性,节省了很多的成本,用OO的思想进行持久化不是更符合我们的思维吗?关系型数据库我相信是中间过渡的产物,按照多层结构我们应该把数据库设计的重任退到了ORM层实现,这对ORM的框架产生了依赖,相当大的性能取决于框架本身甚至是DAO上的性能优化而不是对数据库的设计进行一些设置来实现,这也是banq振臂高呼数据库时代已经终结的原因吧.

但我相信即使现状如此也不一定说数据库的时代不会再来临,从Ajax上可以看到,oo+数据库的兴起还是有可能的,问题是商业化,也就是大型厂商的推动是很重要的,不然没有那个项目能冒这个险.

4Go 1 2 3 4 下一页