存儲(chǔ)過(guò)程簡(jiǎn)單化解決事務(wù)論文
時(shí)間:2022-06-28 11:30:00
導(dǎo)語(yǔ):存儲(chǔ)過(guò)程簡(jiǎn)單化解決事務(wù)論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢(xún)客服老師,歡迎參考。
論文摘要:金融信息系統(tǒng)大多屬于服務(wù)性行業(yè),這類(lèi)行業(yè)對(duì)系統(tǒng)的響應(yīng)速度和安全性要求極高。因此,研究提高系統(tǒng)響應(yīng)速度和安全性的技術(shù),對(duì)提高軟件開(kāi)發(fā)水平有重要的意義。本文針對(duì)事務(wù)存儲(chǔ)過(guò)程在金融系統(tǒng)中的應(yīng)用作了闡述,并用實(shí)例說(shuō)明了利用存儲(chǔ)過(guò)程簡(jiǎn)單化解決復(fù)雜事務(wù)問(wèn)題的思路。
論文關(guān)鍵詞:金融信息化事務(wù)存儲(chǔ)過(guò)程
一、引言
金融信息系統(tǒng)的建設(shè)要求極高,既要高度的安全性,又要盡可能提高響應(yīng)的速度,涉及的操作多且復(fù)雜。從系統(tǒng)的易于開(kāi)發(fā)和易于維護(hù)的觀點(diǎn)出發(fā),選擇windows平臺(tái),使用.NET和SQLServer數(shù)據(jù)庫(kù)是一個(gè)不錯(cuò)的選擇。但是如何以高效的程序?qū)崿F(xiàn)其中的復(fù)雜操作是系統(tǒng)開(kāi)發(fā)中的一個(gè)較難的內(nèi)容,筆者就此難點(diǎn)進(jìn)行一些探討。
二、方案思考
在金融業(yè)務(wù)中存在大量復(fù)雜的操作,典型的如ATM機(jī)的取款、銀行的轉(zhuǎn)賬操作等。
(一)以轉(zhuǎn)賬操作來(lái)說(shuō),每一次操作都需要完成如下的步驟:
1.判斷轉(zhuǎn)賬的源賬號(hào)中是否有足夠的轉(zhuǎn)出金額。
2.如有足夠的金額,從源賬號(hào)中減去轉(zhuǎn)賬的金額,往目標(biāo)賬號(hào)中增加轉(zhuǎn)賬的金額。
3.向數(shù)據(jù)表中寫(xiě)人一條轉(zhuǎn)賬記錄。
以上步驟具有典型的事務(wù)特征。如果任何一步操作不能夠完成,將造成金融機(jī)構(gòu)或用戶(hù)的巨大損失。那么一個(gè)問(wèn)題就提出來(lái)了,在哪個(gè)地方實(shí)現(xiàn)該事務(wù)操作,是在程序代碼中,還是在數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程中?
(二)兩種方法相比較之下,使用存儲(chǔ)過(guò)程明顯具有以下優(yōu)點(diǎn):
1.允許模塊化編程、更便于分工創(chuàng)建好存儲(chǔ)過(guò)程后,將其存放在數(shù)據(jù)庫(kù)中,可以在程序中多次調(diào)用。并且,對(duì)數(shù)據(jù)庫(kù)的任何更新或更改都隱藏在存儲(chǔ)過(guò)程之中,可以由精通數(shù)據(jù)庫(kù)編程的開(kāi)發(fā)人員獨(dú)立完成。
2.更快的執(zhí)行速度
如果一個(gè)程序需要大量Transact-SQL代碼,或需要被反復(fù)執(zhí)行,那么使用存儲(chǔ)過(guò)程的速度會(huì)快很多。存儲(chǔ)過(guò)程在創(chuàng)建時(shí)被解析和優(yōu)化,并且存儲(chǔ)過(guò)程在第一次執(zhí)行之后,便駐留在內(nèi)存中供繼續(xù)使用。而從客戶(hù)端傳來(lái)的重復(fù)語(yǔ)句在每次執(zhí)行時(shí)都需要做編譯和優(yōu)化。
3.減少網(wǎng)絡(luò)流量
一個(gè)需要數(shù)百行Transact-SQL語(yǔ)句的操作有時(shí)只需要執(zhí)行一條調(diào)用存儲(chǔ)過(guò)程的語(yǔ)句就可以了。在網(wǎng)絡(luò)上傳送一個(gè)調(diào)用而不是幾百行代碼,可以減少網(wǎng)絡(luò)流量,提高響應(yīng)速度。
4.增強(qiáng)數(shù)據(jù)庫(kù)的安全性
一個(gè)用戶(hù)可能沒(méi)有執(zhí)行存儲(chǔ)過(guò)程中語(yǔ)句的權(quán)限,但是可以被賦予執(zhí)行存儲(chǔ)過(guò)程的權(quán)限,這就增強(qiáng)了數(shù)據(jù)庫(kù)的安全性。另外,可以通過(guò)存儲(chǔ)過(guò)程來(lái)隱藏用戶(hù)可用的數(shù)據(jù)和數(shù)據(jù)操作中涉及的商業(yè)規(guī)則,提高了數(shù)據(jù)安全級(jí)別。
下面我們就以關(guān)鍵的存儲(chǔ)過(guò)程為例來(lái)進(jìn)行探討。
三、核心代碼
我們以轉(zhuǎn)賬操作為例,先來(lái)看操作所要涉及的表格和表格的主要字段。
存儲(chǔ)過(guò)程由數(shù)據(jù)庫(kù)開(kāi)發(fā)人員完成,可以在存儲(chǔ)過(guò)程的參數(shù)命名時(shí)采用和數(shù)據(jù)庫(kù)表中字段命名完全不同的命名方式。從程序員開(kāi)始對(duì)最底層的字段名等信息進(jìn)行保密,降低數(shù)據(jù)庫(kù)被SQL注人攻擊的風(fēng)險(xiǎn)。
調(diào)用該存儲(chǔ)的主要代碼:
通過(guò)result獲得了存儲(chǔ)過(guò)程返回的結(jié)果,這一方法提高了程序的可測(cè)性。因?yàn)橹挥薪?jīng)過(guò)嚴(yán)格的測(cè)試,軟件系統(tǒng)才會(huì)具有較高的可靠性和穩(wěn)定性。為了提高可測(cè)性,在代碼書(shū)寫(xiě)時(shí)就必須要考慮代碼的可測(cè)性,本文不做詳解。
四、結(jié)束語(yǔ)
設(shè)計(jì)具有高可靠性、高響應(yīng)速度的軟件系統(tǒng)是一件很難的事情。從數(shù)據(jù)庫(kù)設(shè)計(jì)、系統(tǒng)的架構(gòu)設(shè)計(jì)到存儲(chǔ)過(guò)程設(shè)計(jì)和代碼的編寫(xiě),每個(gè)環(huán)節(jié)都惜惜相關(guān)。在設(shè)計(jì)過(guò)程中充分地考慮存儲(chǔ)過(guò)程的應(yīng)用,會(huì)給軟了設(shè)計(jì)帶來(lái)極大的便利,從而大大提高設(shè)計(jì)效率。