`
surefan
  • 浏览: 35590 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

关于将应用逻辑放在存储过程(PL/SQL)或应用层的选择

    博客分类:
  • Java
阅读更多

当今社会强调和谐,我们程序员也不能落后,IT行业经常存在这种和那种语言,这种方法与那种方法之争,其实我觉得这是没必要的,存在既有道理,任何事物都有它的适用的地方,没有最好的,只有最合适的,今天看了篇关于应用逻辑放在存储过程或应用层的讨论,总结了一下其中的观点,欢迎大家拍砖

存储过程:
1.编译后生成中间代码,该代码的执行效率远比客户端数据库访问快,但是大多数高级的数据库系统都有statement cache的,所以编译sql的花费没什么影响。但是执行存储过程要比直接执行sql花费更多(检查权限等),所以对于很简单的sql,存储过程没有什么优势。
2.使用的是服务器端游标,而客户端程序使用的是客户端游标,速度快
3.不需要象 J2EE 的程序那样要部署,适当的时候只需在后台更新,便于调试与维护
4.占用网络流量较少,如果在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。

应用层:
1.一般性的业务逻辑应该放在中间层,这对软件以后的技术扩展有很多好处,像网格技术,就是基于中间件技术的。
2、性能扩展性问题:随着系统访问量的增长,系统必须进行不断地升级扩展,特别对于大型系统而言,更重要的是性能可扩展性而不是局部的性能。J2EE等多层结构要解决的也是这方面的问题。处理逻辑如果全部放在存储过程里,所有的处理都在数据库服务器上进行,消耗的就是数据库服务器的CPU资源,大家知道数据库服务器由于需要较高的可靠性,通常选用的都是价格昂贵的服务器,对数据库服务器升级通常都花费很大。如果把处理逻辑放在中间层服务器上进行,中间层服务器一般都是小型的机器,价格便宜,而且中间层服务器的CPU通常主频比数据库服务器的速度还快(比如现在8CPU的数据库服务器主频只有800M,而双CPU的刀片式服务器CPU主频已经到2.8G了),而且对于多层架构,支持中间层服务器可以增加多台机器进行负载均衡,用中间层服务器即价格便宜,扩展空间也更大。
3、开发问题:存储过程还是过程型语言,其重用性比不上JAVA等面向对象语言开发。用JAVA开发的中间层服务可服用性更好(当然,前提是你采用面向对象设计)
4. 实际上这个只是要将访问数据库的接口统一,是用存储过程,还是EJB,没太大关系,也就是说,在三层结构中,单独设计出一个数据访问层,同样能实现这个目标。

总结:
1.存储过程是基于计算密集型的业务逻辑。如果是基于操作密集型的就不要用存储过程了
2.所有数据访问在应用层封装为数据访问层,在那里,如果SQL简单的话,直接用SQL;如果SQL复杂,或者数据交互多且中间数据最后不会用到,使用存储过程
3.(对于核心的算法,不变的东西放在前台程序中。对于容易改变的字典数据,接口逻辑和配置信息,可以放在后台用存储过程来完成。最大好处,也是最终目的是:源程序不改,只改后台存储过程就可以潇洒应付客户需求的改变。)这个不知道对不对


帖子地址:http://www.apub.org/doc/2006/03/11/09/36/51/13012.html 

分享到:
评论

相关推荐

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库管理、数据处理和业务逻辑实现更为高效。本书针对那些希望提升PL/SQL编程技能,设计和开发复杂数据库解决方案的...

    oracle 经典资料及PL/SQL 使用指南 英文版

    1. 数据库架构:Oracle数据库采用多层架构,包括物理存储层、逻辑存储层和用户接口层。了解这些层次有助于理解数据如何在系统中组织和访问。 2. 表空间与数据文件:Oracle使用表空间来存储数据库对象,如表、索引等...

    PL/SQL Developer v8.0.zip

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    PL/SQL学习教程,附笔记

    它扩展了SQL的功能,使得开发人员能够编写复杂的数据库应用程序,处理事务、实现业务逻辑和数据操作。在本教程中,我们将深入探讨PL/SQL的基础知识,包括其与SQL的关系、程序设计的基本结构和组成元素。 ### SQL与...

    PL/SQL程序设计

    PL/SQL是Oracle数据库系统中的核心组件,它允许开发者编写存储过程、函数、触发器等数据库级别的程序逻辑,从而提升应用程序的性能和可维护性。 本书首先会介绍PL/SQL的基础概念,包括变量声明、数据类型、流程控制...

    PL/SQL教程

    PL/SQL结合了SQL的强大数据操作功能与过程编程语言的特点,使得开发者能够创建复杂的业务逻辑和数据库应用程序。 在Oracle环境中,PL/SQL被广泛用于开发存储过程、函数、触发器、游标等数据库对象,从而提高数据库...

    PL_SQL Project.zip_exampleh93_pl/sql中的project_zip

    标题中的“PL_SQL Project.zip_exampleh93_pl/sql中的project_zip”表明这是一个关于PL/SQL项目的压缩文件,可能包含了与数据库编程相关的项目源代码或文档。"exampleh93"可能是该项目的一个特定版本或者示例编号,...

    PL/SQL Developer

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    oracle pl/sql 编程

    这部分内容将重点讲述如何创建和使用PL/SQL函数、存储过程以及触发器,这些是构建复杂数据库应用程序的关键组件。通过学习这些高级特性,读者将能够设计出更加灵活、高效的应用逻辑。 #### 第10章至第12章:高级...

    精通oracle 10g pl/sql编程

    Oracle 10g是甲骨文公司(Oracle Corporation)推出的数据库管理系统(DBMS)的一个重要版本,而PL/SQL是Oracle的存储过程语言,它是SQL语言的一个扩展,用于编写更为复杂和高效的数据操作程序。本书不仅适用于PL/...

    pl/sql developer 9 + 注册机

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    oracle pl/sql

    在IT领域,尤其是在数据库管理与开发中,Oracle PL/SQL是一种极为重要的编程语言,它将过程化编程元素融入了SQL语言之中,极大地提高了数据库应用程序的性能、灵活性和可维护性。根据给定文件的标题“oracle pl/sql...

    pl sql web design.rar_oracle_pl sql_pl/sql_web sql

    2. **Web SQL接口**:为了将PL/SQL与Web应用程序整合,我们需要一个中间层,通常是Oracle的Application Express (Apex) 或自定义的Java/PHP等后端服务。这些接口允许前端通过HTTP请求调用数据库中的PL/SQL过程,执行...

    PL/SQL 学习课程

    为期一周的培训,将带你逐步走进PL/SQL的世界,了解其核心概念和实际应用。作为公司内部的培训资料,这些文档很可能涵盖了从基础到高级的全面内容,旨在提升员工对数据库管理和程序开发的能力。 首先,...

    PL/SQL Developer8.04官网程序_keygen_汉化

    如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要...

    PL/SQL详解 从入门到精通 英文版

    3. **最佳实践**:提供关于如何编写高效、可靠且易于维护的PL/SQL代码的指导原则。 4. **实际案例**:通过具体的项目案例来展示如何应用所学知识解决实际问题。 #### 四、PL/SQL基础知识 ##### 4.1 变量和常量 - ...

    Web程序实现简易版PL/SQL和Execel表配置备份SQL语句

    PL/SQL是Oracle数据库系统中的过程化语言,它结合了SQL查询语言和传统的编程语言元素,常用于编写存储过程、触发器等数据库应用程序。Excel则是一种广泛使用的电子表格工具,非常适合进行数据的整理和分析。本项目...

Global site tag (gtag.js) - Google Analytics