我不知道我的标题是否表达得准确,我只是想说: 
我是真诚的、热烈的赞成使用存储过程来进行一些应用的开发, 
尤其是对大量的数据进行大量的提取和对记录数据进行复杂的集合运算,存储过程对实现这样的业务逻辑有这无比的性能优势, 
有些人说调试是个问题,但现在有很多不错的工具可以对存储过程进行很方便的调试,如果再抛却数据库移植的考虑和代价, 
那存储过程的优势已经有很多贴子讨论过,就不必再多说了。 但有个问题,随着三层及多层结构的出现,更有.net和J2ee的逐渐流行, 
其极力主张将应用逻辑放在应用层,更有甚者,他们纯粹的把数据库作为一个存储数据的地方,能做到只用一个参数文件进行培植就可以实现数据库的移植(这样的系统我见过),我就很难想象这样的系统当用户量和数据量很大的时候系统能正常运行吗?用户可以接受它的效率吗?有没有如此经验的朋友告诉我答案? 我就听说J2EE的CMP里面不再支持调用存储过程(BMP可以,我不熟悉J2EE), 那么面对J2EE和.net的多层架构,数据库的后台开发该何去何从呢? 其实不但是存储过程,还有很多的数据库特性,如ORACLE中的各种触发器, 
序列,分区表,聚合存储,多种类型的索引(有些根本就是ORACLE独有的),物化视图等, 
这些东西若使用得当可以极大改善应用系统的性能, 而J2EE的标准是和这些有矛盾的吗? 
我该做何选择? 
这也是困惑我很久的问题!

解决方案 »

  1.   

    我相信我的选折没错,将数据库后台开发进行到底!!!!!
    j2ee虽然是多层结构,但中间层要提高数据访问效率,就不得不依靠我们的后台程序。
    并且我们后台做得越完善,中间层就越精简,更容易维护。这个趋势我相信5年来都不会变!
      

  2.   

    to oraclelhf(oracle):
    既然你的后台程序已经做得如此完善,那请问,你中间层存在的意义是什么???
    请将三层的好处列出然后逐一分析。
      

  3.   

    顶一下:如果从技术层面去讨论这个问题,肯定是公说公有理,婆说婆有理,但是, 
    技术的发展源动力是市场,因为市场的缘故才有了标准,J2EE作为企业级的开发标准,正越来越多被计算机硬件和软件厂商所支持,作为J2EE的大力支持者,ORACLE也会不断根据此标准来调整自己的技术发展策略,那这对我们对ORACLE技术感兴趣的人来讲,就不是无所谓的东西了, 
    讨论下这个问题,也许ORACLE再有新的技术推出,我们不会感到太多的迷惘和无奈了吧? 
      

  4.   

    假如我做一个大型的ERP系统,
    我的主张是将业务数据和统计数据分开,
    OLTP系统我采用J2EE架构来实现,
    但这样我的数据库里只是记录了业务数据,叫生产数据库,我再使用另一个数据库来做OLAP或DSS,
    实现一些复杂的统计和报表或提供决策支持,
    而这台数据库的数据是从生产数据库里面复制过来,使用快照或物化视图等。这样做的好处是:
    1、保证了J2EE实现所具有的所有优点
    2、复杂的统计和报表或查询同样有很高的性能。大家以为这样如何呢?
      

  5.   

    我们现在在开发电子商务方面的应用。前后台全部采用的是J2EE的架构。
    采用j2EE的好处是:性能有大的提高,包括并发性;代码复用;跨平台;根据经验,oracle虽然支持触发器,但一般建议不用,对性能影响很大。‘尤其是对大量的数据进行大量的提取和对记录数据进行复杂的集合运算,存储过程对实现这样的业务逻辑有这无比的性能优势’,这应该很成问题,如果是电信业务,你可以想象,他们还吃饭不?所以,这种情况一般就采用corba,在中间件中实现复杂、大规模的数据运算。你不用担心采用多层结构的性能问题,相反,性能肯定有大幅度的提高。关键是你要懂得如何使用这些技术,如何进行更好的分析、设计。假如项目失败,那不是技术失败,而是你失败了。
      

  6.   

    to  lemon223(oracle):使用存储过程可以影响他们吃饭?
    什么意思
      

  7.   

    本人去过一间日资公司面试,日本佬与瑞士人合作开发一夸erp系统.
    前端vb,vc,java  中间层pro*c,后台db  oracle
    当然以j2ee构架,java+oracle开发出erp是否性与比最好?  --不清楚
    oracle erp是结合了pro*c,c,java插件,你可以资询oracle中国公司oracle erp的架构是怎样?
      

  8.   

    个人观点:
    .net和J2ee提倡的是一种软件开发方法:模式化开发
    这种东西现在应该说还不是很成熟,只能解决大部分问题多层架构的server无非都是web service,他们只是在计算上有比较大的价值,在访问物理存储数据,大数据量cache等方面比db server差太多web service只是db server的client,client永远是client,他不可能取代后台