久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

解析SQL Server數(shù)據(jù)體系和應(yīng)用程序邏輯

瀏覽:4日期:2023-11-07 08:16:18

在許多用SQL Server實現(xiàn)的新的企業(yè)系統(tǒng)設(shè)計中,系統(tǒng)設(shè)計師需要在給數(shù)據(jù)結(jié)構(gòu)和管理應(yīng)用程序邏輯的定位上做出具有關(guān)鍵性意義的決定。SQL Server有它自己的編程語言(Transact-SQL,即TSQL),開發(fā)者可以用它來管理數(shù)據(jù)訪問、代碼事務(wù)邏輯和交易控制。

使用TSQL,開發(fā)者可以創(chuàng)建保存過程,在保存過程中用一段可重用、預(yù)編譯而且擁有自己的許可設(shè)置的代碼塊來封裝數(shù)據(jù)訪問。數(shù)據(jù)庫中每個表格都有一組叫做triggers的特殊的保存過程。當?shù)讓訑?shù)據(jù)庫發(fā)生特定的數(shù)據(jù)庫事件(如Insert、Delete或者Update)時,trigger就被“觸發(fā)”了。使用triggers,開發(fā)者就可以編寫基于事件的事務(wù)邏輯,這樣,給定表格的Insert、Delete和Update事件就可以驅(qū)動其它表格的變化。

既然有了這樣的靈活性,那么我們?yōu)槭裁床槐M可能用TSQL寫更多的事物邏輯呢?

使用TSQL來開發(fā)應(yīng)用程序邏輯存儲

TSQL不僅可以作為單個應(yīng)用程序的邏輯倉庫,它也可以是一個訪問相同數(shù)據(jù)的應(yīng)用程序組的邏輯倉庫——這有幾個邏輯上的原因。通過對數(shù)據(jù)的集中處理和管理SQL server中數(shù)據(jù)的規(guī)則,你可以配置這樣的安全體系——即應(yīng)用程序在通過事務(wù)規(guī)則之前,不可以訪問底層數(shù)據(jù)庫。

這是大多數(shù)兩層客戶——服務(wù)器應(yīng)用程序的常見數(shù)據(jù)庫范例。該體系把所有的事務(wù)邏輯和數(shù)據(jù)訪問交給后端的服務(wù)器而把豐富的表示邏輯交給客戶端??蛻艄芾硎聞?wù)過程和數(shù)據(jù)的視(view),但不在本地處理除顯示之外的其它事務(wù)。如果把所有的事務(wù)邏輯放到中央倉庫去,那么這個體系還有降低管理成本的潛力,但這會付出降低了可測性的代價。

我最近接觸了一個客戶,它花了數(shù)百個人月(一個人工作一個月的工作量)和數(shù)以千計的美元來設(shè)計一個非常復雜的、用TSQL管理所有應(yīng)用程序邏輯的應(yīng)用程序。盡管該體系非常精巧、在10到15個用戶的情況下也運行良好,但是如果有20個用戶,速度就非常慢。通過給SQL server增加處理器的方法,該系統(tǒng)可以允許60個用戶同時使用。但是這距離100個用戶的設(shè)計目標還有很大一段距離,這就使得該公司在Internet上開放該應(yīng)用程序的計劃無法實施下去。由于存儲過程和trigger只能操作本地數(shù)據(jù),該公司無法把該應(yīng)用程序分解成多個SQL server以提高可測性。結(jié)果,該公司不得不大規(guī)模的修改它。

在應(yīng)用程序邏輯中使用.NET類

上面那家公司在經(jīng)過一段曲折后所發(fā)現(xiàn)的問題,大多數(shù)體系設(shè)計師在體系設(shè)計階段都會重新認識到——應(yīng)用程序邏輯包含在一組.NET類的n層體系可以增加該應(yīng)用程序的靈活性和可測性。由于TSQL是一種以管理數(shù)據(jù)為主要目的的語言,因此它不夠靈活,但是我們?nèi)钥梢杂肨SQL編寫出復雜的事務(wù)邏輯。

如果開發(fā)者使用.NET框架,那么他們可以在開發(fā)核心事務(wù)過程時做出自己的語言選擇。這個靈活性可以讓你對應(yīng)用程序要求和開發(fā)語言或者資源進行最合理的搭配。而且如果適當開發(fā),封住這些事務(wù)過程的對象可以在多臺機器上運行并共享同樣的底層數(shù)據(jù)庫server。在與處理TSQL事務(wù)邏輯無關(guān)的情況下,SQL server可以應(yīng)付大量的并發(fā)請求。

行操作(row operation)和集操作(set operations)

在規(guī)劃體系階段時判斷使用行操作還是集操作的一個指導思想就是:如果使用TSQL就使用集操作,如果使用.NET則進行行操作。通過網(wǎng)絡(luò)連接來提供大量的數(shù)據(jù)會影響應(yīng)用程序的整體性能,所以只要有可能就使用server來處理它們——這樣做是很有意義的。但是從內(nèi)存和處理能力的角度來看,SQL Server的指針(cursor)是非常昂貴的對象,因此創(chuàng)建一個指針來遍歷集合中的所有記錄并依次處理這些記錄一般來說并沒有多大意義。

當你需要執(zhí)行基于行的處理,而這些處理包括了復雜的程序邏輯或者占用CPU比較厲害的操作時,你就應(yīng)該從server中查詢這些行并在中間層來處理它們。

如果你想通過一個例子來看看如何把數(shù)據(jù)訪問邏輯封裝到一個中間層對象中去,請從MSDN中下載數(shù)據(jù)訪問應(yīng)用程序模塊。這是一個提供代碼的、可重用的數(shù)據(jù)訪問子系統(tǒng),你可以根據(jù)它來編寫自己的數(shù)據(jù)庫或者特性應(yīng)用程序的數(shù)據(jù)訪問對象。

通過創(chuàng)建可重用的.NET應(yīng)用程序框架來處理大多數(shù)應(yīng)用程序邏輯、并用基于TSQL的保存過程來作為服務(wù)器端的集操作的安全限制和機制,那么你就可以創(chuàng)建同時擁有TSQL和.NET這兩者優(yōu)點的應(yīng)用程序了。

主站蜘蛛池模板: 色综合99| 欧美一级片在线观看 | 久久久久久久久99精品 | 日韩一区二区不卡 | 日韩免费电影 | 99视频在线 | 免费视频一区 | 国产真实乱全部视频 | 日本视频中文字幕 | 国产精品一区二区三 | 国产精精品| 一级欧美在线 | 尹人成人 | 狠狠做深爱婷婷综合一区 | 国产精品一区一区三区 | 欧美一区不卡 | 欧美一级片在线 | 国产精品欧美一区二区三区 | 欧美日韩黄色一级片 | 国产午夜视频 | 亚洲一区二区久久 | av在线一区二区三区 | 这里精品| 日韩一区免费观看 | 欧美日韩一区二区在线观看 | 日韩三级电影免费观看 | 午夜剧| 亚洲综合色自拍一区 | 日本中文一区二区 | 欧美国产免费 | 91精品国产综合久久久蜜臀粉嫩 | 精品视频在线免费观看 | 最新免费av网站 | 久久久久久久久久久久福利 | 久久一区二区视频 | 久久伊人国产 | 午夜午夜精品一区二区三区文 | 国产成人精品免高潮在线观看 | 在线天堂新版最新版在线8 www.国产欧美 | 青青草免费在线视频 | 国产精品一二三区 |