SQL Server 2005基于消息的應(yīng)用程序介紹_Mssql數(shù)據(jù)庫教程
推薦:逐行掃描 為你講解幾個(gè)基本SQLPLUS命令本文章幫你充分認(rèn)識SQLPLUS命令。 remark:告訴SQLPLUS接下來的文字是注釋,不是命令。 set haedsep:標(biāo)題分隔符標(biāo)識一個(gè)告訴SQLPLUS將一個(gè)標(biāo)題分為兩行或更多行的字符。 ttitle:設(shè)置報(bào)
基于消息的應(yīng)用程序并不是一個(gè)新概念,一直以來,從頭編寫這樣的應(yīng)用程序都相當(dāng)困難。我將在一系列三篇文章中討論一個(gè)建立異步消息應(yīng)用程序的新平臺,本文為第一篇,我將在其中說明基于消息的應(yīng)用程序這一概念,以及一個(gè)建立包含在SQL Server 2005中的這些應(yīng)用程序的新型基礎(chǔ)程序。
基于消息的應(yīng)用程序介紹
處理消息的應(yīng)用程序是大體上會(huì)成功的應(yīng)用程序。實(shí)際上,大多數(shù)大型應(yīng)用程序都應(yīng)用了某種類型的消息處理。這種處理可能相當(dāng)簡單,例如,把一個(gè)文件放在網(wǎng)絡(luò)共享中,以便另一個(gè)應(yīng)用程序能夠處理這個(gè)文件;之后,你就可以檢查網(wǎng)絡(luò)共享,看文件是否得到處理。
雖然這不是一個(gè)非常復(fù)雜的消息應(yīng)用程序,但其背后的概念是一樣的:提交一條消息,應(yīng)用程序執(zhí)行其工作。然后,再檢查看是否收到確認(rèn)消息已得到處理的信息。這種處理方法擁有許多獨(dú)特的優(yōu)點(diǎn):
延期處理:有時(shí)候,要想在給定的時(shí)間處理某個(gè)任務(wù)的所有工作是不切實(shí)際的。許多時(shí)候,當(dāng)你的應(yīng)用程序能夠處理的任務(wù)達(dá)到一個(gè)瓶頸點(diǎn)時(shí),最好把剩下的任務(wù)交給另一個(gè)應(yīng)用程序進(jìn)行處理。
在線購買機(jī)票就屬于這種情況。當(dāng)你到一個(gè)網(wǎng)站購買機(jī)票時(shí),你輸入諸如出發(fā)城市、到達(dá)城市、旅行日期和隨行乘客人數(shù)之類的信息。在你輸入信用卡信息后,你將收到一封確認(rèn)電子郵件。在后臺,某種類型的消息已被提交給另一個(gè)執(zhí)行請求的服務(wù)進(jìn)行處理。如果不能滿足訂票請求,你收到的電子郵件就會(huì)說明這一點(diǎn)。
這種處理的好處在于它減輕了后臺數(shù)據(jù)庫系統(tǒng)堵塞的壓力。而且,如果要求顧客長時(shí)間等待網(wǎng)站的確認(rèn),大多數(shù)顧客都會(huì)感到非常不滿。另外,如果所有處理任務(wù)都在一個(gè)單功能事務(wù)中完成,就可能發(fā)生嚴(yán)重的死鎖情況,從而負(fù)面影響在網(wǎng)站上購買機(jī)票的顧客的購買體驗(yàn)。
分布式處理:一般來說,最好盡可能迅速地處理一項(xiàng)任務(wù)。但是,有時(shí)候很難確定有多少待處理的任務(wù)、完成這些任務(wù)需要耗用多少資源。下面我們看一個(gè)這種處理的實(shí)例。
超市中有許多結(jié)賬通道。通道的數(shù)量一般根據(jù)超市的資源來配備。有時(shí),例如星期六下午,結(jié)賬通道變得十分擁擠,顧客必須排隊(duì)等候。只要超市的資源沒有耗盡,超市就能分配更多收銀員給顧客結(jié)賬。這樣既可加快結(jié)賬速度,又不至于影響超市的總體運(yùn)作。
同樣的道理,消息應(yīng)用程序也以相似的方式運(yùn)作。如果你的應(yīng)用程序充滿了待處理的請求,通常應(yīng)該增加另外一條處理隊(duì)列來緩解系統(tǒng)的總體處理壓力。
微軟消息隊(duì)列
現(xiàn)在你可能已經(jīng)體會(huì)到基于消息的應(yīng)用程序帶來的價(jià)值,你也許想知道為什么你沒有經(jīng)常聽說這種應(yīng)用程序。主要的原因在于,開發(fā)這種應(yīng)用程序是一個(gè)非常困難的任務(wù)。如果你計(jì)劃編寫自己的基于消息的應(yīng)用程序,你要用大部分時(shí)間來開發(fā)處理消息的基礎(chǔ)架構(gòu)。
好消息是,你不再需要開發(fā)自己的消息基礎(chǔ)架構(gòu)。微軟消息隊(duì)列(MSMQ)提供一個(gè)開發(fā)這類應(yīng)用程序的框架。它使得應(yīng)用程序可以在不同種類的網(wǎng)絡(luò)間進(jìn)行通信,并且需要保證消息傳送(guaranteed message delivery)、路由和可配置安全。MSMQ應(yīng)用程序一般在以Visual Basic、C#或C 編寫的應(yīng)用程序中開發(fā),不過也可以用其它程序語言編寫。這些應(yīng)用程序在處理通常需要幾步完成的任務(wù)時(shí)表現(xiàn)優(yōu)異。這時(shí),一個(gè)任務(wù)的每個(gè)步驟需要邏輯到達(dá)任務(wù)的下一個(gè)步驟,如一個(gè)業(yè)務(wù)工作流應(yīng)用程序。
數(shù)據(jù)庫——不再只是用于存儲數(shù)據(jù)
過去20年來,我們對關(guān)系數(shù)據(jù)庫系統(tǒng)的依賴程度顯著增加。最初,存儲數(shù)據(jù)并對數(shù)據(jù)進(jìn)行某種處理,是建立商業(yè)關(guān)系數(shù)據(jù)庫系統(tǒng)的主要目的。隨著關(guān)系數(shù)據(jù)庫系統(tǒng)的發(fā)展,其功能和復(fù)雜性的變化,它的主要用途已由單一數(shù)據(jù)存儲轉(zhuǎn)變?yōu)楦又髁鞯纳虡I(yè)智能目的、更加復(fù)雜的ETL處理、數(shù)據(jù)報(bào)告、數(shù)據(jù)通知;在SQL Server 2005中,它甚至已具備編寫在數(shù)據(jù)庫引擎中執(zhí)行的.NET CLR語言代碼的能力。因此,完全可以肯定地說,數(shù)據(jù)庫引擎已不再僅用于數(shù)據(jù)存儲。
Service Broker
微軟認(rèn)為,允許你在數(shù)據(jù)庫內(nèi)建立基于消息的應(yīng)用程序,這樣才有意義。Service Broker是SQL Server 2005中新添加的基礎(chǔ)程序,主要用于在數(shù)據(jù)庫引擎內(nèi)建立基于消息的應(yīng)用程序。這些應(yīng)用程序在數(shù)據(jù)庫引擎內(nèi)使用新的TSQL結(jié)構(gòu)而開發(fā)。
Service Broker應(yīng)用程序以松散連接的應(yīng)用程序而開發(fā),它具有高度可擴(kuò)展性,并提供其它消息平臺所不具備的功能,如消息組協(xié)調(diào)和鎖定。這些應(yīng)用程序充分支持事務(wù),并能夠跨越數(shù)據(jù)庫實(shí)例和服務(wù)器。
分享:防范sql注入式攻擊js版本SQL注入式攻擊是利用是指利用設(shè)計(jì)上的漏洞,在目標(biāo)服務(wù)器上運(yùn)行Sql命令以及進(jìn)行其他方式的攻擊 。 動(dòng)態(tài)生成Sql命令時(shí)沒有對用戶輸入的數(shù)據(jù)進(jìn)行驗(yàn)證是Sql注入攻擊得逞的主要原因。 比如:
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 詳解數(shù)據(jù)庫導(dǎo)出成excel的sql語句
- 深入C++ string.find()函數(shù)的用法總結(jié)
- 解讀SQL的select語句執(zhí)行順序
- 用一條sql取得第10到第20條的記錄
- SQL Server中怎么得到自動(dòng)編號字段解析
- 解析Microsoft SQL Server數(shù)據(jù)庫日志截?cái)?/a>
- sqlsever為標(biāo)識列指定顯式值
- 基于SQL Server中如何比較兩個(gè)表的各組數(shù)據(jù) 圖解說明
- 逐行掃描 為你講解幾個(gè)基本SQLPLUS命令
- sql server多行數(shù)據(jù)拼接的實(shí)例方法
猜你也喜歡看這些
- SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
- 淺談SQLite時(shí)間函數(shù)的使用說明與總結(jié)分析
- 解析mysql數(shù)據(jù)庫還原錯(cuò)誤:(mysql Error Code: 1005 errno 121)
- 基于MYSQL中優(yōu)化的一些方法
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- CentOS6.4系統(tǒng)中Mysql數(shù)據(jù)庫卸載、安裝與配置
- 網(wǎng)站模板:利用Shell腳本實(shí)現(xiàn)遠(yuǎn)程MySQL自動(dòng)查詢
- @@ROWCOUNT全局變量
- MySQL 生成隨機(jī)密碼
- DBA應(yīng)該知道的一些關(guān)于SQL Server跟蹤標(biāo)記的使用
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-SQL Server 2005基于消息的應(yīng)用程序介紹
。