日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

業(yè)務(wù)邏輯層與存儲(chǔ)過程優(yōu)缺點(diǎn)對(duì)比

 instl 2019-01-21

一,存儲(chǔ)過程

優(yōu)點(diǎn):

1,減少網(wǎng)絡(luò)帶寬,按理論存儲(chǔ)過程會(huì)提高性能.

2,無需重新編譯,更改后即可運(yùn)行,無需重新編譯代碼

3,由專門的dba寫的sql語句更高效

4,安全性,(在傳輸用戶名密碼時(shí),可防止注入等情況)

 

缺點(diǎn):

1,依賴于數(shù)據(jù)庫廠商,難以移植(當(dāng)一個(gè)小系統(tǒng)發(fā)展到大系統(tǒng)時(shí),對(duì)數(shù)據(jù)庫的要求也會(huì)發(fā)生改變)

2,業(yè)務(wù)邏輯大的時(shí)候,封裝性不夠,難調(diào)試難以維護(hù)

3,復(fù)雜的應(yīng)用用存儲(chǔ)過程來實(shí)現(xiàn),就把業(yè)務(wù)處理的負(fù)擔(dān)壓在數(shù)據(jù)庫服務(wù)器上了。沒有辦法通過中間層來靈活分擔(dān)負(fù)載和壓力.均衡負(fù)載等

 

結(jié):

存儲(chǔ)過程用于進(jìn)行一些簡單的業(yè)務(wù)邏輯以及數(shù)據(jù)傳送會(huì)更好維護(hù),但是在復(fù)雜應(yīng)用時(shí),應(yīng)交于中間層服務(wù)器處理.所以合適的時(shí)候用著合理的操作.




------------

------------

存儲(chǔ)過程:
1.編譯后生成中間代碼,該代碼的執(zhí)行效率遠(yuǎn)比客戶端數(shù)據(jù)庫訪問快,但是大多數(shù)高級(jí)的數(shù)據(jù)庫系統(tǒng)都有statement cache的,所以編譯sql的花費(fèi)沒什么影響。但是執(zhí)行存儲(chǔ)過程要比直接執(zhí)行sql花費(fèi)更多(檢查權(quán)限等),所以對(duì)于很簡單的sql,存儲(chǔ)過程沒有什么優(yōu)勢(shì)。
2.使用的是服務(wù)器端游標(biāo),而客戶端程序使用的是客戶端游標(biāo),速度快
3.不需要象 J2EE 的程序那樣要部署,適當(dāng)?shù)臅r(shí)候只需在后臺(tái)更新,便于調(diào)試與維護(hù)
4.占用網(wǎng)絡(luò)流量較少,如果在存儲(chǔ)過程中沒有多次數(shù)據(jù)交互,那么實(shí)際上網(wǎng)絡(luò)傳輸量和直接sql是一樣的。

應(yīng)用層:
1.一般性的業(yè)務(wù)邏輯應(yīng)該放在中間層,這對(duì)軟件以后的技術(shù)擴(kuò)展有很多好處,像網(wǎng)格技術(shù),就是基于中間件技術(shù)的。
2、性能擴(kuò)展性問題:隨著系統(tǒng)訪問量的增長,系統(tǒng)必須進(jìn)行不斷地升級(jí)擴(kuò)展,特別對(duì)于大型系統(tǒng)而言,更重要的是性能可擴(kuò)展性而不是局部的性能。J2EE等多層結(jié)構(gòu)要解決的也是這方面的問題。處理邏輯如果全部放在存儲(chǔ)過程里,所有的處理都在數(shù)據(jù)庫服務(wù)器上進(jìn)行,消耗的就是數(shù)據(jù)庫服務(wù)器的CPU資源,大家知道數(shù)據(jù)庫服務(wù)器由于需要較高的可靠性,通常選用的都是價(jià)格昂貴的服務(wù)器,對(duì)數(shù)據(jù)庫服務(wù)器升級(jí)通常都花費(fèi)很大。如果把處理邏輯放在中間層服務(wù)器上進(jìn)行,中間層服務(wù)器一般都是小型的機(jī)器,價(jià)格便宜,而且中間層服務(wù)器的CPU通常主頻比數(shù)據(jù)庫服務(wù)器的速度還快(比如現(xiàn)在8CPU的數(shù)據(jù)庫服務(wù)器主頻只有800M,而雙CPU的刀片式服務(wù)器CPU主頻已經(jīng)到2.8G了),而且對(duì)于多層架構(gòu),支持中間層服務(wù)器可以增加多臺(tái)機(jī)器進(jìn)行負(fù)載均衡,用中間層服務(wù)器即價(jià)格便宜,擴(kuò)展空間也更大。
3、開發(fā)問題:存儲(chǔ)過程還是過程型語言,其重用性比不上JAVA等面向?qū)ο笳Z言開發(fā)。用JAVA開發(fā)的中間層服務(wù)可服用性更好(當(dāng)然,前提是你采用面向?qū)ο笤O(shè)計(jì))
4. 實(shí)際上這個(gè)只是要將訪問數(shù)據(jù)庫的接口統(tǒng)一,是用存儲(chǔ)過程,還是EJB,沒太大關(guān)系,也就是說,在三層結(jié)構(gòu)中,單獨(dú)設(shè)計(jì)出一個(gè)數(shù)據(jù)訪問層,同樣能實(shí)現(xiàn)這個(gè)目標(biāo)。

總結(jié):
1.存儲(chǔ)過程是基于計(jì)算密集型的業(yè)務(wù)邏輯。如果是基于操作密集型的就不要用存儲(chǔ)過程了
2.所有數(shù)據(jù)訪問在應(yīng)用層封裝為數(shù)據(jù)訪問層,在那里,如果SQL簡單的話,直接用SQL;如果SQL復(fù)雜,或者數(shù)據(jù)交互多且中間數(shù)據(jù)最后不會(huì)用到,使用存儲(chǔ)過程
3.(對(duì)于核心的算法,不變的東西放在前臺(tái)程序中。對(duì)于容易改變的字典數(shù)據(jù),接口邏輯和配置信息,可以放在后臺(tái)用存儲(chǔ)過程來完成。最大好處,也是最終目的是:源程序不改,只改后臺(tái)存儲(chǔ)過程就可以瀟灑應(yīng)付客戶需求的改變。)這個(gè)不知道對(duì)不對(duì)


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多