浅析事务存储过程在金融信息系统中的应用

来源:岁月联盟 作者:姚世明 时间:2013-02-15
  论文关键词:金融信息化 事务存储过程
  论文摘要:金融信息系统大多属于服务性行业,这类行业对系统的响应速度和安全性要求极高。因此,研究提高系统响应速度和安全性的技术,对提高软件开发水平有重要的意义。本文针对事务存储过程在金融系统中的应用作了阐述,并用实例说明了利用存储过程简单化解决复杂事务问题的思路。
  一、引言
  金融信息系统的建设要求极高,既要高度的安全性,又要尽可能提高响应的速度,涉及的操作多且复杂。从系统的易于开发和易于维护的观点出发,选择windows平台,使用.NET和SQL Server数据库是一个不错的选择。但是如何以高效的程序实现其中的复杂操作是系统开发中的一个较难的内容,笔者就此难点进行一些探讨。
    二、方案思考
    在金融业务中存在大量复杂的操作,典型的如ATM机的取款、银行的转账操作等。
    (一)以转账操作来说,每一次操作都需要完成如下的步骤:
    1.判断转账的源账号中是否有足够的转出金额。
    2.如有足够的金额,从源账号中减去转账的金额,往目标账号中增加转账的金额。
    3.向数据表中写人一条转账记录。
    以上步骤具有典型的事务特征。如果任何一步操作不能够完成,将造成金融机构或用户的巨大损失。那么一个问题就提出来了,在哪个地方实现该事务操作,是在程序代码中,还是在数据库的存储过程中?
    (二)两种方法相比较之下,使用存储过程明显具有以下优点:
    1.允许模块化编程、更便于分工创建好存储过程后,将其存放在数据库中,可以在程序中多次调用。并且,对数据库的任何更新或更改都隐藏在存储过程之中,可以由精通数据库编程的开发人员独立完成。
  2.更快的执行速度
    如果一个程序需要大量Transact-SQL代码,或需要被反复执行,那么使用存储过程的速度会快很多。存储过程在创建时被解析和优化,并且存储过程在第一次执行之后,便驻留在内存中供继续使用。而从客户端传来的重复语句在每次执行时都需要做编译和优化。
  3.减少网络流量
    一个需要数百行Transact-SQL语句的操作有时只需要执行一条调用存储过程的语句就可以了。在网络上传送一个调用而不是几百行代码,可以减少网络流量,提高响应速度。
    4.增强数据库的安全性

    一个用户可能没有执行存储过程中语句的权限,但是可以被赋予执行存储过程的权限,这就增强了数据库的安全性。另外,可以通过存储过程来隐藏用户可用的数据和数据操作中涉及的商业规则,提高了数据安全级别。
    下面我们就以关键的存储过程为例来进行探讨。
    三、核心代码
    我们以转账操作为例,先来看操作所要涉及的表格和表格的主要字段。

图片内容