JiveJdon Community Forums
在线117人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » 项目工程开发经验谈
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 6 回复 / 1 页 [ ]  发表新帖子  回复该主题贴
leonshine

发表文章: 2
注册时间: 2008年01月30日 10:05
给他发消息
ORM框架和数据库对系统性能影响的比较 发表: 2008年04月14日 14:56 回复
面向对象分析问题,开发系统是程序员的福音,这点我很有同感,但是一直没有对ORM框架进行深入的研究。最近公司开发一个项目,由于技术总监是搞数据库的,所以一直在以数据库建表方式构架系统,大家知道,搞数据库表不可避免的要设计很多细节,功能细节,实现细节。目前项目进展非常缓慢。我在项目组一直倡导首先业务建模,但是没有引起足够重视,其中一个原因是技术总监怀疑ORM的性能问题,他说:“屏蔽了数据库,那怎么优化数据库,不优化数据库,怎么保证系统的性能?”不知道ORM对性能影响如何?数据库仅仅作为持久化的地方,没有数据库优化支持又会如何?我最近也在研究开源搜索引擎lucene,这可以直接精确检索数据,有了这个,也会降低对数据库性能优化要求。使用过lucene的道友也可以谈一下感想。

请彭老师和广大道友指点一二,拜谢!
[该贴被leonshine于2008-04-14 14:58修改过]
[该贴被leonshine于2008-04-14 14:59修改过]
[该贴被leonshine于2008-04-14 15:00修改过]
wlmouse

发表文章: 116
注册时间: 2006年11月09日 15:58
给他发消息
回复:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月14日 17:15 回复
ORM在SQL优化方面,当然比纯SQL语言要差。但是ORM框架的性能可以靠缓存提高。以Hibernate来说,二级缓存和查询缓存可以极大缓解数据库的查询压力。灵活使用缓存,可以让系统的性能有极大提升。
从页面、到应用层、持久化,缓存只要设计得合理,甚至比纯SQL还要快。毕竟对象缓存在本机内存里,无论如何也比从数据库中拿快。
还有,你说的数据库优化到底是怎么优化?
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月15日 10:00 回复
猫说得很对。楼主的这些总监恐怕要与时俱进,及时进行知识更新,我已经在jdon写了大篇文章倡导大家抛弃数据库思维。

>屏蔽了数据库,那怎么优化数据库,不优化数据库,怎么保证系统的性能?
屏蔽了数据库,那么数据库优化就基本不起作用,也就不需要了,问这个问题的人思维中有一个潜意识,软件系统都必须依靠数据库优化的,这其实是误区。

正如猫所说的,但我们将业务都变成一个业务对象,并且运行在内存中时,缓存和内存是对业务系统最好的优化,当然,优化数据库也会起到作用,不过这种作用的用处就不是很大,属于微调,不能上升为架构设计高度了。
korpton

发表文章: 12
注册时间: 2007年11月04日 18:33
给他发消息
re:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月17日 15:17 回复
在php上我用的较多,曾经有一会大牛是这么讲的:
现在的php已经够了,慢在访问数据库,所以不管你怎么优化都很难从一个层次上提升访问速度.

道理相同:
数据库的优化只是一个方面.不能全面的解决问题.很多的应用从是从缓存上去减小数据库的访问压力.

要是再抱着数据库不放的话,我看得饿死了... XD
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月18日 09:23 回复
前段时间我看到一篇大概是PHP创始人炮轰Java在Web上已经输了,看了标题,我就不用看内容,知道这是回光返照式的呼喊。

1998年我搞Perl,当时书籍都没有,搞PHP,也没有书籍,当然再搞Java,同样找不到Web方面的书籍。我对PHP超过Perl的易用性是肯定的,但是我一直强调,没有一个尺寸的裤子适合所有人,没有一种解决方案适合所有情况,易用的背面必然有所牺牲。

PHP存在大量过程化编程和混杂Html这些在Java世界中早就摒弃的做法(虽然近期也在改善),更重要的是:PHP系统的设计和性能都依赖数据库。

我已经在“对象和数据库阻抗”一文中说明数据库和OO的矛盾,如果你承认OO好处,那么就必要要落实OO,摒弃关系数据库分析和设计的做法,而PHP系统如果失去数据库,它就是一个空壳,所以看出,PHP+关系数据库已经处于上个世纪的架构。

