存储时代:LINQ存储过程的前世今生
要说LINQ存储过程的设计,追本溯源,就一定要从存储过程本身说起。作为一个存放在数据库中的脚本,存储究竟扮演了一个什么样的角色呢?且听笔者细细道来。
一、何谓存储过程?
存储过程者,乃是存放在数据库中的一个脚本也。具体地说,存储过程是保存起来的、可以接受或返回用户提供的参数的T-SQL语句的集合。使用存储过程最基本的好处是,可以将多个SQL语句打包在一起作为一个组来执行,如果在应用程序中恰当地使用存储过程就可以提高应用程序的效率。
二、存储过程之优点
1. 存储过程通常可以为系统带来性能改善,因为数据库可以优化该过程所使用的数据访问计划,并能为后续的重用实现高速缓存。
2. 存储过程可以在数据库内部得到单独的保护。管理员可以授予客户端执行存储过程的权限,而不赋予它访问底层表的权限。
3. 存储过程可以使得维护更加方便,因为通常修改存储过程要比更改已部署的组件内部硬编码的代码中包含的SQL语句更简单。但是随着存储过程实现的业务逻辑的增加,这一优点将有所减弱。
4. 存储过程在底层数据库模式的基础上增加了额外的抽象层。存储过程的客户端被隔离在存储过程和底层模式的实现细节之外。
5. 存储过程可以减少网络流量。SQL语句可以批量执行,应用程序不必发送多个SQL请求。
三、存储过程之缺点
在有些情况下仍然不推荐使用存储过程,或者使用存储过程不可行。
1.在应用程序涉及大量的业务逻辑和处理时,如果完全用存储过程实现业务逻辑,就会给服务器带来过多的负荷。这种类型的处理例子包括数据传输、数据遍历、数据转换以及密集的计算操作。应该将这一类型的处理转移到业务过程或者数据访问逻辑组件中,它们比数据库服务器更具可伸缩性。
2. 不要将所有业务逻辑都放到存储过程中,否则当需要在T-SQL中修改业务逻辑时,将影响应用程序的维护和灵活性。例如,支持多个关系数据库管理系统的ISV的应用程序不必为每个系统维护独立的存储过程。
3. 渗编写和维护存储过程在大多数情况下是一项并非所有开发人员都拥有的专门技能。这一情况可能会给项目开发计划引入瓶颈。
四、LIINQ之优点
LINQ技术是Visual Studio 2008和.NET框架3.5中一项突破性创新,它在对象领域与数据领域架起了一座桥梁。此外,LINQ查询功能直接可以嵌入到.NET框架3.5所支持的编程语言中。归纳来看,其具有如下优势:查询语法简单,易于书写;语法错误及查询数据的类型更加安全;LINQ存储过程提供了较强的过滤、排序及分组等处理能力;易于处理多数据源和多数据格式数据。
五、LINQ时代存储过程仍不可缺少