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

嘎子 面向对象数据库 2016-02-01 941 次浏览 , 16条评论

还是先声明一下版权,这个问题不是我的原创,而是从http://www.jdon.com/31659http://www.itpub.net/thread-860908-1-1.html上转载并整理的,算是半原创文章,我将也以问答的形式来表现这个问题的讨论过程。。。当然,其中不些灌水的我就去掉了。

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

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

鄙人不懂言语,但系言在肺腑,希望各位指教指教,不胜感激!

————————————————————————————————————————————

– 以上是原来的问题,最后我总结一下,当然不一定对。
– 第一:服务与支持。现成对象数据库产业发育的并不完整,商业支持和社区支持做的都不够好。所以商业化的,大型的应用不会优先选择对象数据库。也造成对象数据库的DBA并不常见,数据优化与管理难以进行。以对象数据库为基础的通用的数据解决方案不多。。。总之诸多不便。
– 第二:语言限制。对于大型的系统往往会涉及到多种设备与语言,都要访问相同的数据库,但是对象库都是要与面向对象的语言相互配合的,不利于大型系统的扩展。例如db4o,只支持.NET和java,如果系统中有苹果手机,或者其他一些只能用C或者非java和.net编程的设备就非常不便。
– 第三:设计模式问题。MVC是软件工程一种非常成熟并且实用好用的设计方法,而在对象数据中极大的模糊了软件设计中数据与视图及逻辑之间的距离。同时也造成数据层、逻辑层及视图层分工不是特别明确(这个也和服务与支持有关,现在很少有特别好的实践)。
– 
– 以上几个方面总结一下,觉得对象数据并没有发育完整,所以要我们更加努力的推广。

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: 为什么面向对象数据库不能普及?

相关主题

  • 翻译系列文章之–面向对象数据库(Object Oriented Databases)2016-01-30 翻译系列文章之–面向对象数据库(Object Oriented Databases) (0)
    面向对象数据库也被称为对象数据管理系统。对象数据库存储面向对象编程语言(如Smalltalk,C++,java等)中的对象而不仅仅像关系数据库那样存储整数,字 […]
  • db4o官方停止支持及面向对象数据库的一些感想2016-01-30 db4o官方停止支持及面向对象数据库的一些感想 (0)
    前一段时间试用了db4o,真心觉得不错,觉得面向对象的数据库没有一个系统的论坛,所以自己建立了这个网站来推广。但今天在打开db4o的官方网站时发现Versan […]
  • db4o的查询2016-02-01 db4o的查询 (0)
    在不同的应用中,数据库的增删改查操作的频率是不一样的,但一般情况下使用的更多的是查询操作。查询的简易程度、速度是查询的两个重要参数。 db4o查询的优势 […]
  • PostgreSQL和面向对象数据库有什么关系?2016-01-30 PostgreSQL和面向对象数据库有什么关系? (0)
    百科里面介绍PostgreSQL的第一句话是:PostgreSQL是自由的对象-关系数据库服务器(数据库管理系统)。我一直对对象-关系数据库的概念比较模糊,所 […]
  • 翻译系列文章之–面向对象数据库特征及用途(Object Database Use and Features)2016-02-01 翻译系列文章之–面向对象数据库特征及用途(Object Database Use and Features) (0)
    数据库为用户提供了数据持久化的功能,具体到对象数据库是指对象能够在不同的数据库进程之间进行存储。  产品特点  下面的列表是对 […]
  • db4o基础与入门2016-01-29 db4o基础与入门 (0)
    如果你使用的编程语言是java或者.net(笔者最常用的编程语言为C#,所以下文中以C#说事,请读者勿怪),那你有福气了,db4o可以说是一种最自然的数 […]

说点什么

16 评论 在 "为什么面向对象数据库不能普及?"

提醒
avatar
排序:   最新 | 最旧 | 得票最多
奇虎分享网
游客

不错哦,赞一个,求认识,求回访

中土生活红宝书
游客

DBA is much less than coder. The market scale may not big enough.

中土生活红宝书
游客

db4o还是有问题的,比如只有.net和java别的就访问不了了!
实际用起来还是有很多问题的!

中土生活红宝书
游客

“对象数据库生产不出来”?我也经常思考既然对象和关系存在严重阻抗,为什么软件界不生产对象数据库来解决这个问题,于是我google了一下,发现db4o–用java写就的纯面向对象数据库!研究了一翻,发现性能也还不错,这也是一个没有建立在拥有坚实理论之上的产品?

中土生活红宝书
游客

回复12楼:”主要原因:关系型数据库现在还可以给行业的龙头老大们带来巨额利润,所以他不可代替。”
我不同意这个观点,从软件发展历史来看,不存在哪家软件企业能以自家技术来主导市场走向,微软强大吧,但它不是领导者,在Java世界它甚至只是个傍观者.
软件行业不同于硬件,也不会有哪个软业企业,傻到以现有技术来争夺未来市场,那只有等死.
不可否认关系数据库产品给某些企业带来巨额利润,实际上这些利润的一部分,重新投入到了新产品的研发.
我想关系数据库没有成功,应是技术上的原因

中土生活红宝书
游客

主要原因:关系型数据库现在还可以给行业的龙头老大们带来巨额利润,所以他不可代替。即使对象数据库再成熟,没有钱砸到市场里去推,有谁会用呢?即使关系型数据库再不成熟,投上几亿美金做市场,你说他能推不出去么?
不过现在的情况对象数据库确实还不够成熟,尤其是需要进行批处理的情况下

中土生活红宝书
游客

今后技术更新会越来越快,楼主所期望的对象数据库替代关系数据库的那一天也许永远也不会来临。而且,ODB与RDB相比,技术上还远远没有成熟。十年前,OODB、ORDB等曾经被吹捧得很高,但是,他们的表现与实际相差甚远。当年关系数据库盛行对象扩展时,Informix收购了Illustra,DB2/oracle中都增加了对象扩展,实际效果都不理想。

中土生活红宝书
游客

我想,如果有了面向对象数据库,是否还要面向对象的硬件呢?

计算机本来是一堆2进制码,如果真有人做出面向对象的数据库,但是层层封装不知要消耗多少性能,将这些复杂的逻辑表示为算法恐怕极难。OO是开发上的思路,最终也要归结为2进制码,对于数据我想有现在的ORM足够了。

中土生活红宝书
游客

回复7楼:很久的帖子了,最近在javaeye里混着学groovy,做java的开发还是要学习不少技术啊..

嗯,chen8251(7楼)的意思我大概理解,就是面向对象的标准还没有形成,而关系型数据库的标准SQL已经深入人心了。但是,优秀成熟的OO模型,拥有一个大的社区与开发力量,如果结合XML的数据表达能力,那OO的数据库可以取代关系型,就不需要所谓的OR/Mapping了,所有一切都可以用对象进行处理,问题是迟迟没有这方面的标准,这是我很难理解的原因之一(关系数据库也开始拥抱纯XML了,DB2),绝对是比关系模型优秀的多,无论是聚合,组合等关系。可能是我用hibernate一些OR的东西多了,觉得真正的WEB开发应该从关系的层面中脱离出来,正如banq所说的数据库为中心的时代已经终结一样,程序员更应该关注业务逻辑,那持久化层剩下的任务只是做效率和性能的提高了。

的确。正如banq(楼主)分析的那样,用OO的思想是要有技术修为的,hibernate容易用,但是要做到真正运转起来顺畅,快速敏捷,那是不容易的,效率仍然还是最大的问题。

中土生活红宝书
游客

回复7楼:楼上切入角度深入,非常赞同。

补充如下:正是因为对于对象“不能从理论上推导出对象聚合,组合等关系,也就无法实现出支持这些关系的对象数据库.”,既然无法实现,也就没有必要发明对象数据库,也就没有必要使用数据库方式来实现对象关系,所以现在还是使用关系理论代为对象关系的持久。

中土生活红宝书
游客

这个话题很有意思,但我感觉大家都没有分析到点上,呵呵,斗胆说一声,大家别拍砖.

下面是我对”为什么面向对象的数据库不普及呢”的分析:第一:关系数据库的基础是关系理论,而关系理论发展到今天已相当完备.如关系理论中的关系范式(1NF-5NF) ,数据完整性约束等等.基于这些理论之上,有了SQL.

而所谓的对象数据库,并没有严格的理论支持.在解决”对象关系”理论之前,做不出对象数据库产品.比如我们都知道对象间的关系有:聚合,组合,关联,继承.但这些不是理论,而是实践结果.不能从理论上推导出这些关系,也就无法实现出支持这些关系的对象数据库.

中土生活红宝书
游客

回复4楼:
把逻辑掺杂到数据库中去,也就是一些存储过程吧.适当的使用一些存储过程来提高效率,不觉得有什么不好的.至于你对orm层的看法,我觉得可能是没怎么做过项目吧,非常片面的看法,用orm跟用数据库其实没什么区别,相反如果技术使用恰当,还能提高效率
从ajax上,我没看到任何跟OO与数据库有关的东西.ajax只是web页面局部刷新,跟你说的东西完全无关

中土生活红宝书
游客

回复3楼:
google了一下.这几个名词对于我这些入门级别的确实有点深奥,按我的理解,semantic web其实就是RSS一类的东西,整合了WEB的数据共享和XML严谨的数据结构,

之前曾经萌生过一个想法:中间件的相当红火,而操作系统,数据库这两类基础类软件在中国呈现弱势,几乎为外人所垄断,虽然不乏红旗的品牌,麒麟的出现无疑是使人痛心的.故有所构思能否用纯OO的设计理念设计一款可以与一些外商的数据库竞争的产品呢?做出中国的oracle来,我相信还是会有这一天的.

中土生活红宝书
游客

回复2楼:

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

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

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

中土生活红宝书
游客

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

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

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

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

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

中土生活红宝书
游客

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

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

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

wpDiscuz
回顶部