对象和数据库阻抗
http://www.jdon.com/mda/oo-reltaion2.html

从性能上讲,分布式缓存能够提供强大的分布式处理,或者可以用云计算等这些新式的分布式计算方式来比喻,而依靠关系数据库,只能走集中式主机等60年代老路子。

当然,如果PHP能够摆脱对关系数据库依赖,象Java那样作为一个独立品格的语言能够从弯腰到站起来,那也一样会继续辉煌,可怕的是不思进取。


关于过程化编程方法的坏处,很多初学者可能没有体会,下面这个例子就是使用过程化没有任何设计的案例,结果程序出问题,作者自己都找不出来,打个比喻,你家里很乱,你自己都无法在家里找到丢失的东西,别人更不可能,只能叫几个人一起找,打人力规模站,编程也是这样,过程化编程一复杂就等于你家里乱了。


所以,作为一个程序员自己编出的程序自己都无法找到问题,无法修改,这个程序就是垃圾,过程化编程就是很容易造成这种垃圾程序,白学习,白干活。
http://www.jdon.com/jivejdon/thread/33877.html
[该贴被banq于2008-04-18 09:34修改过]
minehe

发表文章: 1
注册时间: 2008年04月25日 14:39
给他发消息
re:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月25日 14:50 回复
YY也要有一个限度么,楼上几位都夸大了ORM所谓缓存的作用,在一个高性能要求的系统里,依靠Hibernate这样的纯ORM作为DAC的核心只会拖累整体性能急剧下降。

如果是通过主键等这样键值来建立缓存尚可,此类问题在实际运用中却并不多见。
大多数应用都是通过复合查询条件甚至表间关联来搜索数据。

Hibernate就是100级缓存也无法解决SQL复合查询的缓存命中,道理很简单:
ORM的缓存不是万能的查询引擎,对于复合查询和多表联合的复杂情况,缓存是无能为力的,否则他就是一个Database而不是一个cache了。因此,对于一些常见的简单查询来说,缓存能极大提升你系统的反应,但是更多的是你需要针对客户的查询请求做出反应,这可不是一个缓存所能解决的。

ORM要解决的问题是结构模式问题,而数据库是要解决存储与查询问题,两者的目标和方向并不一致,因此在性能上,毫无疑问的是Database的长项;而以Hibernate为代表的ORM是把Database的数据模型转换为对象模型来访问,从而提高程序的可维护性、可扩展性,而不是提高程序的性能。

所以,如果你的项目只是搞搞OA或者一些并发性能要求不高的系统,ORM足够应付局面;反之,如果你的系统是一个高性能要求的、大并发量的系统,那么在时间关键的代码里Hibernate是无能为力的,目前的ORM技术来说都无能为力,表模式仍然是高速度的代表。
[该贴被minehe于2008-04-25 14:53修改过]
[该贴被minehe于2008-04-25 14:54修改过]
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:re:ORM框架和数据库对系统性能影响的比较 发表: 2008年04月26日 18:53 回复
楼上观点有只是从ORM和表结构单纯比较,没有看到对象性质介入其中,这个对象是业务对象,是根据当前业务系统建立的常用几个对象,比如销售系统,销售单是一个业务对象,一般企业系统最经常操作的是集中一段时间,比如当前一个月,所以,在这个月中的销售单将被缓存,这种缓存实际就是根据每个不同系统优化后的缓存,而表模式缓存则不可能有这种针对这个应用业务系统的优化。

多表查询改为多个对象在内存中进行组合,关系数据库的多表查询更有弱点,否则google就会用关系数据库多表查询来做搜索引擎,使用关系数据库做全文搜索简直是恶梦,而google创造的基于缓存的云计算说明了关系数据库实际是纸老虎一个,很简单当前这个论坛就是使用lucene而不是关系数据库实现搜索,而PHP架构的DisCuz!则使用关系数据库搜索,简直不能用。

我举例说明:关系数据库的多表查询是大而不当,具体业务应用又可以被缓存+对象组合替代,它的生存价值越来越小。
这个主题有 6 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam