翻譯|使用教程|編輯:吳園園|2020-05-12 10:51:20.523|閱讀 334 次
概述:在今天的文章中,我們了解到您應(yīng)該將自定義函數(shù)代碼放置在最能受益于該技術(shù)優(yōu)勢的位置:在需要復(fù)雜過程處理的應(yīng)用程序中以及在需要SQL的數(shù)據(jù)庫中。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium是一個可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。
點(diǎn)擊下載Navicat Premium最新試用版
確定是在數(shù)據(jù)庫中還是在應(yīng)用程序代碼中創(chuàng)建函數(shù)可能是一項(xiàng)艱巨的任務(wù)。常常,您不會意識到自己做出了錯誤的選擇,直到制作一個面對面的麻煩為止。更糟糕的是,許多開發(fā)人員的決定都是基于對SQL或應(yīng)用程序編碼最熟悉的!更好的方法是依靠技術(shù)的優(yōu)勢來指導(dǎo)您的決策。在今天的博客中,我們將在用戶定義函數(shù)(UDF)和駐留在應(yīng)用程序端的函數(shù)之間進(jìn)行選擇時細(xì)分決策過程。
數(shù)據(jù)庫功能
數(shù)據(jù)庫可以完成某些事情,并且會遇到困難。像存儲過程一樣,函數(shù)是用SQL編寫的。因此,它們將在SQL出色的任務(wù)上表現(xiàn)出色。這是此類任務(wù)的列表,以及為什么最好用SQL而不是應(yīng)用程序代碼來完成這些任務(wù):
嘗試執(zhí)行上述任何操作而不是依賴SQL不可避免地導(dǎo)致編寫大量代碼并降低效率,這轉(zhuǎn)化為更多代碼進(jìn)行調(diào)試和維護(hù)以及較差的應(yīng)用程序性能。
另一方面,DBMS不能勝任復(fù)雜的過程處理。那就是應(yīng)用程序代碼的領(lǐng)域。這是集成開發(fā)環(huán)境(IDE)的調(diào)試功能(例如VS Code或Eclipse)遠(yuǎn)遠(yuǎn)優(yōu)于數(shù)據(jù)庫開發(fā)環(huán)境中的任何功能的重要原因。
案例研究
該Sakila樣例數(shù)據(jù)庫開發(fā)作為一種學(xué)習(xí)工具,并已廣泛應(yīng)用于整個數(shù)據(jù)庫社區(qū)共享。這是一個MySQL數(shù)據(jù)庫,其中包含與虛構(gòu)的視頻租賃商店有關(guān)的許多表,視圖,存儲過程和功能。這些功能之一被稱為stocker_in_stock。這是一個UDF,它接受一個stock_id并返回一個布爾值,指示該膠片是否有庫存。
這是Navicat Premium的函數(shù)設(shè)計(jì)器中的ventory_in_stock函數(shù)定義:
讓我們快速運(yùn)行它以了解其工作原理。
單擊執(zhí)行按鈕將彈出一個對話框,以接受輸入?yún)?shù):
結(jié)果如下:
現(xiàn)在,考慮如果我們用駐留在應(yīng)用程序中的功能替換該功能會發(fā)生什么。它需要對數(shù)據(jù)庫進(jìn)行兩次調(diào)用以執(zhí)行SQL語句。這將導(dǎo)致額外的網(wǎng)絡(luò)流量,并要求我們在應(yīng)用程序內(nèi)維護(hù)SQL。通常,這是一個壞習(xí)慣,因?yàn)樗鼘?shù)據(jù)庫和應(yīng)用程序代碼混合在一起。
有興趣了解有關(guān)更多信息嗎?您可以免費(fèi)試用14天,以進(jìn)行評估!有想要購買正版授權(quán)的朋友,歡迎
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: