存储时代:LINQ存储过程的前世今生

开发 后端
存储过程在数据库设计过程中是极其重要的,那么,在LINQ时代如何设计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时代存储过程仍不可缺少

尽管LINQ存储过程在新开发环境中具备了明显的优势,但其在处理复杂的数据库查询方面仍存在性能问题。另一方面,LINQ to SQL技术基于ADO.NET,传统SQL查询资源在一定时期内仍普遍存在。所以,LINQ对于传统SQL查询仍提供了兼容性支持。LINQ to SQL中仍可直接调用传统SQL查询语句及存储过程中即是证明。

因此,在实际开发中应当基于数据库资源实际,在目前情况下,把LINQ查询与适当的传统SQL查询相结合仍为推荐的数据库方案。

【编辑推荐】

  1. LINQ的演变及其对C#设计的影响
  2. LINQ查询表达式深入剖析
  3. LINQ查询的目的与实现手段
  4. 实例二:绑定到LINQ查询的结果
  5. LINQ——语言级集成查询入门指南
责任编辑:林琳 来源: ITPUB个人空间
相关推荐

2015-06-11 11:10:09

对象存储云存储

2022-09-14 21:15:44

互联网存储技术

2009-09-17 10:04:32

LINQ存储过程

2015-05-19 14:54:01

浪潮

2009-09-09 10:54:52

Linq存储过程返回

2009-09-15 11:08:01

LinQ调用存储过程

2020-07-28 08:00:03

存储数据技术

2009-09-17 11:32:52

LINQ调用存储过程

2009-09-17 15:22:38

LINQ to SQL

2009-09-17 15:51:39

Linq to sql

2009-09-17 10:40:23

linq存储过程

2011-08-23 09:52:31

CSS

2014-07-30 10:55:27

2015-11-18 14:14:11

OPNFVNFV

2009-09-11 15:12:26

LINQ执行存储过程

2016-11-08 19:19:06

2016-11-03 13:33:31

2014-07-15 10:31:07

asyncawait

2013-05-23 16:23:42

Windows Azu微软公有云

2014-07-21 12:57:25

诺基亚微软裁员
点赞
收藏

51CTO技术栈公众号