ORM框架和数据库对系统性能影响的比较

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

请彭老师和广大道友指点一二,拜谢!

[该贴被leonshine于2008-04-14 14:58修改过]

[该贴被leonshine于2008-04-14 14:59修改过]

[该贴被leonshine于2008-04-14 15:00修改过]

                   

wlmouse
2008-04-14 17:15
ORM在SQL优化方面,当然比纯SQL语言要差。但是ORM框架的性能可以靠缓存提高。以Hibernate来说,二级缓存和查询缓存可以极大缓解数据库的查询压力。灵活使用缓存,可以让系统的性能有极大提升。

从页面、到应用层、持久化,缓存只要设计得合理,甚至比纯SQL还要快。毕竟对象缓存在本机内存里,无论如何也比从数据库中拿快。

还有,你说的数据库优化到底是怎么优化?

banq
2008-04-15 10:00
猫说得很对。楼主的这些总监恐怕要与时俱进,及时进行知识更新,我已经在jdon写了大篇文章倡导大家抛弃数据库思维。

>屏蔽了数据库,那怎么优化数据库,不优化数据库,怎么保证系统的性能?

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

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

korpton
2008-04-17 15:17
在php上我用的较多,曾经有一会大牛是这么讲的:

现在的php已经够了,慢在访问数据库,所以不管你怎么优化都很难从一个层次上提升访问速度.

道理相同:

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

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

banq
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修改过]

猜你喜欢
2Go 1 2 下一页