發(fā)文章
發(fā)文工具
撰寫(xiě)
網(wǎng)文摘手
文檔
視頻
思維導(dǎo)圖
隨筆
相冊(cè)
原創(chuàng)同步助手
其他工具
圖片轉(zhuǎn)文字
文件清理
AI助手
留言交流
業(yè)務(wù)邏輯,通俗說(shuō)就是:比如要取數(shù)據(jù)的操作,取出會(huì)員編號(hào)為x的數(shù)據(jù),原來(lái)我們一般是封裝成函數(shù),或者直接編寫(xiě)sql語(yǔ)句查詢(xún)?,F(xiàn)在是交給數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程去完成。 +------------------------------------------------------------ 寫(xiě)這篇文章的緣由 +------------------------------------------------------------ 在一家公司,老板請(qǐng)工商銀行的一個(gè)技術(shù)總監(jiān)(老板自己說(shuō)是總監(jiān),具體不知道)來(lái)跟我們聊聊,我猜是老板的朋友,相互交流一下。那個(gè)技術(shù)總監(jiān)跟我聊的時(shí)候,讓我們把存儲(chǔ)過(guò)程發(fā)給他,他回去看看。打住。聽(tīng)到這個(gè)我就感覺(jué)很詫異,當(dāng)時(shí)我心里就想,我們做web開(kāi)發(fā)很少使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯的,他讓我發(fā)存儲(chǔ)過(guò)程,確實(shí)無(wú)法發(fā)哦。只能說(shuō)沒(méi)有。 有一點(diǎn)我比較肯定,在互聯(lián)網(wǎng)開(kāi)發(fā)中,把業(yè)務(wù)邏輯封裝在存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)的做法比較少,從我以前呆的都是互聯(lián)網(wǎng)公司來(lái)看,確實(shí)很少使用存儲(chǔ)過(guò)程實(shí)現(xiàn)業(yè)務(wù)邏輯。 因?yàn)樵诖酥埃铱催^(guò)支付寶數(shù)據(jù)庫(kù)架構(gòu)師馮大輝的經(jīng)驗(yàn)分享(http://www./cn/presentations/fengdahui-mysql),他特意提到盡量不要用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。當(dāng)時(shí)我把觀點(diǎn)記錄下來(lái)了: 存儲(chǔ)過(guò)程能不用盡量不用,原則是:業(yè)務(wù)邏輯不要封裝在數(shù)據(jù)庫(kù)里面(數(shù)據(jù)庫(kù)去進(jìn)行邏輯判斷業(yè)務(wù))。把業(yè)務(wù)邏輯要交給應(yīng)用程序處理。這樣可以減少數(shù)據(jù)庫(kù)資源消耗。人員也難以招聘,既懂存儲(chǔ)過(guò)程,又懂業(yè)務(wù)的人少。
我記得當(dāng)時(shí)他還特意舉例說(shuō)了上海一家游戲公司用存儲(chǔ)過(guò)程來(lái)封裝業(yè)務(wù)邏輯,后來(lái)改業(yè)務(wù)邏輯非常麻煩(我估計(jì)是既懂程序又懂存儲(chǔ)過(guò)程的確實(shí)少)。 于是我去搜索資料,我發(fā)現(xiàn)一個(gè)情況,在電信、銀行業(yè)、金融方面以及國(guó)企都普遍使用存儲(chǔ)過(guò)程來(lái)熟悉業(yè)務(wù)邏輯,但是這種經(jīng)驗(yàn)放到互聯(lián)網(wǎng)未必是對(duì)的。 看知乎上面這篇文章如下: http://www.zhihu.com/question/19920716 ================================ 公司技術(shù)總監(jiān)偏愛(ài)用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)所有業(yè)務(wù)邏輯,請(qǐng)問(wèn)這有什么弊端嗎? 我們有企業(yè)內(nèi)部應(yīng)用和互聯(lián)網(wǎng)應(yīng)用,他都主張使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)所有業(yè)務(wù)邏輯,并用他參與過(guò)的廣東省移動(dòng)省級(jí)項(xiàng)目中使用存儲(chǔ)過(guò)程實(shí)現(xiàn)用戶(hù)登錄等例子來(lái)說(shuō)服我們?,F(xiàn)在數(shù)據(jù)庫(kù)用的是SQL SERVER2005 添加評(píng)論 分享 什么是答案總結(jié)?答案總結(jié) 贊同 2反對(duì),不會(huì)顯示你的姓名 2 allen zhang,我喜歡計(jì)算機(jī)軟件技術(shù)
收起 羅燦鋒、譚永學(xué) 贊同 利弊是相對(duì)的,使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)不一定是什么“滔天大罪”,這完全取決于系統(tǒng)的規(guī)模,擴(kuò)展性以及產(chǎn)品的發(fā)展方向。 通常情況來(lái)說(shuō),把業(yè)務(wù)邏輯寫(xiě)到存儲(chǔ)過(guò)程中不利于系統(tǒng)分層設(shè)計(jì)和維護(hù),更不利于數(shù)據(jù)庫(kù)的遷移(當(dāng)然沒(méi)有誰(shuí)總想著換個(gè)數(shù)據(jù)庫(kù)玩兒玩兒),這么做的原因很可能是他認(rèn)為可以提高性能(存儲(chǔ)過(guò)程的性能確實(shí)優(yōu)于SQL訪問(wèn)的性能),不過(guò)為了解決性能問(wèn)題有很多種方案,這種方式可能會(huì)差一些。
============================ 上面這里有個(gè)網(wǎng)友就說(shuō)他們技術(shù)經(jīng)理主張使用存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。我現(xiàn)在發(fā)現(xiàn)一點(diǎn),從國(guó)企,銀行里面來(lái)的,都是非常鐘愛(ài)存儲(chǔ)過(guò)程來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯的。這也是因?yàn)闆](méi)經(jīng)歷過(guò)互聯(lián)網(wǎng)公司情況所致。 使用存儲(chǔ)過(guò)程,他們提的最大優(yōu)點(diǎn)是和理由是:執(zhí)行速度更快。不需要經(jīng)過(guò)數(shù)據(jù)庫(kù)服務(wù)器解析,提高執(zhí)行速度,因?yàn)轭A(yù)先編譯了。sql注入完全屏蔽非常安全(安全可以有他方案,更多是一種整體取舍,而不是單純一方面考慮) 銀行業(yè)普遍使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯,我在搜索ibatis的時(shí)候,發(fā)現(xiàn)一個(gè)資料,來(lái)源為http://baike.baidu.com/link?url=-suKmDp850my0GFevZvApmW09t_dYIzx5hW-KUGNPn5fyeojVmNHy-Pv4N2pu6CC 提到如下內(nèi)容: ======================================== 在筆者的系統(tǒng)咨詢(xún)工作過(guò)程中,常常遇到以下情況: 1. 系統(tǒng)的部分或全部數(shù)據(jù)來(lái)自現(xiàn)有數(shù)據(jù)庫(kù),處于安全考慮,只對(duì)開(kāi)發(fā)團(tuán)隊(duì)提供幾條Select SQL(或存儲(chǔ)過(guò)程)以獲取所需數(shù)據(jù),具體的表結(jié)構(gòu)不予公開(kāi)。 2. 開(kāi)發(fā)規(guī)范中要求,所有牽涉到業(yè)務(wù)邏輯部分的數(shù)據(jù)庫(kù)操作,必須在數(shù)據(jù)庫(kù)層由存儲(chǔ)過(guò)程實(shí)現(xiàn)(就筆者工作所面向的金融行業(yè)而言,工商銀行、中國(guó)銀行、交通銀行,都在開(kāi)發(fā)規(guī)范中嚴(yán)格指定) 3. 系統(tǒng)數(shù)據(jù)處理量巨大,性能要求極為苛刻,這往往意味著我們必須通過(guò)經(jīng)過(guò)高度優(yōu)化的SQL語(yǔ)句(或存儲(chǔ)過(guò)程)才能達(dá)到系統(tǒng)性能設(shè)計(jì)指標(biāo)。 =========================================== 還有很多技術(shù)會(huì)鄙視:程序員,為什不用存儲(chǔ)過(guò)程來(lái)封裝業(yè)務(wù)邏輯,我看到一個(gè)網(wǎng)友如下批評(píng)那些不使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯的程序員: 這種思路很普遍,導(dǎo)致很多時(shí)候,濫用! 我就遇到一個(gè)問(wèn)題,從一堆數(shù)據(jù)中找出滿(mǎn)足條件的某些數(shù)據(jù),把所有的數(shù)據(jù)從數(shù)據(jù)庫(kù)讀取到客戶(hù)端,然后計(jì)算,篩選數(shù)據(jù)!我問(wèn)他為什么不考慮存儲(chǔ)過(guò)程,為什么不在數(shù)據(jù)庫(kù)端篩選數(shù)據(jù)?系統(tǒng)工程師回答的是,存儲(chǔ)過(guò)程對(duì)程序的移植性不好(如果換了數(shù)據(jù)庫(kù),就得重新實(shí)現(xiàn)一套,起始,很多數(shù)據(jù)庫(kù)的sql語(yǔ)法都不一樣,換了數(shù)據(jù)庫(kù),難道應(yīng)用程序就不重新寫(xiě)sql語(yǔ)句了?如果完全適應(yīng)SQL標(biāo)準(zhǔn)的sql語(yǔ)句,那就無(wú)法發(fā)揮出數(shù)據(jù)庫(kù)自身的優(yōu)勢(shì)了),還有就是代碼維護(hù)起來(lái)不方便,看不到存儲(chǔ)過(guò)程的代碼,難于找出錯(cuò)誤!哎。。。無(wú)語(yǔ)?。?br> ================================ 其實(shí),我非常認(rèn)同這個(gè)系統(tǒng)工程師的看法,使用存儲(chǔ)過(guò)程移植性不好。確實(shí)對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),難以調(diào)試bug,定位錯(cuò)誤。之前淘寶網(wǎng)就是遇到這種問(wèn)題帶多。當(dāng)然讓你們dba去找錯(cuò)誤,開(kāi)發(fā)人員就沒(méi)法做。那么都變成dba來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯或者是程序員都要學(xué)習(xí)存儲(chǔ)過(guò)程編程。 對(duì)于這句:換了數(shù)據(jù)庫(kù),難道應(yīng)用程序就不重新寫(xiě)sql語(yǔ)句了? 我的看法:不是有pdo之類(lèi)的數(shù)據(jù)庫(kù)透明層來(lái)解決嗎?可以屏蔽對(duì)具體mysql還是oracle數(shù)據(jù)庫(kù)的依賴(lài)。 +----------------------------------------------------------------- 我寫(xiě)本篇文章表達(dá)兩個(gè)主要觀點(diǎn)(也方便以后與人討論) +----------------------------------------------------------------- 這篇文章我只是想表達(dá)兩個(gè)觀點(diǎn): 1、同樣是軟件開(kāi)發(fā),但是細(xì)分起來(lái),經(jīng)驗(yàn)不一定通用的。存儲(chǔ)過(guò)程實(shí)現(xiàn)業(yè)務(wù)邏輯這種方式在傳統(tǒng)軟件開(kāi)發(fā)領(lǐng)域以及電信、金融普遍使用。 其實(shí),我一直覺(jué)得,互聯(lián)網(wǎng)的web開(kāi)發(fā)與傳統(tǒng)軟件開(kāi)發(fā)思維方式有些不同! 2、不能被所謂的10年8年開(kāi)發(fā)經(jīng)驗(yàn)的標(biāo)簽所影響。一個(gè)人即便是做了8年10年軟件開(kāi)發(fā),但是放到不同的領(lǐng)域去,有些經(jīng)驗(yàn)是錯(cuò)誤的。 我發(fā)現(xiàn),如果公司是運(yùn)營(yíng)網(wǎng)站的,請(qǐng)一個(gè)做金融,銀行的什么技術(shù)總監(jiān)來(lái)。實(shí)際上web開(kāi)發(fā)與傳統(tǒng)軟件開(kāi)發(fā)思維模式不同。web開(kāi)發(fā)需求也是頻繁跟著用戶(hù)去變的。需要的技能是不同。但外行的老板們會(huì)以為:做技術(shù)10多年了。應(yīng)該不錯(cuò)哦。請(qǐng)來(lái)............ 其實(shí),我一直在我有把握確定web開(kāi)發(fā)應(yīng)該如何做時(shí),就非常抵觸。像那個(gè)游戲公司就完全搞混了。所謂術(shù)業(yè)有專(zhuān)攻,即便我不一定經(jīng)歷很多高并發(fā)環(huán)境,但是由于一個(gè)人在這個(gè)領(lǐng)域,他會(huì)經(jīng)常去關(guān)注這個(gè)領(lǐng)域的成熟經(jīng)驗(yàn)和做法,那么就會(huì)知道什么是坑。 同樣是技術(shù)。呆的領(lǐng)域不同。經(jīng)驗(yàn)就不同。把那個(gè)存儲(chǔ)過(guò)程放到互聯(lián)網(wǎng)就出現(xiàn)很多麻煩,擴(kuò)展性。工作量。 舉個(gè)親身例子:我以前呆的公司技術(shù)經(jīng)理是79年的。他可能以前是做java企業(yè)級(jí)軟件開(kāi)發(fā)的,不是做web開(kāi)發(fā)。所以應(yīng)該沒(méi)接觸過(guò)互聯(lián)網(wǎng)的產(chǎn)品模式(網(wǎng)站大流量要求性能和速度,服務(wù)器要抗住),有次,我發(fā)現(xiàn)老板看競(jìng)爭(zhēng)對(duì)手的網(wǎng)站速度訪問(wèn)快了那么點(diǎn)點(diǎn),怎么會(huì)快些,估計(jì)不能落后吧(畢竟網(wǎng)站訪問(wèn)速度對(duì)用戶(hù)還是挺重要的),于是想讓技術(shù)經(jīng)理優(yōu)化,哪天我們晚上技術(shù)部都加班,結(jié)果都沒(méi)折騰個(gè)方案來(lái),經(jīng)理老是在折騰網(wǎng)站http發(fā)送的頭部之類(lèi)的,參考對(duì)手網(wǎng)站:咦,他們請(qǐng)求的時(shí)候發(fā)了一個(gè)頭,我網(wǎng)站也試一試,看能不能有提升.....。其實(shí)當(dāng)時(shí)我也沒(méi)啥經(jīng)驗(yàn),才畢業(yè)2年不到嘛。但對(duì)技術(shù)經(jīng)理的要求當(dāng)然不同,以現(xiàn)在的角度來(lái)看法,只要是長(zhǎng)期做web開(kāi)發(fā),對(duì)于網(wǎng)站速度這種問(wèn)題其實(shí)會(huì)形成一個(gè)套路,絕對(duì)不是靠猜測(cè),試來(lái)試去的。找瓶頸在哪里。是數(shù)據(jù)庫(kù)還是代碼。都可以用軟件來(lái)統(tǒng)計(jì)數(shù)據(jù)的,統(tǒng)計(jì)出瓶頸在哪里??坎聹y(cè)就會(huì)做無(wú)用功。使用主要矛盾法(技術(shù)術(shù)語(yǔ)就是找瓶頸,不是抱著多多益善的方式去試),把主要矛盾解決了。其他不是影響很大。后面再去做。 以前我總結(jié)那么點(diǎn)點(diǎn)經(jīng)驗(yàn),不一定正確,只是一點(diǎn)看法,后面沒(méi)去更新過(guò):http://www.cnblogs.com/wangtao_20/archive/2012/05/10/2493899.html,http://www.cnblogs.com/wangtao_20/p/3304665.html。 當(dāng)時(shí)的技術(shù)經(jīng)理盡管做了8-10年軟件開(kāi)發(fā),但是接觸的不是web開(kāi)發(fā),所以網(wǎng)站速度優(yōu)化的時(shí)候也是走了不少?gòu)澛?。至少我覺(jué)得如果他是從事web開(kāi)發(fā)的話,遇到這種網(wǎng)站速度和性能優(yōu)化問(wèn)題,對(duì)他這么多年完全是小菜一碟的。其實(shí)還好的是,我們當(dāng)時(shí)那種電子商務(wù)網(wǎng)站盡管流量和銷(xiāo)售額都很多,但是其實(shí)并發(fā)并不怎么大.弄個(gè)mysql主從架構(gòu)其實(shí)就把負(fù)載問(wèn)題給解決了 ps:前面網(wǎng)友提到那個(gè)技術(shù)經(jīng)理以參與過(guò)廣東省移動(dòng)省級(jí)項(xiàng)目來(lái)說(shuō)服,表面看很有說(shuō)服力:省級(jí)的移動(dòng)項(xiàng)目啊.......。但我有自己的思考和判斷力,不在同一個(gè)領(lǐng)域,思維是不同的。 后來(lái)我大量看了一些資料,大家對(duì)于使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯的好處,歸納起來(lái)有以下幾點(diǎn): 1、 執(zhí)行速度快。因?yàn)榇鎯?chǔ)過(guò)程不需要解析。預(yù)先編譯了 2、安全性。避免了sql注入,避免了暴露表結(jié)構(gòu)和字段 存儲(chǔ)過(guò)程可以避免SQL注入是什么道理? 我之前以為是可以避免url中sql注入。后來(lái)才明白其實(shí)就是針對(duì)程序員或者技術(shù)而言的:技術(shù)完全不知道表結(jié)構(gòu)是什么。獲取數(shù)據(jù)只需要調(diào)用存儲(chǔ)過(guò)程即可。原來(lái)是針對(duì)開(kāi)發(fā)人員而言的,屏蔽他們對(duì)數(shù)據(jù)庫(kù)的權(quán)限(這么看來(lái),我覺(jué)得這些在電信,銀行做開(kāi)發(fā)的程序員,其實(shí)技能很難提升的,就是調(diào)用寫(xiě)好的存儲(chǔ)過(guò)程,不需要指導(dǎo)表結(jié)構(gòu),你也不用參與表結(jié)構(gòu)涉及與優(yōu)化,數(shù)據(jù)庫(kù)優(yōu)化都不用管),題外話。這樣子情況下,放到互聯(lián)網(wǎng)去做開(kāi)發(fā)反而經(jīng)驗(yàn)無(wú)法套用了。 在url中注入方面。使用存儲(chǔ)過(guò)程與不使用存儲(chǔ)過(guò)程都是需要防范的。 存儲(chǔ)過(guò)程類(lèi)似于函數(shù),函數(shù)的參數(shù)預(yù)定了參數(shù)類(lèi)型是int還是char等。傳入的參數(shù)不是int型,會(huì)自動(dòng)轉(zhuǎn)換成int型,從這個(gè)角度就是避免了sql注入(我覺(jué)得更多是怕開(kāi)發(fā)人員搞鬼 呵呵)。 看到網(wǎng)上有人說(shuō):用參數(shù),只能說(shuō)MS給我們做了一些過(guò)濾,SqlParameter規(guī)定了你傳參數(shù)的大小類(lèi)型 嚴(yán)格過(guò)濾還得你自己來(lái) 。 我在想,至于嚴(yán)格的判斷還是得自己在編寫(xiě)存儲(chǔ)過(guò)程的時(shí)候做嚴(yán)格的過(guò)濾。這就像在編寫(xiě)java、php代碼進(jìn)行組裝sql的時(shí)候做嚴(yán)格的過(guò)濾是一樣的。從這點(diǎn)來(lái)只不過(guò)一個(gè)是在存儲(chǔ)過(guò)程編程實(shí)現(xiàn),一個(gè)在php、java端實(shí)現(xiàn)。 有網(wǎng)友提到:在存儲(chǔ)過(guò)程里用set來(lái)拼接sql語(yǔ)句和直接在代碼中拼接沒(méi)有一點(diǎn)區(qū)別......而select * from table where name=@p1這種形式才是安全的..... 如果你的存儲(chǔ)過(guò)程里面沒(méi)有用參數(shù)來(lái)拼接sql的話就不會(huì)被注入,如果還是拼接,哪和程序代碼拼接是一個(gè)道理 我也這么覺(jué)得,所以我看最大好處還是屏蔽掉程序員(屏蔽掉不懂技術(shù)的用戶(hù)那使用php實(shí)現(xiàn)也是一樣的),程序員直接調(diào)用存儲(chǔ)過(guò)程。根本不知道表結(jié)構(gòu)是什么,有什么字段,沒(méi)有直接暴露表名以及字段名給程序員。銀行這類(lèi)系統(tǒng)安全性第一。程序員人員離職了,也不會(huì)影響,只知道存儲(chǔ)過(guò)程,談不上攻擊。只有幾個(gè)核心的人知道表結(jié)構(gòu)。 但是,在互聯(lián)網(wǎng)產(chǎn)品開(kāi)發(fā)中(通俗理解為網(wǎng)站也可以),不贊成使用存儲(chǔ)過(guò)程(淘寶阿里巴巴的架dba不贊成使用存儲(chǔ)過(guò)程)封裝業(yè)務(wù)邏輯的人理由歸納為如下幾點(diǎn): 1、 業(yè)務(wù)邏輯封裝在存儲(chǔ)過(guò)程中。對(duì)數(shù)據(jù)庫(kù)的依賴(lài)性比較大。一旦要遷移數(shù)據(jù)庫(kù),比如從oracle遷移到mysql等,以前的業(yè)務(wù)邏輯都得重寫(xiě)(因?yàn)榇鎯?chǔ)過(guò)程是具體的數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)物,不同的數(shù)據(jù)庫(kù)語(yǔ)法不同)。編寫(xiě)的程序盡量要少依賴(lài)于具體的數(shù)據(jù)庫(kù) 跟臺(tái)灣一個(gè)工程師聊天,收獲如下: 其一、他的原則是編寫(xiě)的程序不要太依賴(lài)于數(shù)據(jù)庫(kù)。他說(shuō)像存儲(chǔ)過(guò)程,觸發(fā)器,關(guān)聯(lián),視圖表等他幾乎不用 其二、提到有些應(yīng)用使用存儲(chǔ)過(guò)程,依賴(lài)于數(shù)據(jù)去實(shí)現(xiàn)。他分析原因比較中肯: 他們是很特殊的情況 他們追求的是高效率 而且有錢(qián) 他們的機(jī)房動(dòng)輒幾百萬(wàn)的投資,不是一般小企業(yè)能承受的 小企業(yè)今天程序可能放在公司,明天可能要搬移到機(jī)房 太過(guò)於依賴(lài)外在因素會(huì)死人的 其實(shí)大企業(yè)我完全不反對(duì)他們依賴(lài)數(shù)據(jù)庫(kù),我表弟的工作就是天天寫(xiě)oracle的輔助程序 完全是依賴(lài)數(shù)據(jù)庫(kù) 沒(méi)辦法,他在臺(tái)灣電力 歸納為:電信,金融這些企業(yè)占據(jù)了很大的資源優(yōu)勢(shì),有錢(qián),關(guān)系可以提供好的機(jī)房(帶寬和網(wǎng)絡(luò)穩(wěn)定優(yōu)勢(shì))。oracle數(shù)據(jù)庫(kù)上千萬(wàn)的費(fèi)用都能承受。 硬件可能是定制的,比如花錢(qián)購(gòu)買(mǎi)sun之類(lèi)的公司的一套設(shè)備:操作系統(tǒng)到數(shù)據(jù)庫(kù),完全依賴(lài)于某個(gè)操作系統(tǒng)和數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。 2、其實(shí)在互聯(lián)網(wǎng)高并發(fā),大流量的情況下,成熟的做法都是,計(jì)算層交給web層,數(shù)據(jù)庫(kù)只是存儲(chǔ)數(shù)據(jù)。盡量少讓數(shù)據(jù)庫(kù)去做運(yùn)算(也就是ifelse之類(lèi)的邏輯判斷),不要讓腳去做腦瓜子要做的的事情。從這個(gè)角度,就是要把計(jì)算數(shù)據(jù),判斷之類(lèi)的都交給應(yīng)用代碼去解決。不要加重?cái)?shù)據(jù)庫(kù)的負(fù)擔(dān)(我覺(jué)得,銀行業(yè)可能不這樣子做,他們購(gòu)買(mǎi)昂貴oracle數(shù)據(jù)庫(kù)和ibm之類(lèi)的服務(wù)器一臺(tái)可能幾百萬(wàn)來(lái)提高性能) 比如維基百科從mysql遷移到mariadb數(shù)據(jù)庫(kù)。很多互聯(lián)網(wǎng)企業(yè)隨著數(shù)據(jù)量大,出于節(jié)省成本考慮,遷移數(shù)據(jù)庫(kù)很平常的事情。 http://database.51cto.com/art/201304/391559.htm 2、 方便擴(kuò)展。遇到數(shù)據(jù)庫(kù)性能瓶頸。單臺(tái)數(shù)據(jù)庫(kù)服務(wù)器永遠(yuǎn)會(huì)存在瓶頸的(極限),是扛不住的。集中式最終會(huì)被分布式給替代,一般在互聯(lián)網(wǎng)環(huán)境下偏向于使用分布式部署數(shù)據(jù)庫(kù)。分布式通俗理解,要分庫(kù),拆分表。拆分到多臺(tái)服務(wù)器上去。分散壓力。如果業(yè)務(wù)邏輯封裝在存儲(chǔ)過(guò)程中。則不好這樣子做。因?yàn)榇鎯?chǔ)過(guò)程是依賴(lài)于某個(gè)具體的庫(kù)的。把計(jì)算層放到web層,那么web端的程序只是從多個(gè)數(shù)據(jù)庫(kù)服務(wù)器聚合數(shù)據(jù)即可了。 google、阿里巴巴其實(shí)會(huì)通過(guò)很多mysql集群來(lái)提高性能。 3、 互聯(lián)網(wǎng)應(yīng)用頻繁修改功能,需求變化快。要響應(yīng)用戶(hù)需求為準(zhǔn),這關(guān)系到企業(yè)的生存。國(guó)企往往是資源豐富,大手筆很正常,功能頻繁修改來(lái)響應(yīng)市場(chǎng)用戶(hù)?如果封裝在存儲(chǔ)過(guò)程中,修改功能。維護(hù)確實(shí)麻煩。其實(shí)我覺(jué)得,還要考慮招聘成本。很難有既熟悉java又熟悉存儲(chǔ)過(guò)程編程的人(一門(mén)語(yǔ)言懂一點(diǎn)點(diǎn)是可以做到)。銀行業(yè),金融業(yè)不會(huì)頻繁的修改功能。我覺(jué)得,工商銀行會(huì)為你了一個(gè)顧客說(shuō)要什么就加一個(gè)功能嗎?不會(huì)。我們?nèi)タ纯垂ど蹄y行的網(wǎng)站就知道用戶(hù)體驗(yàn)怎樣,也同時(shí)看看電信的。在國(guó)企的思維模式不同的。敏捷開(kāi)發(fā)在互聯(lián)網(wǎng)是經(jīng)常用到的。 如果再讓我跟國(guó)企、電信、移動(dòng)、銀行業(yè)的技術(shù)人員溝通,我仍然堅(jiān)持,盡量少使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯。 正如前面網(wǎng)友說(shuō)的,為了解決性能問(wèn)題有很多種方案,這種方式可能會(huì)差一些,不利于數(shù)據(jù)庫(kù)擴(kuò)展,數(shù)據(jù)切分。 其實(shí),很多真正提高效率的終極辦法是使用緩存而不是在數(shù)據(jù)庫(kù)中運(yùn)算,靠數(shù)據(jù)庫(kù)預(yù)編譯或減少網(wǎng)絡(luò)流量那點(diǎn)優(yōu)化就可以,那說(shuō)明性能要求原本不高??梢匀チ私鈍oogle,亞馬遜,淘寶網(wǎng),新浪等是如何做的。像電信他們那樣子大量提高硬件治標(biāo)不治本,而是用分布式代替,就像人,單個(gè)人總再?gòu)?qiáng)總是存在極限的。所以使用存儲(chǔ)過(guò)程速度更快,那點(diǎn)速度的提升其實(shí)微不足道。根本無(wú)法解決本質(zhì)問(wèn)題。 其實(shí),銀行業(yè)為什么要使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯。后面會(huì)分析出深層次原因:絕對(duì)安全考慮!基于不差錢(qián)(依賴(lài)于具體的oracle數(shù)據(jù)庫(kù)又如何?)的大前提來(lái)做的。 實(shí)際上,我也覺(jué)得,使用存儲(chǔ)過(guò)程確實(shí)減少了二次解析,提高了效率,但是這種效率提到完全可以用其他方式替代。損失的是擴(kuò)展性。 http://www.zhihu.com/question/19767412 總體答案是,企業(yè)級(jí)內(nèi)部系統(tǒng),可以使用。 互聯(lián)網(wǎng)一定要少用。這是經(jīng)驗(yàn)。經(jīng)歷過(guò)教訓(xùn)的。因?yàn)榛ヂ?lián)網(wǎng)應(yīng)用是一個(gè)對(duì)所有人都開(kāi)放訪問(wèn)的系統(tǒng)(越多人訪問(wèn)商業(yè)價(jià)值越大),無(wú)法預(yù)估未來(lái)的用戶(hù)量,數(shù)據(jù)量的。以后要擴(kuò)展就非常麻煩了。
有人想到了:淘寶在mysql中不照樣在用?據(jù)我從知乎上了解到,阿里從oracle遷移到mysql還是要保留了一定數(shù)量的存儲(chǔ)過(guò)程,是因?yàn)闅v史原因的殘留(可能是oracle有很多存儲(chǔ)過(guò)程殘留,沒(méi)法一下子改掉,系統(tǒng)提供服務(wù)運(yùn)行穩(wěn)定為主)。搞清楚原因了后更加有利于選擇。
用這種方式提高了速度,但是系統(tǒng)的擴(kuò)展性,維護(hù)性,開(kāi)發(fā)成本?
很多人讓其給建議,也不會(huì)直接說(shuō)一定不用。也只是委婉的(mysql dba): 可以用,如果你很明確自己的容量和性能,很熟悉存儲(chǔ)過(guò)程的開(kāi)發(fā).說(shuō)點(diǎn)其他的: 1. 隨著海量的數(shù)據(jù)增長(zhǎng),高并發(fā)的系統(tǒng),數(shù)據(jù)庫(kù)慢慢轉(zhuǎn)化為僅僅作為數(shù)據(jù)的容器. 如果你的數(shù)據(jù)庫(kù)存在瓶頸,存儲(chǔ)器,觸發(fā)器這些都沒(méi)用了. 2. 從web層擴(kuò)展是很容易的.所以把計(jì)算留給web層吧. ====================================另外一位 不能一概而論,對(duì)于和屬于相關(guān)性大的業(yè)務(wù)邏輯和計(jì)算,Oracle完全能勝任,邏輯轉(zhuǎn)移到Web層反倒復(fù)雜。 ============================================= 我想這也是oracle把計(jì)算層放在數(shù)據(jù)庫(kù)層的原因吧。所以在oracle中可以使用存儲(chǔ)過(guò)程。 ----------------- 阿里、淘寶的大牛dba們強(qiáng)烈建議在mysql庫(kù)中,盡量不要使用存儲(chǔ)過(guò)程,不易維護(hù),出問(wèn)題跟蹤十分麻煩,從管理的角度我很認(rèn)同這樣的觀點(diǎn), 從實(shí)現(xiàn)上來(lái)時(shí)存儲(chǔ)過(guò)程也是具備一定的優(yōu)勢(shì)的,看場(chǎng)景選用,能不用則不用為妥。 需要先預(yù)編譯,在實(shí)際中不是經(jīng)常用到,當(dāng)然還要看是什么樣的項(xiàng)目來(lái)決定。 分析:數(shù)據(jù)庫(kù)用來(lái)做他擅長(zhǎng)的事情,存儲(chǔ)數(shù)據(jù)。把數(shù)據(jù)庫(kù)當(dāng)成一個(gè)存儲(chǔ)數(shù)據(jù)的地方。計(jì)算的事情盡量交給程序應(yīng)用層來(lái)處理。跟現(xiàn)實(shí)中的哲學(xué):不要讓大腦干其不擅長(zhǎng)的事情。大腦適合干腦力活想事情,你偏偏安排到去做體力:拼頭力氣大小。 也有人提到: 數(shù)據(jù)庫(kù)是相當(dāng)昂貴的投資,能讓他多干點(diǎn)就多干點(diǎn)活。存儲(chǔ)過(guò)程的優(yōu)勢(shì)還是非常強(qiáng)的(在沒(méi)有跨平臺(tái)的要求下)。貌似我們公司那幫java的就從來(lái)不知道存儲(chǔ)過(guò)程為何物,用java的框架統(tǒng)一生成,到處是拼接SQL. --------------------------------- 數(shù)據(jù)庫(kù)是昂貴的投資是oralce的說(shuō)法,mysql是免費(fèi)的 ---------------------------------- 存儲(chǔ)過(guò)程作為一種過(guò)時(shí)的語(yǔ)言,只能存在于較少的業(yè)務(wù)場(chǎng)景了,比如規(guī)范的數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)清洗、標(biāo)準(zhǔn)、簡(jiǎn)單的多數(shù)據(jù)庫(kù)操作等。 在良好的業(yè)務(wù)系統(tǒng)中應(yīng)該盡量拋棄存儲(chǔ)過(guò)程和觸發(fā)器之類(lèi)的東西。 1、從設(shè)計(jì)角度看,邏輯封裝很重要,不是存儲(chǔ)過(guò)程那一點(diǎn)封裝,而是整個(gè)業(yè)務(wù)邏輯。如果把業(yè)務(wù)邏輯分散在程序代碼和存儲(chǔ)過(guò)程兩部分,實(shí)際上是業(yè)務(wù)碎片化,不利于表述業(yè)務(wù)邏輯,造成后期閱讀維護(hù)的困難。 2、存儲(chǔ)過(guò)程自身并不是一種結(jié)構(gòu)化良好的語(yǔ)言,對(duì)于習(xí)慣于面向?qū)ο缶幊痰娜硕?,?jiǎn)直就是亂麻一堆。代碼可讀性在工程上很重要。 3、很多真正提高效率的終極辦法是使用緩存而不是在數(shù)據(jù)庫(kù)中運(yùn)算,靠數(shù)據(jù)庫(kù)預(yù)編譯或減少網(wǎng)絡(luò)流量那點(diǎn)優(yōu)化就可以,那說(shuō)明性能要求原本不高 4、如果有數(shù)據(jù)庫(kù)解耦的需求,就更不應(yīng)該使用存儲(chǔ)過(guò)程 好的架構(gòu)師多是從程序員發(fā)展來(lái)的,有幾個(gè)是DBA發(fā)展來(lái)的?有幾個(gè)好的架構(gòu)師常推薦存儲(chǔ)過(guò)程呢?所以DBA兄弟們最好還是聽(tīng)程序員的話,優(yōu)化sql即可。 如果真想從架構(gòu)思路上去優(yōu)化,先應(yīng)該全盤(pán)考慮系統(tǒng)架構(gòu)問(wèn)題。 ========================================= ================================================================== 最后歸納 ================================================================== 業(yè)務(wù)邏輯封裝在存儲(chǔ)過(guò)程中,是要看場(chǎng)景使用 一、如果是金融,銀行,電信等國(guó)企類(lèi)。使用存儲(chǔ)過(guò)程影響不大。這種情況是持續(xù)了很多年。 好處: 1、銀行類(lèi)系統(tǒng)對(duì)于安全性要求很高,存儲(chǔ)過(guò)程把sql封裝起來(lái),完全可以屏蔽sql注入(也不是沒(méi)替代方案,互聯(lián)網(wǎng)也有安全性要求比較高的,比如在線支付都可以有其他方式來(lái)解決) 2、對(duì)系統(tǒng)的速度要求很高。往往是通過(guò)花大價(jià)錢(qián)購(gòu)買(mǎi)硬件和oracle之類(lèi)的數(shù)據(jù)庫(kù)服務(wù)來(lái)解決問(wèn)題,這些企業(yè)非常有錢(qián),可以通過(guò)花錢(qián)購(gòu)買(mǎi)oracle數(shù)據(jù)庫(kù),良好的硬件來(lái)解決。比如一臺(tái)機(jī)子上幾百萬(wàn)都可以承受。只要能保證我安全,花錢(qián)可以接受。反而在互聯(lián)網(wǎng)環(huán)境下,為了節(jié)省成本,互聯(lián)網(wǎng)大部分公司面對(duì)性能瓶頸, 更多使用大量廉價(jià)的pc server(一萬(wàn)左右一臺(tái))來(lái)做集群,從集中式向分布式進(jìn)行部署。google以前也是使用大量廉價(jià)的mysql集群(使用存儲(chǔ)過(guò)程是沒(méi)法做到分布式查詢(xún),存儲(chǔ)過(guò)程本來(lái)就是在一個(gè)庫(kù)下面),依賴(lài)于某個(gè)單個(gè)庫(kù))。 另外,解決性能瓶頸,互聯(lián)網(wǎng)大部分還是通過(guò)使用緩存來(lái)解決的,這跟銀行類(lèi)系統(tǒng)"花費(fèi)大價(jià)錢(qián)提高硬件和數(shù)據(jù)庫(kù)軟件的承載能力"思路是不同的。 從這個(gè)角度來(lái)說(shuō),我其實(shí)不覺(jué)得電信行業(yè)這些人技術(shù)多么牛逼。原因在于,他們提高性能的方式其實(shí)更多是通過(guò)花費(fèi)大量的錢(qián)來(lái)購(gòu)買(mǎi)oracle商業(yè)的數(shù)據(jù)庫(kù)以及ibm之類(lèi)的小型中型服務(wù)器抗住。通俗說(shuō),就是商業(yè)公司幫助解決的。 我查資料得知小型機(jī)(其實(shí)我也被這個(gè)小字給誤解了): 使用IBM Power系列處理器的System p服務(wù)器統(tǒng)稱(chēng)為“小型機(jī)”,是區(qū)別于X86構(gòu)架的System X系列服務(wù)器的一種稱(chēng)呼。不要以為這個(gè)系列的服務(wù)器名稱(chēng)中帶一個(gè)“小”字就小看了他的性能,要知道基于X86構(gòu)架的計(jì)算機(jī)設(shè)備是被成為“微型機(jī)”的。Power處理器區(qū)別于Intel至強(qiáng)、AMD皓龍的根本性指標(biāo)是前者運(yùn)行精簡(jiǎn)指令集,而后兩者運(yùn)行復(fù)雜指令集,相比之下Power效率更高,并發(fā)處理能力更強(qiáng)。采用IBM Power處理器的服務(wù)器運(yùn)行基于UNIX開(kāi)發(fā)的操作系統(tǒng)AIX,一般應(yīng)用于網(wǎng)絡(luò)基礎(chǔ)構(gòu)架的后端數(shù)據(jù)庫(kù)訪問(wèn)控制或者高性能科學(xué)計(jì)算領(lǐng)域。 說(shuō)白了 比一般服務(wù)器更要好所有的東西都是IBM 幾十年來(lái)自己開(kāi)發(fā)的 里面的CPU 就要比因特爾的要強(qiáng)很多 當(dāng)然也非常的貴 基本上最好都是幾十萬(wàn)的 幾百萬(wàn)的也有
型號(hào)么 一般你看見(jiàn)IBM P550 P570 等等就是小型機(jī)了 因?yàn)镮BM小型機(jī)是運(yùn)行Unix系統(tǒng)(Aix),所以在這個(gè)平臺(tái)上面運(yùn)行的軟件 一般都是基于Java的開(kāi)發(fā)系統(tǒng),比如應(yīng)用與銀行中介于大型機(jī)和普通服務(wù)器之間的鏈接,電信中的中端架構(gòu),還有企業(yè),政府中的要求高端運(yùn)行,高穩(wěn)定,超低宕機(jī)要求的系統(tǒng)。 反推一下,所有不能應(yīng)用windows,linux 系統(tǒng)的地方基本上都是小型機(jī)的天下,而這些里面大部分應(yīng)用的是IBM 的Aix系統(tǒng)小型機(jī) 小型機(jī)我看到報(bào)價(jià)是25萬(wàn),90萬(wàn)的。 我可以歸納為:花費(fèi)了大手筆購(gòu)買(mǎi)的服務(wù)器,超強(qiáng)。據(jù)說(shuō)是全年不宕機(jī),非常穩(wěn)定。性能很牛逼。 那么總結(jié)就有錢(qián),不在乎這點(diǎn)錢(qián)。 多花錢(qián),能解決我問(wèn)題就好(保障穩(wěn)定服務(wù)以及安全也很值得)。 使用存儲(chǔ)過(guò)程封裝了業(yè)務(wù)邏輯,依賴(lài)死具體的oracle數(shù)據(jù)庫(kù)沒(méi)關(guān)系(oracle在pc server上好像是跑不了的,必須在昂貴的小型機(jī)機(jī)上才能發(fā)揮優(yōu)勢(shì)),電信企業(yè)幾十年使用oracle,依賴(lài)死都沒(méi)關(guān)系。 我強(qiáng)烈感慨,電信行業(yè)這些的技術(shù)經(jīng)驗(yàn)放到互聯(lián)網(wǎng)大部分民企是行不通的。google那么有錢(qián),仍然要使用大量廉價(jià)的pc server。阿里巴巴那么有錢(qián),尚且要把大量數(shù)據(jù)遷移到mysql做集群(看過(guò)一個(gè)技術(shù)文檔,提到以前使用oracle一年費(fèi)用大概在兩千萬(wàn)左右,為了減低成本)。我覺(jué)得原因在于:民營(yíng)企業(yè)是要以生存為準(zhǔn)的。成本考慮第一。 3、銀行類(lèi)的系統(tǒng)需求不會(huì)頻繁的變更。功能不能頻繁修改,加功能,我覺(jué)得銀行之類(lèi)系統(tǒng)不是以用戶(hù)需要什么功能為標(biāo)準(zhǔn)的,你看看工商銀行的網(wǎng)站,功能很好嗎?。他們是老大。相對(duì)互聯(lián)網(wǎng)環(huán)境下,web開(kāi)發(fā)得不停響應(yīng)用戶(hù)體驗(yàn)需求,加新功能是不同的?;ヂ?lián)網(wǎng)面對(duì)所有用戶(hù)都能開(kāi)放訪問(wèn)的環(huán)境下,需要開(kāi)發(fā)功能快速響應(yīng)。所以經(jīng)??吹皆诨ヂ?lián)網(wǎng)使用的是敏捷開(kāi)發(fā)。頻繁的系統(tǒng)功能修改與響應(yīng),這種環(huán)境下,業(yè)務(wù)邏輯改動(dòng)比較多(生存壓力,用戶(hù)需要什么你就給什么),那么,如果使用存儲(chǔ)過(guò)程的話,改代碼,調(diào)試代碼都會(huì)比較麻煩。 其實(shí),我去看mysql5.1手冊(cè)中提到存儲(chǔ)過(guò)程,介紹如下: MySQL 5.1版支持存儲(chǔ)程序和函數(shù)。一個(gè)存儲(chǔ)程序是可以被存儲(chǔ)在服務(wù)器中的一套SQL語(yǔ)句。一旦它被存儲(chǔ)了,客戶(hù)端不需要再重新發(fā)布單獨(dú)的語(yǔ)句,而是可以引用存儲(chǔ)程序來(lái)替代。
下面一些情況下存儲(chǔ)程序尤其有用: · 當(dāng)用不同語(yǔ)言編寫(xiě)多客戶(hù)應(yīng)用程序,或多客戶(hù)應(yīng)用程序在不同平臺(tái)上運(yùn)行且需要執(zhí)行相同的數(shù)據(jù)庫(kù)操作之時(shí)。 · 安全極為重要之時(shí)。比如,銀行對(duì)所有普通操作使用存儲(chǔ)程序。這提供一個(gè)堅(jiān)固而安全的環(huán)境,程序可以確保每一個(gè)操作都被妥善記入日志。在這樣一個(gè)設(shè)置中,應(yīng)用程序和用戶(hù)不可能直接訪問(wèn)數(shù)據(jù)庫(kù)表,但是僅可以執(zhí)行指定的存儲(chǔ)程序。 存儲(chǔ)程序可以提供改良后的性能,因?yàn)橹挥休^少的信息需要在服務(wù)器和客戶(hù)算之間傳送。代價(jià)是增加數(shù)據(jù)庫(kù)服務(wù)器系統(tǒng)的負(fù)荷,因?yàn)楦嗟墓ぷ髟诜?wù)器這邊完成,更少的在客戶(hù)端(應(yīng)用程序)那邊完成上。如果許多客戶(hù)端機(jī)器(比如網(wǎng)頁(yè)服務(wù)器)只由一個(gè)或少數(shù)幾個(gè)數(shù)據(jù)庫(kù)服務(wù)器提供服務(wù),可以考慮一下存儲(chǔ)程序。 存儲(chǔ)程序也允許你在數(shù)據(jù)庫(kù)服務(wù)器上有函數(shù)庫(kù)。這是一個(gè)被現(xiàn)代應(yīng)用程序語(yǔ)言共享的特征,它允許這樣的內(nèi)部設(shè)計(jì),比如通過(guò)使用類(lèi)。使用這些客戶(hù)端應(yīng)用程序語(yǔ)言特征對(duì)甚至于數(shù)據(jù)庫(kù)使用范圍以外的編程人員都有好處。 我非常贊同這句話,安全非常重要的時(shí)候。銀行,金融業(yè)安全第一。其他方面一概都不考慮(硬件花錢(qián)購(gòu)買(mǎi),軟件依賴(lài)于oracle之類(lèi)昂貴的數(shù)據(jù)庫(kù)系統(tǒng)無(wú)所謂) 互聯(lián)網(wǎng)環(huán)境下,存儲(chǔ)過(guò)程用得還是比較少的。安全性可以有替代方案的。 二、web環(huán)境盡量少用。用了弊大于利。使用存儲(chǔ)過(guò)程,業(yè)務(wù)邏輯封裝在存儲(chǔ)過(guò)程中,修改功能,維護(hù)起來(lái)都比較費(fèi)力?;ヂ?lián)網(wǎng)應(yīng)用恰恰需要快速響應(yīng)用戶(hù)需求的變化,應(yīng)用變化很頻繁,業(yè)務(wù)邏輯修改如果去修改封裝業(yè)務(wù)邏輯的存儲(chǔ)過(guò)程就會(huì)變得很麻煩,就像在互聯(lián)網(wǎng)產(chǎn)品開(kāi)發(fā)中,由于應(yīng)用頻繁變化,表結(jié)構(gòu)經(jīng)常需要修改是很多dba頭痛的事情(不能影響用戶(hù)操使用網(wǎng)站)。隨著網(wǎng)站用戶(hù)的增加,網(wǎng)站扛不住了,更多是考慮水平擴(kuò)展,做集群。你或許可以通過(guò)花費(fèi)大價(jià)錢(qián)購(gòu)買(mǎi)設(shè)備和數(shù)據(jù)庫(kù)服務(wù) ,但是,單個(gè)硬件服務(wù)器、單個(gè)數(shù)據(jù)庫(kù)軟件承載是有極限的。作為民營(yíng)企業(yè),你會(huì)考慮購(gòu)買(mǎi)的成本是否扛得住(之前阿里巴巴一年的oracle投入需要2千萬(wàn)左右,后來(lái)為了減低成本使用mysql做集群)。能減低成本為什么不減低呢? 互聯(lián)網(wǎng)是分布式部署居多。 我一直覺(jué)得,技術(shù)主管對(duì)技術(shù)的嗅覺(jué)和預(yù)見(jiàn)性還是有一些影響的,如果招聘一個(gè)銀行電信業(yè)的技術(shù)人員轉(zhuǎn)移到互聯(lián)網(wǎng)做web開(kāi)發(fā),其使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯在以前看來(lái)是很成熟的經(jīng)驗(yàn),但是放到互聯(lián)網(wǎng)web中去,可能是一種早就埋下來(lái)的坑。
以前聽(tīng)一個(gè)網(wǎng)友提過(guò),電子商務(wù)網(wǎng)站,對(duì)技術(shù)水平的要求倒并不是很高(淘寶阿里巴巴等除外),大部分只要扛得住即可。我比較認(rèn)同這個(gè)觀點(diǎn)。基本的需求滿(mǎn)足即可了。 我從來(lái)不覺(jué)得凡客在使用存儲(chǔ)過(guò)程可以作為一個(gè)良好的佐證:人家不照樣在使用么?有什么不能用,我們更多應(yīng)該參考亞馬遜,ebay,阿里巴巴等企業(yè)的技術(shù)方案,向他們看齊。 本篇文章有感而發(fā),我一直覺(jué)得,專(zhuān)攻方向不同,經(jīng)驗(yàn)則是不同的。不是說(shuō)做了10年8年,然后放到互聯(lián)網(wǎng)就通用。我非??隙ㄒ稽c(diǎn),在互聯(lián)網(wǎng)環(huán)境下更多就是靠web層來(lái)計(jì)算,靠緩存和分布式來(lái)應(yīng)對(duì)大流量訪問(wèn),而不是像銀行業(yè)那樣子大手筆花錢(qián)購(gòu)買(mǎi)商業(yè)數(shù)據(jù)庫(kù)系統(tǒng)(如oracle)和幾十萬(wàn)到幾百萬(wàn)一臺(tái)的小型機(jī)來(lái)提高性能。他們綁定死依賴(lài)死某個(gè)具體的數(shù)據(jù)庫(kù)沒(méi)關(guān)系,他們要的數(shù)據(jù)安全,出了問(wèn)題可以找廠商負(fù)責(zé)。何況他們也也不差錢(qián)吧。當(dāng)你在電信做了10年開(kāi)發(fā),把這種存儲(chǔ)過(guò)程實(shí)現(xiàn)業(yè)務(wù)邏輯的經(jīng)驗(yàn)放到互聯(lián)網(wǎng),不一定是什么滔天大罪的事情,但我覺(jué)得就是一個(gè)坑,未來(lái)埋下的坑。 我覺(jué)得,具備自己的獨(dú)立思考能力非常重要。不能被別人的10年20年開(kāi)發(fā)經(jīng)驗(yàn)影響而所放棄獨(dú)立的思考,就像受到工商銀行的技術(shù)總監(jiān)頭銜所影響的那樣子。金融、電信、銀行業(yè)
來(lái)自: 昵稱(chēng)10504424 > 《工作》
0條評(píng)論
發(fā)表
請(qǐng)遵守用戶(hù) 評(píng)論公約
什么是后端開(kāi)發(fā)?
什么是后端開(kāi)發(fā)?后端開(kāi)發(fā)人員是這樣的開(kāi)發(fā)人員。后端開(kāi)發(fā)人員比前端開(kāi)發(fā)人員花費(fèi)更多的時(shí)間在實(shí)現(xiàn)算法和解決問(wèn)題上。最后,我想說(shuō),后端開(kāi)發(fā)人員需要更多地了解應(yīng)用程序架構(gòu),因?yàn)榇蠖鄶?shù)情況下,后端...
mybatis3.0調(diào)用oracle存儲(chǔ)過(guò)程
mybatis3.0調(diào)用oracle存儲(chǔ)過(guò)程。
程序員之路——學(xué)習(xí)技術(shù)的方法
程序員之路——學(xué)習(xí)技術(shù)的方法。所以軟件行業(yè)按職稱(chēng)分又分為嵌入式工程師,軟件設(shè)計(jì)師(高級(jí)程序員),系統(tǒng)架構(gòu)師,系統(tǒng)分析師,項(xiàng)目管理規(guī)劃師,網(wǎng)絡(luò)規(guī)劃師,數(shù)據(jù)庫(kù)管理員。。。我先講個(gè)故事,以前群...
從邏輯入手優(yōu)化數(shù)據(jù)庫(kù)性能
在oracle性能優(yōu)化主要包括:數(shù)據(jù)架構(gòu)優(yōu)化、邏輯優(yōu)化、sql優(yōu)化、數(shù)據(jù)庫(kù)運(yùn)行參數(shù)優(yōu)化。在數(shù)據(jù)庫(kù)優(yōu)化工作中,往往把注意力集中在參數(shù)、sql兩個(gè)方面,但是根據(jù)行業(yè)內(nèi)大量經(jīng)驗(yàn)證明,數(shù)據(jù)庫(kù)架構(gòu)、程序邏輯實(shí)...
醫(yī)療信息化項(xiàng)目經(jīng)理筆試題
sql的存儲(chǔ)過(guò)程與觸發(fā)器的區(qū)別,以及各自的優(yōu)缺點(diǎn)!
sql的存儲(chǔ)過(guò)程與觸發(fā)器的區(qū)別,以及各自的優(yōu)缺點(diǎn)!是一組SQL語(yǔ)句集,從開(kāi)頭到結(jié)尾包含這許多的SQL語(yǔ)句,然后中間對(duì)于有需要的業(yè)務(wù)邏輯處理,進(jìn)行邏輯控制。觸發(fā)器:觸發(fā)器與存儲(chǔ)過(guò)程類(lèi)似,里面也是一些S...
一是數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)是一
想想我們的項(xiàng)目里能不能用存儲(chǔ)過(guò)程。或者制做一種調(diào)和于主流數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程語(yǔ)言的中間語(yǔ)言也可以,一個(gè)簡(jiǎn)單的編譯器將它轉(zhuǎn)換為特定于某個(gè)數(shù)據(jù)庫(kù)的語(yǔ)言。和在 .net/java代碼中混雜數(shù)據(jù)庫(kù)操控的笨拙代碼...
Oracle 存儲(chǔ)過(guò)程 使用示例
Oracle 存儲(chǔ)過(guò)程 使用示例。在這里說(shuō)一條使用存儲(chǔ)過(guò)程很重要的理由:存儲(chǔ)過(guò)程只在創(chuàng)造時(shí)進(jìn)行編譯,以后每次執(zhí)行存儲(chǔ)過(guò)程都不需再重新編譯,而一般SQL語(yǔ)句每執(zhí)行一次就編譯一次,所以使用存儲(chǔ)過(guò)程可提高...
oracle創(chuàng)鍵數(shù)據(jù)庫(kù)與存儲(chǔ)過(guò)程、表記錄索引
oracle創(chuàng)鍵數(shù)據(jù)庫(kù)與存儲(chǔ)過(guò)程、表記錄索引oracle安裝完成后,默認(rèn)已經(jīng)存在一個(gè)數(shù)據(jù)庫(kù),就是安裝過(guò)程中創(chuàng)建的全局?jǐn)?shù)據(jù)庫(kù)名,在開(kāi)發(fā)項(xiàng)目中,可以創(chuàng)建自已的數(shù)據(jù)庫(kù),使用oracle的圖形界面(database config...
微信掃碼,在手機(jī)上查看選中內(nèi)容